Если заданное квадратное уравнение не имеет корней, то в выходной файл нужно вывести слово NO - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Вот условие. Если заданное квадратное уравнение не имеет корней, то в выходной файл нужно вывести слово NO. Если корней бесконечное множество, то вывести MANY. Если уравнение не имеет смысла, то вывести ERROR. Если корень один, то в первую строку выходного файла нужно вывести число 1, а во вторую – значение этого корня с точностью до 5 знаков после десятичной точки. Если у уравнения два корня, то в первую строку нужно вывести число 2, а во вторую – найденные корни в порядке возрастания их значений с точностью до 5 знаков после десятичной точки.
Листинг программы
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<math.h>
  4. int main()
  5. {
  6. int a,b,c;
  7. float d,x1,x2;
  8. freopen("input.txt","r",stdin);
  9. freopen("output.txt","w",stdout);
  10. scanf("%d %d %d ",&a,&b,&c);
  11. x1=0; x2=0;
  12. d=b*b-4*a*c;
  13. if(d<0)
  14. printf("No");
  15. if (a=0)
  16. {
  17. if(b=0)
  18. printf("ERROR");
  19. else
  20. {
  21. x1=-c/b;
  22. printf("1\n");
  23. printf("%.5f",x1);
  24. }
  25. }
  26. else
  27. if (d==0)
  28. {
  29. x1=-b/(2*a);
  30. printf("1\n");
  31. printf("%.5f",x1);
  32. }
  33.  
  34. if (d>0)
  35. {
  36. d=sqrt(d);
  37. x1=(-b+d)/(2*a);
  38. x2=(-b-d)/(2*a);
  39. printf("%f\n",d);
  40. printf("2\n");
  41. printf("%.5f",x1);
  42. printf("%.5f",x2);
  43. }
  44.  
  45. }
Когда их бесконечное множество я так и не понял. Программа не работает. При числах 1 12 36 он выдает Integer division by zero, я так понимаю это деление на 0, а где оно, я не вижу. При отрицательном дискриминанте работает нормально. При числах 0 12 37 выдает 12.000000 2 -1.#IND0-1.#INF0 В общем я не понимаю, что не нравится. Помогите пожалуйста.
Нашел кучу ошибок, исправил, вроде работает, но некоторые тесты не проходит.
Листинг программы
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<math.h>
  4. int main()
  5. {
  6. float a,b,c,d,x1,x2;
  7. freopen("input.txt","r",stdin);
  8. freopen("output.txt","w",stdout);
  9. scanf("%f %f %f ",&a,&b,&c);
  10. d=b*b-4*a*c;
  11. if(d<0)
  12. printf("No");
  13. if (a==0)
  14. {
  15. if(b==0)
  16. printf("ERROR");
  17. else
  18. {
  19. x1=-c/b;
  20. printf("1\n");
  21. printf("%.5f",x1);
  22. }
  23. }
  24. else
  25. {
  26. if (d==0)
  27. {
  28. x1=-b/(2*a);
  29. printf("1\n");
  30. printf("%.5f",x1);
  31. }
  32.  
  33. if (d>0)
  34. {
  35. d=sqrt(d);
  36. x1=(-b+d)/(2*a);
  37. x2=(-b-d)/(2*a);
  38. printf("2\n");
  39. printf("%.5f %.5f",x1,x2);
  40. }
  41. }
  42.  
  43. }
Тему можно закрывать.

Решение задачи: «Если заданное квадратное уравнение не имеет корней, то в выходной файл нужно вывести слово NO»

textual
Листинг программы
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<math.h>
  4.  
  5. int main()
  6.     {
  7.  
  8.         unsigned int k;
  9.         unsigned int d;
  10.         double p;
  11.  
  12.  
  13.         freopen("input.txt","r",stdin);
  14.         freopen("output.txt","w",stdout);
  15.        
  16.         scanf("%d",&k);
  17.  
  18.         d=1+4*(k-1)*2;
  19.         p=sqrt((double)d);
  20.  
  21.         if ((p - ((int)p)) == 0)
  22.             printf("1");
  23.         else
  24.             printf("0");
  25.                
  26.     }

Объяснение кода листинга программы

В этом коде задача заключается в проверке наличия корней у заданного квадратного уравнения. Вот список действий, которые происходят в коде:

  1. Включаем необходимые библиотеки: Для выполнения математических операций нам понадобятся функции из библиотеки , и .
  2. Открываем входной файл для чтения и выходной файл для записи: Мы используем функцию freopen() для открытия файлов input.txt и output.txt соответственно.
  3. Считываем значение переменной k: С помощью функции scanf() мы считываем значение переменной k из стандартного ввода.
  4. Вычисляем значение переменной d: Мы вычисляем значение переменной d на основе значения k. Здесь d = 1 + 4(k-1)2.
  5. Вычисляем значение переменной p: Мы используем функцию sqrt() из библиотеки для вычисления квадратного корня из значения переменной d. Значение переменной p будет содержать этот квадратный корень.
  6. Проверяем наличие корней у квадратного уравнения: Мы сравниваем значение переменной p с целым значением ((int)p). Если они совпадают, это означает, что корень является целым числом, и мы выводим 1. В противном случае, если разница между p и (int)p не равна нулю, это означает, что корень является десятичной дробью, и мы выводим 0.
  7. Закрываем программу: После выполнения всех действий программа завершается.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.071 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы