Помогите решит задачу, оплата за решение имеется, помогите!
Дан файл f, компоненты которого являются целыми числами. Число компонент файла делится на 100. Записать в файл g наибольшее значение первых ста компонент файла f, затем— следующих ста компонент и т. д.
Ответ
0 (0 оценок)
0
ovsyannikovstipan 7 месяцев назад
Светило науки - 9 ответов - 0 раз оказано помощи

Ответ:

 

Условие задачи:

 

Компоненты файла f – вещественные числа.  

Записать в файл g наибольшее значение первых десяти компонент, затем следующих десяти и т.д.

 

Алгоритм:

 

1. Записываем вещественные числа в файл f.txt.

2. Открываем файл f.txt для чтения.

3. Задаем начальное значение DBL_MIN для поиска первого максимума.

4. Инициализируем счетчик k нулем (для подсчета всех чисел в файле f.txt).

5. Пробегаем циклом по файлу (c помощью потока >>).

6. Подсчитываем количество чисел с помощью счетчика k.

7. Ищем первый максимум и выводим его в файл g.txt при условии, что k % 10 == 0 (то есть, первые десять чиел найдены).

8. Снова задаем начальное значение DBL_MIN для поиска следующего максимума (если условие k % 10 == 0 снова выполнено, выводим максимум).

9. Повторяем проверку k % 10 == 0 пока числа в файле не закончатся (при этом, выводим максимум для каждого набора из десяти).

10. Закрываем оба файла.  

 

Решение:

*/

 

#include <iostream> //Заголовочный файл с классами, функциями и переменными для организации ввода-вывода

#include <fstream> //Заголовочный файл для использования части библиотеки iostream, связанную с файловым вводом/выводом

#include <float.h> //Заголовочный файл для задания наибольшего минимального значения типа double (константа DBL_MIN)  

 

   using namespace std; //Пространство имен

 

int main() {

   ifstream fin("f.txt"); //Создаем объект типа ifstream (открываем текстовый файл f.txt для чтения)

   ofstream fout("g.txt"); //Создаем объект типа ofstream (открываем текстовый файл g.txt для записи)

   double n; //Объявляем переменную вещественного типа (хранит числа в файле f.txt при считывании)

   double max; //Объявляем еще одну переменную вещественного типа (хранит искомые максимумы)

   int k; //Объявляем переменную целого типа (счетчик чисел из файла f.txt)

   max = DBL_MIN; //Инициализируем начальное значение для максимума

   k = 0; //Инициализируем счетчик нулем

   while (fin >> n) { //Пробегаем по файлу (перебираем числа)

       k++; //Увеличиваем счетчик на единицу для каждого встретившегося числа

       if (n > max) {

           max = n; //Находим максимум среди первых десяти чисел

       }

       if (k % 10 == 0) { //Условие проверки для каждых десяти чисел из файла

           fout << max << "n"; //Выводим найденные максимумы в файл g.txt (для каждого набора из десяти чисел)

           max = DBL_MIN; //Снова инициализируем значения max (для поиска следующего максимума)

       }

   }

   fin.close(); //Закрываем файл f.txt (необходимо для правильной работы с файлом)

   fout.close(); //Закрываем файл g.txt (необходимо для правильной работы с файлом)

   system("pause"); //Функция задержки экрана консоли

   return 0; //Функция main() возвратила ноль при успешном выполнении программы (то есть, в коде выше ошибок не было)

}

Объяснение: