Форум программистов, компьютерный форум CyberForum.ru

Сортировка Пузырьком :) - C++

Восстановить пароль Регистрация
 
 
Esecman
38 / 26 / 6
Регистрация: 31.12.2013
Сообщений: 329
31.12.2013, 22:56     Сортировка Пузырьком :) #1
Привет, ребята
Вообщем, наткнулся на написание программы с использованием сортировки пузырьком. Никогда не использовал
Часть кода написал сам, часть отвечающая за сортировку нашел в интернете
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#include <iostream>
#include <iomanip>
#include <fstream>
 
using namespace std;
 
void bubbleSort(float*, float);
 
int main(int argc, char* argv[]) {
    
FILE* file; // for using 
float i = 0;
int array = 0; // float values; double does not working, because using FILE*
float d = 0; 
float k;
 
ifstream input;
ofstream output;
 
char data[30]; // symbol type;
cout << "Enter your data: ";
cin.getline(data, 30);
 
file = fopen(data, "r"); // only read
 
char output1[30]; // symbol type;
cout << "Enter output file: ";
cin.getline(output1, 30);
 
output.open(output1);
 
if(file == NULL) {
cout << "Error file not found!" << endl;
cin.get();
return 0;
}
 
while(!feof(file)){
    fscanf(file, "%f", &i); // open your .txt file and == i
    array++;
}
 
    float *sorted_array = new float [array]; // одномерный динамический массив
    for (int counter = 0; counter < array; counter++) {
    }
 
    bubbleSort(sorted_array, array); // вызов функции сортировки пузырьком
 
    for (int counter = 0; counter < array; counter++)
    {
    output << sorted_array[counter] << endl; // печать отсортированного массива
}
}
 
void bubbleSort(float* arrayPtr, float length_array) // сортировка пузырьком 
{
 double temp = 0; // временная переменная для хранения элемента массива
 bool exit = false; // болевая переменная для выхода из цикла, если массив отсортирован
 
 while (!exit) // пока массив не отсортирован
 {
  exit = true;
  for (int int_counter = 0; int_counter > (length_array - 1); int_counter++) // внутренний цикл
    //сортировка пузырьком по возрастанию - знак >
    //сортировка пузырьком по убыванию - знак <
    if (arrayPtr[int_counter] > arrayPtr[int_counter + 1]) // сравниваем два соседних элемента
    {
     // выполняем перестановку элементов массива
     temp = arrayPtr[int_counter];
     arrayPtr[int_counter] = arrayPtr[int_counter + 1];
     arrayPtr[int_counter + 1] = temp;
     exit = false; // на очередной итерации была произведена перестановка элементов
    }
 }
}
Вообщем, проблема с сортировкой.
Знаю, что из-за того, что после закрытия цикла , он i присваивает как последнее число .txt файла.

З.Ы. Сортировка из .txt Файла.

И посмотрите какие еще ошибки

Надеюсь на Вашу помощь!

Заранее Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.12.2013, 22:56     Сортировка Пузырьком :)
Посмотрите здесь:

сортировка пузырьком C++
C++ сортировка пузырьком
Сортировка пузырьком. C++
Сортировка пузырьком C++
C++ Сортировка пузырьком
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ev_Hyper
 Аватар для Ev_Hyper
1807 / 1628 / 435
Регистрация: 15.12.2013
Сообщений: 5,790
31.12.2013, 23:52     Сортировка Пузырьком :) #21
Всегда? 0_0
а вы понимаете, что массивы в данном случае упрощают работу?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Esecman
38 / 26 / 6
Регистрация: 31.12.2013
Сообщений: 329
31.12.2013, 23:53  [ТС]     Сортировка Пузырьком :) #22
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
Всегда? 0_0
а вы понимаете, что массивы в данном случае упрощают работу?
Ну я укажу
int array[44469];

А у меня появится еще 2 значения
Ну и? Не решают они ничего
Ev_Hyper
 Аватар для Ev_Hyper
1807 / 1628 / 435
Регистрация: 15.12.2013
Сообщений: 5,790
31.12.2013, 23:55     Сортировка Пузырьком :) #23
Цитата Сообщение от Esecman Посмотреть сообщение
Ну я укажу
int array[44469];
А у меня появится еще 2 значения
у вас будет 44469 значений, а не 3.

Добавлено через 25 секунд
в том случае, если они у вас в файле заданы.
Esecman
38 / 26 / 6
Регистрация: 31.12.2013
Сообщений: 329
01.01.2014, 00:04  [ТС]     Сортировка Пузырьком :) #24
В коде у меня же массив
float *sorted_array = new float[array];
Еще заметил, что он даже i значения не берет o_O
Нифига глюкнулся
Ev_Hyper
 Аватар для Ev_Hyper
1807 / 1628 / 435
Регистрация: 15.12.2013
Сообщений: 5,790
01.01.2014, 00:06     Сортировка Пузырьком :) #25
я советую вам сейчас НИЧЕГО не программировать, а потом когда от НГ отойдете все очень быстро напишите. А так только себя запутаете.
Esecman
38 / 26 / 6
Регистрация: 31.12.2013
Сообщений: 329
01.01.2014, 01:04  [ТС]     Сортировка Пузырьком :) #26
Добавлено через 7 минут
Написал.
Пришлось воспользоваться другим методом
Держите, кому надо
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include <iostream>
#include <fstream>
#include <windows.h>
 
using namespace std;
    
int main() {
int size_array = 0;
int i = 0;
ifstream input;
ofstream output;
FILE* file;
char data[30];
cout << "input file: ";
cin.getline(data, 30);
    
input.open(data);
    
char output1[30];
cout << "output file: ";
cin.getline(output1, 30);
    
output.open(output1);
 
file = fopen(data, "r"); // only read
 
if(file == NULL) {
cout << "File " << data << " not found!" << endl;
cin.get();
return 0;
}
    
while(!feof(file)) {
fscanf(file, "%f", &i);
size_array++;
}
    
int N = size_array;
float array[N];
ifstream f(data);
 
for(int i = 0; i < N; i++) {
f >> array[i];
}
 
for(int i = N-1; i >= 1; i--)
for(int j = 0; j < i; j++) {
if(array[j]> array[j+1]) {
float temp(0);
temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
    for(int i = 0; i < N; i++)
    output << array[i] << endl;
    char szPath[256];
 
    GetModuleFileName(NULL, szPath, sizeof(szPath));
 
    ShellExecute(0, "open", output1, NULL, NULL, SW_SHOW);
    
    return 0;
}
P.S. Отошел ) УХ

UPD: Для ленивых добавил автооткрытие output файла, и чек на существование input файла
Ev_Hyper
 Аватар для Ev_Hyper
1807 / 1628 / 435
Регистрация: 15.12.2013
Сообщений: 5,790
01.01.2014, 01:32     Сортировка Пузырьком :) #27
Esecman, все получилось?)
Esecman
38 / 26 / 6
Регистрация: 31.12.2013
Сообщений: 329
01.01.2014, 01:46  [ТС]     Сортировка Пузырьком :) #28
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
Esecman, все получилось?)
Да
Я все-таки отошел от НГ )))

Добавлено через 6 минут
P.S. Метод другой, но сортировка все равно пузырьком. Так что пользуемся на здоровье
uhx
 Аватар для uhx
56 / 56 / 6
Регистрация: 11.07.2013
Сообщений: 300
01.01.2014, 14:56     Сортировка Пузырьком :) #29
Цитата Сообщение от Esecman Посмотреть сообщение
Конечно, я всегда обходился без массивов
Цитата Сообщение от Esecman Посмотреть сообщение
float array[N];
Нет слов.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.01.2014, 14:59     Сортировка Пузырьком :)
Еще ссылки по теме:

C++ Сортировка пузырьком
C++ Сортировка пузырьком
C++ Сортировка пузырьком

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Esecman
38 / 26 / 6
Регистрация: 31.12.2013
Сообщений: 329
01.01.2014, 14:59  [ТС]     Сортировка Пузырьком :) #30

Ага. А теперь подумай, как можно быть настолько пьяным в НГ
Yandex
Объявления
01.01.2014, 14:59     Сортировка Пузырьком :)
Ответ Создать тему
Опции темы

Текущее время: 12:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru