0 / 0 / 0
Регистрация: 24.11.2015
Сообщений: 20
|
|
1 | |
Работа с файловыми потоками01.12.2015, 12:42. Показов 710. Ответов 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
Работа с файловыми потоками Работа с файловыми потоками в С++.
|
7638 / 6446 / 2940
Регистрация: 14.04.2014
Сообщений: 28,103
|
|
01.12.2015, 13:25 | 2 |
Ну путь значит не верный. Укажи полный.
0
|
01.12.2015, 13:25 | |
01.12.2015, 13:25 | |
Помогаю со студенческими работами здесь
2
Работа с файловыми потоками. Выполнить проверку в готовом коде на верхний регистр Работа с потоками Работа с потоками Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |