Выяснить имеет ли уравнение действительные корни - C (СИ)

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

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

ЗАДАНИЕ Даны действительные числа a, b, c (a ≠ 0, ). , проверить при вводе Выяснить имеет ли уравнение a*x^2+bx+c=0 действительные корни Если действительные корни . имеются то найти их В противном случае ответом должно служить сообщение что , действительных корней нет . Уже 100 разпереписывал код, но все равно считает либо неверно либо вообще не считает либо пишет одновременно "действительных корней нет" и "х=... у=" Нужно что бы выводилось одно из двух сообщений
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <windows.h>
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    float a, b, c, x, y,d;
    printf("Введите а,b,c");
    scanf("%f%f%f",&a,&b,&c);
 
    if
(d=pow(b,2)-4*a*c)
(d<0);
 printf ("действительных корней нет");
 
    if ((pow(b,2)-4*a*c)>=0)
        a != 0;
    else
    {
 
     ((x= ((-b + sqrt(pow(b,2)-4*a*c))/2*a)) && (y= ((-b - sqrt(pow(b,2)-4*a*c))/2*a)));
        printf("y=%f""x=%f",y,x);
    }
 
    return 0;
}

Решение задачи: «Выяснить имеет ли уравнение действительные корни»

textual
Листинг программы
#include <stdio.h>
#include <math.h>
#define EPS 1.0e-4
int main() {
    float a, b, c;
    scanf("%f%f%f", &a, &b, &c);
    if (abs(a) > EPS) {
        float d = b*b - 4*a*c;
        if (abs(d) < EPS) {
            printf("one solution: %f\n", -b/(2*a));
        } else if (d > 0) {
            float droot = sqrtf(d);
            printf("x1 = %f\nx2 = %f\n", (-b+droot)/(2*a), (-b-droot)/(2*a));
        } else {
            printf("No solutions\n");
        }
    }
    return 0;
}

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

В этом коде:

  1. Задаются три переменные типа float: a, b, c. Значения этих переменных вводятся с клавиатуры.
  2. Вычисляется дискриминант: d = bb - 4a*c.
  3. Если abs(a) > EPS, то есть если a не равно нулю, то выполняются следующие действия: 3.1. Если abs(d) < EPS, то есть если d близко к нулю, то выводится одно решение уравнения: x = -b/(2a). 3.2. Если d > 0, то есть если дискриминант больше нуля, то вычисляется корни уравнения: x1 = (-b+sqrt(d))/(2a) и x2 = (-b-sqrt(d))/(2*a). Выводятся значения корней. 3.3. Если d < 0, то есть если дискриминант меньше нуля, то выводится сообщение No solutions, то есть уравнение не имеет действительных корней.
  4. Если abs(a) <= EPS, то есть если a равно нулю, то выводится сообщение No solutions, так как в этом случае уравнение имеет бесконечное количество решений.
  5. Возвращается 0, чтобы указать, что программа успешно завершилась.

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


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

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

15   голосов , оценка 3.933 из 5
Похожие ответы