В файл 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 те числа, которые больше своих соседей. Вот список действий, которые происходят в коде:

  1. В начале программы объявляются переменные:
    • double a[50] - массив для хранения считанных чисел;
    • int i=0,j=0 - переменные для контроля числа и индекса;
    • char fname=in.txt,fnameout=out.txt,t[5],*stopstring; - переменные для работы с файлами и строками.
  2. Затем открывается файл in.txt для чтения:
    • FILE *r = fopen(fname, r);
  3. Далее происходит чтение чисел из файла и их запись в массив a:
    • while ((fgets(t,5,r))!=NULL) {
    • a[j]=strtod(t,&stopstring);
    • printf(%.0f,a[j]);
    • j++; *}
  4. После чтения чисел файл закрывается:
    • fclose(r);
  5. Далее открывается файл out.txt для записи:
    • FILE *w = fopen(fnameout, a);
  6. Затем происходит проверка и запись чисел в файл 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]); *}
  7. После записи чисел файл out.txt закрывается:
    • fclose(w);
  8. В конце программы возвращается 0, что означает успешное выполнение:
    • return 0;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.846 из 5
Похожие ответы