|
0 / 0 / 0
Регистрация: 24.11.2015
Сообщений: 20
|
|
Работа с файловыми потоками01.12.2015, 12:42. Показов 848. Ответов 1
Метки нет (Все метки)
Получилось по заданию примерно как то так:Постановка задачи
Входные данные: текстовый файл, содержащий значения средних температур за день для конкретного месяца (например, файл температур за октябрь должен содержать 31 значение). Выходные данные: текстовый файл, содержащий результаты обработки: среднюю температуру за месяц, максимальную и минимальную температуру за месяц. Анализ задачи: 1. Прочитать из исходного фала значения температур в массив. 2. Найти среднюю температуру за месяц. 3. Найти максимальную температуру 4. Найти минимальную температуру 5. Записать в файл значения, вычисленные в пунктах 2, 3 и 4, в отформатированном виде. Каждый этап решения задачи реализовать в виде функции. #include <iostream> #include <fstream> #include <iomanip> using std::fstream; using std::cout; using std::endl; /* run this program using the console pauser or add your own getch, system("pause") or input loop */ int count_days = 0; //may be 30 31 28 29 int t[32]; //31 day + 1 reserved for EOF #define INPUT_FILE_NAME "./input.txt" #define OUTPUT_FILE_NAME "./output.txt" //======================================== ============= void get_min(int *mint) { int i; //temporary variable *mint = t[0]; //start value for(i=1;i<count_days;i++){ if(*mint > t[i]) *mint = t[i]; } } //======================================== ============= void get_max(int *maxt) { int i; //temporary variable *maxt = t[0]; //start value for(i=1;i<count_days;i++){ if(*maxt < t[i]) *maxt = t[i]; } } //======================================== ============= void get_median(int *median) { int i; //temporary variable float m = 0.0; for(i=0;i<count_days;i++){ //sum for median calculations m += (float)t[i]; } m = m / count_days; *median = (int)m; } //======================================== ============= int open_and_read_values(void) { fstream inp; //input file stream //open file and check success inp.open(INPUT_FILE_NAME, fstream::in); if(!inp.is_open()) { cout<< "Cant open input file!\n"; return -1; } //read array of numbers from file //NUMBER\r\n.. while(1) { //check for no more than 31 days in file, ignore remaining if(count_days == 32 ) { cout << "Warning! more than 31 values in file - ignored!\n"; break; } inp >> t[count_days]; if(inp.eof() || inp.fail() || inp.bad()) break; //if error or end of file - exit cycle count_days++; } cout << "readed " << count_days << " values from file\n"; //close input inp.close(); //check has any days if(count_days==0) { cout << "No values in input file!\n"; return -1; } return 0; } //======================================== ============= int open_and_write_values(int m, int ma, int mi) { fstream outp; //input file stream //open file and check success outp.open(OUTPUT_FILE_NAME, fstream::out | fstream::trunc); //remove all file contens if(!outp.is_open()) { cout<< "Cant open output file!\n"; return -1; } //out median outp << std::showpos; //+ in positive deciman number outp << std::setprecision(5); //5 digits after comma outp << "Median value: "<< m << endl; //out max outp << "Max value: "<< ma << endl; //out min outp << "Min value: "<< mi << endl; //close output outp.close(); return 0; } //======================================== ============= int main(int argc, char** argv) { int median; int max_temp; int min_temp; cout << "BEGIN\n"; //1 if(open_and_read_values()) return -1; //2 get_median(&median); //3 get_max(&max_temp); //4 get_min(&min_temp); //5 if(open_and_write_values(median, max_temp, min_temp)) return -1; cout << "OK\n"; return 0; } Но одна проблема когда компилируешь ошибок нет.А когда выполняешь пишет так:BEGIN.Cant open input file!
0
|
|
| 01.12.2015, 12:42 | |
|
Ответы с готовыми решениями:
1
Работа с файловыми потоками Работа с файловыми потоками в С++.
|
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 01.12.2015, 13:25 | |
|
Ну путь значит не верный. Укажи полный.
0
|
|
| 01.12.2015, 13:25 | |
|
Помогаю со студенческими работами здесь
2
Работа с файловыми потоками. Выполнить проверку в готовом коде на верхний регистр Работа с потоками Работа с потоками Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|