В файл out.txt записать те числа, которые больше своих соседей - C (СИ)
Формулировка задачи:
Дан ряд чисел в файле in.txt : 0 2 -3 4 1 8 7 10
Нужно в файл out.txt записать те числа,которые больше своих соседей.(здесь это 2,8,10)
Подскажите,каким образом можно сделать сравнение.
Решение задачи: «В файл out.txt записать те числа, которые больше своих соседей»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
double a[50];
int i=0,j=0;
char *fname="in.txt",*fnameout="out.txt",t[5],*stopstring;
FILE *r;
r = fopen(fname, "r");
printf("\nRead file: %s",fname);
printf("\n");
while ((fgets(t,5,r))!=NULL) {
a[j]=strtod(t,&stopstring);
printf(" %.0f",a[j]);
j++;
}
fclose(r);
printf("\n\nEti elementy bol`she svoix sosedey:\n\n");
FILE *w;
w = fopen(fnameout, "a");
for(i=0; i<j; i++) {
if(a[i] > a[i+1] && i==0) {
printf("\n%.0f",a[i]);
fprintf(w, "\n%.0f", a[i]);
}
else if(a[i] > a[i-1] && i==7) {
printf("\n%.0f",a[i]);
fprintf(w, "\n%.0f", a[i]);
}
else if(a[i] > a[i+1] && a[i] > a[i-1]) {
printf("\n%.0f",a[i]);
fprintf(w, "\n%.0f", a[i]);
}
}
printf("\n");
fclose(w);
return 0;
}
Объяснение кода листинга программы
В этом коде используется язык программирования C. Программа считывает числа из файла in.txt и записывает в файл out.txt те числа, которые больше своих соседей. Вот список действий, которые происходят в коде:
- В начале программы объявляются переменные:
- double a[50] - массив для хранения считанных чисел;
- int i=0,j=0 - переменные для контроля числа и индекса;
- char fname=
in.txt,fnameout=out.txt,t[5],*stopstring; - переменные для работы с файлами и строками.
- Затем открывается файл in.txt для чтения:
- FILE *r = fopen(fname,
r);
- FILE *r = fopen(fname,
- Далее происходит чтение чисел из файла и их запись в массив a:
- while ((fgets(t,5,r))!=NULL) {
- a[j]=strtod(t,&stopstring);
- printf(
%.0f,a[j]); - j++; *}
- После чтения чисел файл закрывается:
- fclose(r);
- Далее открывается файл out.txt для записи:
- FILE *w = fopen(fnameout,
a);
- FILE *w = fopen(fnameout,
- Затем происходит проверка и запись чисел в файл out.txt:
- for(i=0; i<j; i++) {
- if(a[i] > a[i+1] && i==0) {
- printf(
\n%.0f,a[i]); - fprintf(w,
\n%.0f, a[i]); *} - else if(a[i] > a[i-1] && i==7) {
- printf(
\n%.0f,a[i]); - fprintf(w,
\n%.0f, a[i]); *} - else if(a[i] > a[i+1] && a[i] > a[i-1]) {
- printf(
\n%.0f,a[i]); - fprintf(w,
\n%.0f, a[i]); *}
- После записи чисел файл out.txt закрывается:
- fclose(w);
- В конце программы возвращается 0, что означает успешное выполнение:
- return 0;