В файл 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;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д