123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- #define _CRT_SECURE_NO_WARNINGS
- #include <stdio.h>
- #include <conio.h>
- #include <stdlib.h>
- #include <malloc.h>
- #include <ctype.h>
- #include <math.h>
- int is_number(char* str) {
- int dot = 0;
- while (*str) {
- if (*str == '.') {
- dot++;
- }
- else if(!isdigit(*str)&&*str != '-' && *str !='+') {
- return 0;
- }
- str++;
- }
- return (dot <= 1);
- }
- void read(double* arr) {
-
- FILE* file;
- char p[100];
- double d;
- file = fopen("1.txt", "r");
- FILE* file2;
- file2 = fopen("result.txt", "w");
- int n = 0;
- while ( fscanf(file, "%s", p) != EOF && is_number(p) && n < 3)
- {
- if (n == 0 && atof(p) == 0) {
- fprintf(file2,"Ýòî íå êâàäðàòíîå óðàâíåíèå");
- exit(1);
- }
- d = atof(p);
-
- *arr = d;
- arr++;
- n++;
-
- }
- if (n != 3)
- {
- fprintf(file2, "Ìàëî äàííûõ èëè îíè íåêîððåêòíûå");
- exit(1);
- }
- fclose(file);
- }
- void solve(double* arr) {
- double a = *arr++;
- double b = *arr++;
- double c = *arr;
- double d = b * b - 4 * a * c;
- double x1, x2;
- FILE* file;
- file = fopen("result.txt", "w");
- if (d < 0) {
- fprintf(file, "Äèñêðèìèíàíò ðàâåí %.3lf\n", d);
- fprintf(file, "Äåéñòâèòåëüíûõ êîðíåé íåò");
- return 0;
- }
- else if (d > 0) {
- x1 = (-b + sqrt(d)) / (2 * a);
- x2 = (-b - sqrt(d)) / (2 * a);
- fprintf(file, "Äèñêðèìèíàíò ðàâåí %.3lf\n", d);
- fprintf(file, "x1 = %.3lf\nx2 = %.3lf", x1, x2);
- return 0;
- }
- else {
- x1 = (-b) / (2 * a);
- fprintf(file, "Äèñêðèìèíàíò ðàâåí %.3lf\n", d);
- fprintf(file, "x1 = %.3lf\n", x1);
- return 0;
- }
-
- }
- int main()
- {
- system("chcp 1251 < nul");
- double* arr = malloc(3 * sizeof(double));
- read(arr);
- solve(arr);
- return 0;
- }
|