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

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

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

Вот условие. Если заданное квадратное уравнение не имеет корней, то в выходной файл нужно вывести слово NO. Если корней бесконечное множество, то вывести MANY. Если уравнение не имеет смысла, то вывести ERROR. Если корень один, то в первую строку выходного файла нужно вывести число 1, а во вторую – значение этого корня с точностью до 5 знаков после десятичной точки. Если у уравнения два корня, то в первую строку нужно вывести число 2, а во вторую – найденные корни в порядке возрастания их значений с точностью до 5 знаков после десятичной точки.
#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);
            }

    }
Когда их бесконечное множество я так и не понял. Программа не работает. При числах 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()
    {
 
        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");
                
    }

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

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

  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
Похожие ответы