Записать в файл g наибольшее значение первых пяти компонент файла f - C (СИ)
Формулировка задачи:
Дан файл f, компоненты которого являются целыми числами. Записать в файл g наибольшее значение первых пяти компонент файла f, затем - следующих пяти компонент и т.д. Если в последней группе окажется менее пяти компонент, то последняя компонента файла g должна быть равна наибольшей из компонент файла f, образующих последнюю (неполную) группу.
Чтение до конца файла f как произвести? (вторую, третью.... пятерку не считает)
#include<stdio.h> #include<iostream.h> int b,c,q,k,m,f,g; int main() {FILE *f=fopen("f.txt","r"); FILE *g=fopen("g.txt","a"); { fscanf(f,"%d,%d,%d,%d,%d",&b,&c,&q,&k,&m);} if((b>c)&&(b>q)&&(b>k)&&(b>m)) {fprintf(g,"%d","b");} if((c>q)&&(c>k)&&(c>m)) {fprintf(g,"%d","c");} if((q>k)&&(q>m)) {fprintf(g,"%d","q");} if(k>m) {fprintf(g,"%d","k");} else {fprintf(g,"%d","m");} fclose(f);fclose(g); return 0;}
Решение задачи: «Записать в файл g наибольшее значение первых пяти компонент файла f»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #define N 5 int main() { FILE *fin, *fout; int max, i, n; fin = fopen("f.txt", "r"); fout = fopen("g.txt", "w"); if(!fin || !fout){ fputs("Error opening file!", stderr); exit(1); } for(i = 1; 1; i++){ if(1 != fscanf(fin, "%d", &n)){ fprintf(fout, "%d ", max); break; } if(i % N == 1) max = n; else{ if(max < n) max = n; if(!(i % N)) fprintf(fout, "%d ", max); } } fclose(fin); fclose(fout); return 0; }
Объяснение кода листинга программы
- Объявляются переменные: — fin - указатель на файл для чтения — fout - указатель на файл для записи — max - переменная для хранения максимального значения — i - счётчик для чтения компонент — n - переменная для хранения текущей компоненты
- Открываются файлы f.txt и g.txt. Если открытие не удалось, выводится сообщение об ошибке и программа завершается.
- Запускается цикл, который читает первые пять компонент из файла f.txt.
- Если первая компонента не прочиталась, выводится сообщение об ошибке и в файл g.txt записывается значение переменной max.
- Если текущая компонента — первая, то значение переменной max обновляется.
- Если текущая компонента — не первая, то проверяется, является ли она максимумом. Если да, то значение переменной max обновляется.
- Если текущая компонента — пятая, то в файл g.txt записывается значение переменной max.
- Закрываются файлы f.txt и g.txt.
- Программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д