Другие языки программирования и технологии

Программа для решения квадратного уравнения в Си

Посмотрите плисс, не работает чё-то, всегда выдает что дискриминант меньше нуля, при любых а, б, с что сделать с ним? вот код
#include <conio.h>
#include <stdio.h>
#include <math.h>
void main()
{
float x1,x2,x,a,b,c,d;

textcolor(LIGHTRED);
cprintf("\nVvedite a: ");
scanf("%f", &a);
textcolor(LIGHTGREEN);
cprintf("\nVvedite b: ");
scanf("%f", &b);
textcolor(WHITE);
cprintf("\nVvedite c: ");
scanf("%f", &c);
d=(float)pow(b,2)-4*a*c;
if (d==0 && d>0 )
{
x1=(float)(-b+pow(d,1/2))/2*a;
x2=(float)(-b-pow(d,1/2))/2*a;
printf("x1=%5.2f",x1,x2);
}
else
{
printf("Diskriminant ne moget but menshe nyl9");
}
getch();
}
#include <stdio.h>
#include <math.h>
#include <locale.h>
#include <conio.h>
int main () {
    double a, b, c, d, x1 = 0, x2 = 0;
    setlocale(LC_CTYPE, "Russian_Russia.1251");
    printf("Введите a: "); scanf("%Lf", &a);
    printf ("Введите b: "); scanf("%Lf", &b);
    printf("Введите c: "); scanf("%Lf", &c);
    if (a == 0) printf("\a\n Уравнение не имеет корней! ");
    else {
        d = pow(b, 2) - 4 * a * c;
        if (d < 0) printf("\a\n Уравнение не имеет вещественных корней! ");
        else if (d == 0) {
            x1 = -b / (2 / a);
            if (b == 0 && c == 0) x1 = 0;
            printf(" Уравнение имеет один корень: x = %Lf", x1);
        } else {
            x1 = (-b - sqrt(d)) / (2 * a);
            x2 = (-b + sqrt(d)) / (2 * a);
            printf (" Уравнение имеет два корня: \n x1 = %Lf\n x2 = %Lf" , x1, x2);
        }
    }
    getch();
    return 0;
}
Анатолий Галеев
Анатолий Галеев
63 022
Лучший ответ
if (d==0 && d>0 )
Если d==0 И d>0...
Это какое же должно быть d, чтобы оно были и 0, больше 0?
Ты наверно хотел написать
if (( d==0 ) || ( d>0 ) )
или еще проще
if ( d>=0 )
#include
#include

int main(void)
{
int a, b, c, d;
float x1, x2, t;

printf ("Enter a: ");
scanf ("%d", &a);

printf ("Enter b: ");
scanf ("%d", &b);

printf ("Enter c: ");
scanf ("%d", &c);

d = (b * b) - 4 * a * c;
x1 = (-b + sqrt(d)) / (2 * a);
x2 = (-b - sqrt(d)) / (2 * a);
t = (-b) / (2 * a);

if (d > 0) {
printf ("x1 = %.3f\n", x1);
printf ("x2 = %.3f\n", x2);
}
if (d == 0) {
printf ("x = %.3f\n", t);
}
if (d < 0) {
printf ("No any results");
}
return 0;
}