Из файла считать числа и проверить, не равны ли они сумме двух соседних - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Помогаю 1 товарищу сделать задачу. Надо из файла1 считывать числа, проверять не равны ли они сумме двух соседних, если равны, не записывать их в другой файл2. Соотвественно я сделал просто - считал в массив, проверил, записал. НО его препод сказал что нафиг это хрень и динамический массив здесь не нужен, и мол нужно считывать по 3 элемента и проверять, стал переписывать и столкнулся с следующими вопросами: я считываю по 3 элемента, допустим из файла со значениями 1 2 3 4 5 6, соотвественно я получу: 1 2 3 4 5 6 но мне нужно считывать 1 2 3 2 3 4 4 5 6 нашёл что это делается через fseek, но при этой функции у меня while на foef не реагирует т.е. бесконечный цЫкл И ещё вопрос, я дойду до 4 5 6, не будет ли дальше читаться 5 6 "выход за пределы памяти" ? ЫЫЫ глупость спросил там же будет eof код:
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    int x,a,b,c;
    FILE *file1;
    FILE *file2;
    const char* file_name1 = "file1.txt";
    const char* file_name2 = "file2.txt";
    file1 = fopen( file_name1, "r");
    file2 = fopen( file_name2, "w");
 
// проверка на ошибки
    if (!file1 || !file2)
    {
    puts ("Error. File not found\n");
    exit(1);
    }
    int i=1; 
    while(!feof(file1))
    {
        i++;  //счетчик для отслеживания положенрия указателя в файле, но увы....
        fscanf(file1,"%d%d%d",&a ,&b ,&c);
       // fseek(file1, , ); //здесь я не очень представляю что подставлять
        printf("%d %d %d\n",a, b ,c);
    //дальше я тут считаю всякие if (b==a+c)
    }
 
    fclose(file2);
    fclose(file1);
    return 0;
}

Решение задачи: «Из файла считать числа и проверить, не равны ли они сумме двух соседних»

textual
Листинг программы
int a,b,c;
fscanf(file1, "%d%d", &a, &b);
while( !feof(file1) ){
  fscanf(file1, "%d", &c); 
  if (b==a+c) {...}
  a=b;  b=c;
}

Объяснение кода листинга программы

  1. Объявлены три переменные типа int: a, b, c.
  2. С помощью функции fscanf считываются два числа из файла и сохраняются в переменных a и b.
  3. Запускается цикл while, который будет выполняться до тех пор, пока не достигнет конца файла (feof).
  4. В каждой итерации цикла считывается следующее число и сохраняется в переменной c.
  5. С помощью условного оператора if проверяется, равно ли считанное число сумме двух предыдущих.
  6. Если условие if выполняется, то выполняется некоторое действие (которое в коде не указано).
  7. Значения переменных a и b обновляются значениями переменных b и c соответственно.
  8. Цикл while продолжается до тех пор, пока не достигнет конца файла.

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


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

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

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