Дан текстовый файл, содержащий коэффициенты квадратных уравнений - 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.