Если заданное квадратное уравнение не имеет корней, то в выходной файл нужно вывести слово 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
. - Закрываем программу: После выполнения всех действий программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д