#define _CRT_SECURE_NO_WARNINGS #include #include #include #include int read_coefficients(double* a, double* b, double* c) { FILE* file; file = fopen("/home/alex/Рабочий стол/project/koef.txt", "r"); if (file == NULL) { perror("Ошибка открытия файла koef.txt"); return 1; } if (fscanf(file, "%lf %lf %lf", a, b, c) != 3) { fprintf(stderr, "Ошибка чтения коэффициентов из файла.\n"); fclose(file); return 1; } fclose(file); return 0; } int solve_quadratic_equation(double a, double b, double c, double* x1, double* x2) { double D = (b * b - 4 * a * c); if (a == 0) { if (b == 0) { if (c == 0) { return -1; } else { return 0; } } else { *x1 = -c / b; return 1; } } else { if (D > 0) { *x1 = (-b / (2 * a)); *x2 = (-b / (2 * a)); return 2; } else if (D == 0) { *x1 = -b / (2 * a); return 1; } else { return 0; } } } void write_results(double a, double b, double c, double x1, double x2, int kol_kor, double D) { FILE* file; file = fopen("/home/alex/Рабочий стол/project/rez.txt", "w"); if (file == NULL) { perror("Ошибка открытия файла output.txt"); return; } fprintf(file, "Коэффициенты уравнения: a = %.2lf, b = %.2lf, c = %.2lf\n", a, b, c); switch (kol_kor) { case 0: fprintf(file, "Действительных корней нет.\n"); break; case 1: fprintf(file, "Один корень: x = %.2lf\n", x1); fprintf(file, "Дискриминант: %.2lf\n", D); break; case 2: fprintf(file, "Два корня: x1 = %.2lf, x2 = %.2lf\n", x1, x2); fprintf(file, "Дискриминант: %.2lf\n", D); break; case -1: fprintf(file, "Бесконечно много корней.\n"); break; } fclose(file); } int main() { double a, b, c, x1, x2; int kol_kor; double D; if (read_coefficients(&a, &b, &c)) { return 1; } kol_kor = solve_quadratic_equation(a, b, c, &x1, &x2); D = b * b - 4 * a * c; write_results(a, b, c, x1, x2, kol_kor, D); return 0; }