Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основная книга по С++й.doc
Скачиваний:
16
Добавлен:
28.10.2018
Размер:
2.07 Mб
Скачать

Int main()

{

FILE *file;

char* file_name = "file.txt";

char s[128];

int i, n;

int fnumber, fsum=0;

signed sim;

printf ("Сколько чисел будем вводить : ");

scanf ("%d", &n);

file = fopen( file_name, "w" ); // Открываем файл для записи

for(i=1;i<=n;i++)

{

printf ("Введите число %d : ", i);

scanf ("%d", &fnumber); // Читаем с клавиатуры число

fputs ((char *) &fnumber, file); // Записываем число в файл

}

fclose (file); // Закрыли файл

file = fopen( file_name, "r" ); // Открываем файл для чтения

printf("\n ");

puts ("Читаем из файла");

while ((fnumber = fgetc(file))!= EOF) // Пока не конец файла читаем число

//из файла

{

printf ("%x\t",fnumber); // Выводим его на экран

fsum = fsum + fnumber; // Считаем сумму чисел

}

fclose (file); // Закрыли файл

file = fopen( file_name, "a" ); // Открываем файл для дополнения

fputs("Сумма значений равна \n", file); // Выводим в конец файла

fprintf(file, "%s\n", &fsum);

printf("\n ");

fclose (file); // Закрыли файл

puts("Готово");

system("pause");

}

На экране будет отображен следующий диалог:

Сколько чисел будем вводить : 5

Введите число 1 : 5

Введите число 2 : 4

Введите число 3 : 3

Введите число 4 : 2

Введите число 5 : 1

Читаем из файла

5 4 3 2 1

Готово!

При этом файл a.txt будет сожержать следующие строки:

5

4

3

2

1

Сумма значений равна

15

В зависимости от компилятора символы, записанные в файл могут не отображаться в привычной числовой форме.

Тема 10. Приемы программирования. Примеры алгоритмов Алгоритмы сортировки

Задача сортировки ставится следующим способом. Пусть имеется массив целых или вещественных чисел a1,...,an. Требуется переставить элементы этого массива так, чтобы после перестановки они были упорядочены по неубыванию: а1a2 ≤ ... ≤an или невозрастанию: а1a2 ≥ ... ≥an. Если числа попарно различны, то говорят об упорядочении по возрастанию или убыванию. В дальнейшем будем рассматривать задачу упорядочения по неубыванию, т.к. остальные задачи решаются аналогично. Существует множество алгоритмов сортировки, каждый из которых имеет свои характеристики по скорости. Рассмотрим самые простые алгоритмы, в порядке увеличения скорости их работы.

Сортировка обменами (пузырьком)

Этот алгоритм считается самым простым и самым медленным. Шаг сортировки состоит в проходе снизу вверх по массиву. При этом просматриваются пары соседних элементов. Если элементы некоторой пары находятся в неправильном порядке, то они меняются местами.

После первого прохода по массиву "вверху" (в начале массива) оказывается самый "легкий" (минимальный) элемент – отсюда аналогия с пузырьком, который всплывает (рис.37). Следующий проход делается до второго сверху элемента, таким образом, второй по величине элемент поднимается на правильную позицию и так далее.

Исходный массив

0 15 8 10 19 20 6 16 5 19

№ шага

1: 0 15 8 10 19 20 6 5 16 19

1: 0 15 8 10 19 20 5 6 16 19

1: 0 15 8 10 19 5 20 6 16 19

1: 0 15 8 10 5 19 20 6 16 19

1: 0 15 8 5 10 19 20 6 16 19

1: 0 15 5 8 10 19 20 6 16 19

1: 0 5 15 8 10 19 20 6 16 19

2: 0 5 15 8 10 19 6 20 16 19

2: 0 5 15 8 10 6 19 20 16 19

2: 0 5 15 8 6 10 19 20 16 19

2: 0 5 15 6 8 10 19 20 16 19

2: 0 5 6 15 8 10 19 20 16 19

3: 0 5 6 15 8 10 19 16 20 19

3: 0 5 6 15 8 10 16 19 20 19

3: 0 5 6 8 15 10 16 19 20 19

4: 0 5 6 8 15 10 16 19 19 20

4: 0 5 6 8 10 15 16 19 19 20

Результат

0 5 6 8 10 15 16 19 19 20

Рис. 37. Сортировка массива методом «пузырька»

Проходы делаются по все уменьшающейся нижней части массива до тех пор, пока в ней не останется только один элемент. На этом сортировка заканчивается, так как последовательность упорядочена по возрастанию.

//процедура сортировки обменами (пузырьком)