Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.05.2016, 01:53   #1
Aliksan
Новичок
Джуниор
 
Регистрация: 18.05.2016
Сообщений: 3
По умолчанию Сортировка пузырьком. Где ошибка?

Добрый день. Есть код, там считываются числа из файла, записываются в массив, сортируются по возрастанию и убыванию и это выводится на экран. В порядке убывания работает, а вот наоборот - нет.

Код:
#include <stdio.h>
#include <stdbool.h>
#define MAX_SIZE 100
#define TRUE 1
#define FALSE 0

void descendingBubble(int a[], int size1) {
	int x, m; 
	int temp1 = 0;
	bool boo;

	for (m = 0; m < size1 - 1; m++) {
		boo = FALSE;
			for (x = 0; x < size1 - m - 1; x++) {
				if (a[x] > a[x+1]) { 
					temp1 = a[x];
					a[x] = a[x+1];
					a[x+1] = temp1;
					boo = TRUE;
				}
			}
		if (boo != TRUE) break;
		printf("%d ", a[x]);
	}
}

void ascendingBubble(int b[], int size2) {
	int y, n;
	int temp2 = 0;
	bool bo;
	
	for(n = 0; n < size2; n++) {
		bo = FALSE;
			for (y = 0; y < size2 - n; y++) {
				if	(b[y] < b[y+1]) { 
					temp2 = b[y];
					b[y] = b[y+1];
					b[y+1] = temp2;
					bo = TRUE;
				}
			}
		if (bo != TRUE) break;
		if (b[y] != 0) printf("%d ", b[y]);
	}
}


int main (void) {
	int array[MAX_SIZE] = {0};
	int array2[MAX_SIZE] = {0};
	FILE *fp1;
	int j;
	int k = 0;
	int i = 0;
	int temp = 0;
	int temp0 = 0;
 
	if ((fp1 = fopen("input.txt", "r")) == NULL) {
		printf("input.txt file not found.\n");
	return 1;
	}
	else {
		while((fscanf(fp1, "%d", &array[i])) != EOF) {
			i++;
		}
	}

fclose(fp1);

	if ((fp1 = fopen("input.txt", "r")) == NULL) {
		printf("input.txt file not found.\n");
	return 1;
	}
	else {
		while((fscanf(fp1, "%d", &array2[k])) != EOF) {
			k++;
		}
	}


fclose(fp1);

	for(k = 0; k < MAX_SIZE; k++) {
			temp0++;
			temp++;
	}

printf("Descending:");
printf("\n");
descendingBubble(array, temp0);
printf("\n");
printf("Ascending:");
printf("\n");
ascendingBubble(array2, temp);
printf("\n");
return 0;
}
Aliksan вне форума Ответить с цитированием
Старый 18.05.2016, 02:19   #2
Aliksan
Новичок
Джуниор
 
Регистрация: 18.05.2016
Сообщений: 3
По умолчанию

Немного конкретизирую вопрос.
Упрощенная программа ниже работает. Она считывает числа (не цифры!) из файла, помещяет их в массив, а затем после процедуры сортирования выводит числа в убывающем порядке на экран. Когда я создаю процедуру, практически аналогичную убывающей (т.е. создаю возрастающую), то начинается космос. Мне необходимо, чтоб программа выводила числа сразу и по убыванию, и по возрастанию.

Код:
#include <stdio.h>
#include <stdbool.h>
#define MAX_SIZE 100
#define TRUE 1
#define FALSE 0

void descendingBubble(int a[], int size1) {
	int x, m; 
	int temp1 = 0;
	bool boo;

	for (m = 0; m < size1 - 1; m++) {
		boo = FALSE;
			for (x = 0; x < size1 - m - 1; x++) {
				if (a[x] > a[x+1]) { 
					temp1 = a[x];
					a[x] = a[x+1];
					a[x+1] = temp1;
					boo = TRUE;
				}
			}
		if (boo != TRUE) break;
		printf("%d ", a[x]);
	}
}


int main (void) {
	int array[MAX_SIZE] = {0};
	FILE *fp1;
	int j;
	int k = 0;
	int i = 0;
	int temp = 0;
 
	if ((fp1 = fopen("input.txt", "r")) == NULL) {
		printf("input.txt file not found.\n");
	return 1;
	}
	else {
		while((fscanf(fp1, "%d", &array[i])) != EOF) {
			i++;
		}
	}

fclose(fp1);


	for(k = 0; k < MAX_SIZE; k++) {
			temp++;
	}

printf("Descending:");
printf("\n");
descendingBubble(array, temp);
printf("\n");

return 0;
}

Последний раз редактировалось Aliksan; 18.05.2016 в 02:21. Причина: уточнение
Aliksan вне форума Ответить с цитированием
Старый 18.05.2016, 02:37   #3
Aliksan
Новичок
Джуниор
 
Регистрация: 18.05.2016
Сообщений: 3
По умолчанию

Проблема ясна, можно закрыть тему.
#define MAX_SIZE 9
Aliksan вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка структуры (С) где ошибка? Sterben Помощь студентам 4 04.05.2015 22:24
сортировка пузырьком onezze Паскаль, Turbo Pascal, PascalABC.NET 0 09.04.2012 16:18
Быстрая сортировка. Где-то ошибка jeeeezy Помощь студентам 0 10.12.2011 00:57