Navigace: Hlavní stránka -> Jazyk C -> 03 Podmínky -> 03.07 Kvadratická rovnice - řešení v C

MENU

03.07 Kvadratická rovnice - řešení v C

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í