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