Дан текстовый файл, содержащий коэффициенты квадратных уравнений - C (СИ)
Формулировка задачи:
Дан текстовый файл вещественных чисел, содержащий коэффициенты квадратных уравнений (A1, B1, С1, A2, B2, С2, …). Создать новый текстовый файл, содержащий вначале три числа N2, N1, N0 — количество в исходном файле уравнений с двумя, одним и нулем действительных корней, далее — значения корней всех уравнений с двумя действительными корнями, а затем значения корней всех уравнений с одним действительным корнем.
Не могу уйти дальше заполнения первого файла. Как можно считать данные из него таким образом, чтобы первые 3 числа можно было отправить в уравнение и далее так же со следующими тройками чисел?
Знаю, что числа вещественные, но пока работаю с целыми
#include <stdio.h> #include <windows.h> void main() { SetConsoleOutputCP(1251); int A[100][3]; int N, m=3; int i, j,k; FILE *f=fopen("num.txt","w"), *nf=fopen("rad.txt","w"); if(f==NULL) printf("Не удалось открыть файл"); if(nf==NULL) printf("Не удалось создать файл"); printf("Введите количество уравнений:N="); scanf("%d",&N); for(i=0;i<N;i++) { for(j=0;j<m;j++) { printf("Введите коэффициенты уравнений:",i+1,j+1); scanf("%d",&A[i][j]); fprintf(f,"%d",A[i][j]); } } fclose(f); fclose(nf); system("pause"); }
Решение задачи: «Дан текстовый файл, содержащий коэффициенты квадратных уравнений»
textual
Листинг программы
#include <stdio.h> int main() { FILE *in = fopen("in.txt", "r"); // открываем файл в режиме чтения "r" if (!in) { printf("Error: Cannot open file 'in.txt'.\n"); return 1; } double a, b, c; int exitCode; while ((exitCode = fscanf(in, "%lf %lf %lf", &a, &b, &c)) == 3) { // решаем квадратное уравнение, сохраняем коэффициенты и корни в отдельых массивах printf("a = %g, b = %g, c = %g\n", a, b, c); } if (exitCode != EOF) { puts("Error: Wrong file format."); return 1; } puts("Program completed."); return 0; }
Объяснение кода листинга программы
- Включаем заголовочный файл
для использования функций ввода-вывода. - В функции main() открываем файл
in.txt
в режиме чтенияr
с помощью функции fopen(). - Проверяем, удалось ли открыть файл, выводим сообщение об ошибке и возвращаем код завершения 1 в случае неудачи.
- Объявляем переменные a, b, c типа double для хранения коэффициентов квадратного уравнения.
- Объявляем переменную exitCode типа int для проверки успешного считывания данных из файла.
- Запускаем цикл while, который будет выполняться, пока функция fscanf() успешно считывает три значения (a, b, c) из файла.
- Внутри цикла выводим значения коэффициентов на экран.
- Если цикл while завершается не по причине достижения конца файла (EOF), то выводим сообщение об ошибке и возвращаем код завершения 1.
- По завершении цикла while выводим сообщение
Program completed.
и возвращаем код завершения 0.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д