Из файла считать числа и проверить, не равны ли они сумме двух соседних - 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; }
Объяснение кода листинга программы
- Объявлены три переменные типа int: a, b, c.
- С помощью функции fscanf считываются два числа из файла и сохраняются в переменных a и b.
- Запускается цикл while, который будет выполняться до тех пор, пока не достигнет конца файла (feof).
- В каждой итерации цикла считывается следующее число и сохраняется в переменной c.
- С помощью условного оператора if проверяется, равно ли считанное число сумме двух предыдущих.
- Если условие if выполняется, то выполняется некоторое действие (которое в коде не указано).
- Значения переменных a и b обновляются значениями переменных b и c соответственно.
- Цикл while продолжается до тех пор, пока не достигнет конца файла.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д