123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- #define _CRT_SECURE_NO_WARNINGS
- #include <stdio.h>
- #include <malloc.h>
- #include <stdlib.h>
- #include <math.h>
- 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;
- }
|