Если заданное квадратное уравнение не имеет корней, то в выходной файл нужно вывести слово NO - C (СИ)
Формулировка задачи:
Вот условие.
Если заданное квадратное уравнение не имеет корней, то в выходной файл нужно вывести
слово NO.
Если корней бесконечное множество, то вывести MANY.
Если уравнение не имеет смысла, то вывести ERROR.
Если корень один, то в первую строку выходного файла нужно вывести число 1, а во
вторую – значение этого корня с точностью до 5 знаков после десятичной точки.
Если у уравнения два корня, то в первую строку нужно вывести число 2, а во вторую –
найденные корни в порядке возрастания их значений с точностью до 5 знаков после десятичной
точки.
Когда их бесконечное множество я так и не понял. Программа не работает. При числах 1 12 36 он выдает Integer division by zero, я так понимаю это деление на 0, а где оно, я не вижу. При отрицательном дискриминанте работает нормально. При числах 0 12 37 выдает
12.000000
2
-1.#IND0-1.#INF0
В общем я не понимаю, что не нравится. Помогите пожалуйста.
Листинг программы
- #include<stdio.h>
- #include<stdlib.h>
- #include<math.h>
- int main()
- {
- int a,b,c;
- float d,x1,x2;
- freopen("input.txt","r",stdin);
- freopen("output.txt","w",stdout);
- scanf("%d %d %d ",&a,&b,&c);
- x1=0; x2=0;
- d=b*b-4*a*c;
- if(d<0)
- printf("No");
- if (a=0)
- {
- if(b=0)
- printf("ERROR");
- else
- {
- x1=-c/b;
- printf("1\n");
- printf("%.5f",x1);
- }
- }
- else
- if (d==0)
- {
- x1=-b/(2*a);
- printf("1\n");
- printf("%.5f",x1);
- }
- if (d>0)
- {
- d=sqrt(d);
- x1=(-b+d)/(2*a);
- x2=(-b-d)/(2*a);
- printf("%f\n",d);
- printf("2\n");
- printf("%.5f",x1);
- printf("%.5f",x2);
- }
- }
Нашел кучу ошибок, исправил, вроде работает, но некоторые тесты не проходит.
Листинг программы
- #include<stdio.h>
- #include<stdlib.h>
- #include<math.h>
- int main()
- {
- float a,b,c,d,x1,x2;
- freopen("input.txt","r",stdin);
- freopen("output.txt","w",stdout);
- scanf("%f %f %f ",&a,&b,&c);
- d=b*b-4*a*c;
- if(d<0)
- printf("No");
- if (a==0)
- {
- if(b==0)
- printf("ERROR");
- else
- {
- x1=-c/b;
- printf("1\n");
- printf("%.5f",x1);
- }
- }
- else
- {
- if (d==0)
- {
- x1=-b/(2*a);
- printf("1\n");
- printf("%.5f",x1);
- }
- if (d>0)
- {
- d=sqrt(d);
- x1=(-b+d)/(2*a);
- x2=(-b-d)/(2*a);
- printf("2\n");
- printf("%.5f %.5f",x1,x2);
- }
- }
- }
Тему можно закрывать.
Решение задачи: «Если заданное квадратное уравнение не имеет корней, то в выходной файл нужно вывести слово NO»
textual
Листинг программы
- #include<stdio.h>
- #include<stdlib.h>
- #include<math.h>
- int main()
- {
- unsigned int k;
- unsigned int d;
- double p;
- freopen("input.txt","r",stdin);
- freopen("output.txt","w",stdout);
- scanf("%d",&k);
- d=1+4*(k-1)*2;
- p=sqrt((double)d);
- if ((p - ((int)p)) == 0)
- printf("1");
- else
- printf("0");
- }
Объяснение кода листинга программы
В этом коде задача заключается в проверке наличия корней у заданного квадратного уравнения. Вот список действий, которые происходят в коде:
- Включаем необходимые библиотеки:
Для выполнения математических операций нам понадобятся функции из библиотеки
, и . - Открываем входной файл для чтения и выходной файл для записи: Мы используем функцию freopen() для открытия файлов input.txt и output.txt соответственно.
- Считываем значение переменной k: С помощью функции scanf() мы считываем значение переменной k из стандартного ввода.
- Вычисляем значение переменной d: Мы вычисляем значение переменной d на основе значения k. Здесь d = 1 + 4(k-1)2.
- Вычисляем значение переменной p:
Мы используем функцию sqrt() из библиотеки
для вычисления квадратного корня из значения переменной d. Значение переменной p будет содержать этот квадратный корень. - Проверяем наличие корней у квадратного уравнения:
Мы сравниваем значение переменной p с целым значением ((int)p). Если они совпадают, это означает, что корень является целым числом, и мы выводим
1
. В противном случае, если разница между p и (int)p не равна нулю, это означает, что корень является десятичной дробью, и мы выводим0
. - Закрываем программу: После выполнения всех действий программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д