#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); } }