123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- #include "Header.h"
- void writeFile(char* path, char* answer)
- {
- FILE* file = fopen(path, "w");//открытие файла на запись
-
- if (!file) //проверка открылся ли файл
- {
- printf("Не удалось найти файл\n");//вывод ошибки в консоль
- exit(1);//код ошибки
- }
- fprintf(file, answer);//запись в файл
- fclose(file);
- }
- void withC()
- {
- printf("\nВведите коэфициенты уравнения:");
- char* str = calloc(1000, sizeof(char));
- gets(str);
- writeFile(PATH, str);
- FILE* file = fopen(PATH, "r");//открытие файла на чтение
- if (!file) //проверка открылся ли файл
- {
- printf("Не удалось найти файл\n");//вывод ошибки в консоль
- exit(1);//код ошибки
- }
- float a;
- float b;
- float c;
- int CODE_PARAM = fscanf(file, "%f%f%f", &a, &b, &c);//считывание значений переменной
- countArg(CODE_PARAM);//проверка на количество параметров
- fclose(file);//закрытие файла
- char* answer = calloc(1000,sizeof(char));//открытие файла на запись
- float Discriminant = b * b - 4 * c * a;//нахождение дискриминанта
- if (Discriminant < 0)//если дискриминант отрицательный
- {
- printf("Дискриминант меньше 0. Решения нет\n");//вывод ошибки в консоль
- sprintf(answer, "Решение вида (%5.3f)*x^2 + (%5.3f)*x + (%5.3f) = 0\nРешения не имеет, поскольку имеет отрицательный дискриминант = %5.3f", a, b, c, Discriminant);//запись информации в новый файл
- writeFile(PATH_ANSWER, answer);
- exit(3);//код ошибки
- }
- //проверка первого аргумента на плешивость
- if (a == 0)
- {
- printf("Попытка деления на 0\n");
- sprintf(answer, "%s %5.3f %s %5.3f %s %5.3f %s", "Решение вида (", a, ")*x^2 + (", b, ")*x + (", c, ") = 0\n Попытка деления на 0");//запись строки
- writeFile(PATH_ANSWER, answer);
- exit(4);
- }
- //решение квадратного уравнения
- if (Discriminant == 0)
- {
- float x = -b / (2 * a);//нахождение корней уравнения
- sprintf(answer, "Решение вида (%5.3f)*x^2 + (%5.3f)*x + (%5.3f) = 0 имеет 1 решение \nx = %5.3f\nДискриминант = %5.3f", a, b, c, x, Discriminant);//запись информации в новый файл
- writeFile(PATH_ANSWER, answer);
- printf("Решение вида (%5.3f)*x^2 + (%5.3f)*x + (%5.3f) = 0 имеет 1 решение \nx = %5.3f\nДискриминант = %5.3f\n", a, b, c, x, Discriminant);
- }
- else
- {
- //нахождение корней уравнения
- float x1 = (-b + sqrt(Discriminant)) / (2 * a);
- float x2 = (-b - sqrt(Discriminant)) / (2 * a);
- sprintf(answer, "Решение вида (%5.3f)*x^2 + (%5.3f)*x + (%5.3f) = 0 имеет 2 решения \nx1 = %5.3f, x2 = %5.3f\nДискриминант = %5.3f", a, b, c, x1, x2, Discriminant);//запись информации в новый файл
- writeFile(PATH_ANSWER, answer);
- printf("Решение вида (%5.3f)*x^2 + (%5.3f)*x + (%5.3f) = 0 имеет 2 решения \nx1 = %5.3f, x2 = %5.3f\nДискриминант = %5.3f\n", a, b, c, x1, x2, Discriminant);
- }
- }
|