To co si vyvoril ti nejde ani zkompilovat.. Naco tam mas conio.h?
V scanf nacitavas float, pritom koeficienty a,b,c mas ako integer.. Preco??
Ked tam das float, nemozes zas pouzit sqrt() ale sqrtf() (vid 'man sqrt')
Taktiez si pozri funkciu scanf(), ako funguje.. naco ju mas 3 krat pod sebou? Co ak zadam "1 a 3" ? Cele to ti padne.. Nacitavaj to v jednom scanf a overuj jeho navratovu hodnotu - vracia pocet korektne nacitanych vstupov = vyhovujucich (ty potrebujes 3)
Dalsi problem - matematicky... pre D=0 nemusis menit vzorec na vypocet korenov.. Akurat, ze odmocnina z D (sqrt(D)) = 0, kedze D=0
Ty tam pchas odmocninu z 1 a neviem preco.. cele to odtial vyhod, mozes tu nulu zanedbat..
Ja by som to cele spravil takto:
kompilujem: (vyuzivam matematicku kniznicu na sqrtf())
Kód:
gcc -std=c99 -Wall -Wextra -Werror -pedantic -lm -g -O kvadr.c -o kvadr
kod:
Kód:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int main()
{
float a,b,c,d,x1,x2;
printf("zadaj a,b,c pre kvadrat rovnicu:");
if(scanf("%f %f %f", &a, &b, &c) != 3) {
printf("zle zadane cisla");
return EXIT_FAILURE;
}
if (a==0) {
printf("Toto nieje kvad. rovnica");
} else {
d = (b*b)-(4*a*c);
if (d<0) {
printf("Rovnica nema riesenie");
} else {
if (d>0) {
x1 = ( -b + sqrtf(d) ) / (2*a);
x2 = ( -b - sqrtf(d) ) / (2*a);
printf("Rovnicama dva korene: x1=%2.2f,x2=%2.2f", x1, x2);
} else {
x1 = ( -b ) / (2*a);
printf("Rovnica ma jeden koren: x1=%2.2f", x1);
}
}
}
return EXIT_SUCCESS;
}