Zadání:
Sestavte program, který najde řešení kvadratické rovnice ax2+bx+c=0 v oboru reálných nebo komplexních čísel.
Řešení:
Po zadání koeficientů a, b a c otestujeme, zda nebyl zadán nulový koeficient a. Pokud ano, přechází řešení kvadratické
rovnice na řešení lineární rovnice. Při řešení lineární rovnice ještě otestujeme, zda nebyl zadán koeficient b nulový.
Pokud ano, musíme ještě otestovat koeficient c na nulovou hodnotu.
Pokud nebyl zadán koeficient a nulový, vypočteme hodnotu diskriminantu D = b2 - 4ac. Pokud je vypočtená hodnota D
menší než nula, má kvadratická rovnice řešení v oboru komplexních čísel, jinak lze vypočítat řešení v oboru reálných čísel.
a=0, b=0, c=0: rovnice má nekonečně mnoho řešení
a=0, b=0, c<>0: rovnice nemá řešení
a=0, b<>0: rovnice má jedno řešení
a<>0, D<0: rovnice má řešení v C
a<>0, D=0: rovnice má v R řešení jeden dvojnásobný kořen
a<>0, D>0: rovnice má v R dva kořeny
#include "stdafx.h"
#include "math.h"
#include
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
float a,b,c,d,x1,x2;
printf("Zadejte koeficient a: ");
scanf_s("%f",&a,1);
printf("Zadejte koeficient b: ");
scanf_s("%f",&b,1);
printf("Zadejte koeficient c: ");
scanf_s("%f",&c,1);
if (a==0)
if (b==0)
if (c==0) printf("Nekonecne mnoho reseni\n");
else printf("Rovnice nema reseni\n");
else printf("Jedno reseni x=%.3f\n",-c/b);
else
{
d=pow(b,2)-4*a*c;
if (d<0)
{
d=abs(d);
printf("x1=%.3f+i*%.3f\n",-b/(2*a),sqrtf(d)/(2*a));
printf("x2=%.3f-i*%.3f\n",-b/(2*a),sqrtf(d)/(2*a));
}
else
{
x1=(-b+sqrtf(d))/(2*a);
x2=(-b-sqrtf(d))/(2*a);
printf("x1=%.3f\n",x1);
printf("x2=%.3f\n",x2);
}
}
system("pause");
return 0;
}
program ke stažení