Записать в файл 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.
- Программа завершается.