fkwadr.c -o fkwadr -lm
Problem polega na tym że, oblicza zawsze w funkcji obl_pier warunek dla Del = 0, a w funkcji wypisz, wypisuje warunek dla Del > 0...
Kod: Zaznacz cały
#include <stdio.h>
#include <math.h>
////////////////////////////////////////////////////////////////////////////////////////////////////
float* podaj_wsp(float *);
float delta(float *, float);
float* obl_pier(float *, float, float *);
void wypisz(float *, float);
////////////////////////////////////////////////////////////////////////////////////////////////////
int main(void)
{
float wsp[3], del, mz[2];
podaj_wsp(wsp);
delta(wsp, del);
obl_pier(wsp, del, mz);
wypisz(mz, del);
return 0;
}
////////////////////////////////////////////////////////////////////////////////////////////////////
float* podaj_wsp(float *wspol)
{
int i;
printf("Podaj wspolczyniki rownania kwadratowego\npostaci a1*x^2 + a2*x + a3 = 0\n\n");
for(i=1; i<4; i++)
{
printf("a%i = ", i);
scanf("%f", &wspol[i-1]);
printf("\n");
}
return wspol;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////
float delta(float *wspol, float Del)
{
Del = wspol[1]*wspol[1] - 4*wspol[0]*wspol[2];
printf("Delta rownania jest rowna: %.2f\n", Del);
return Del;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////
float* obl_pier(float *wspol, float Del, float *pierw)
{
if(Del > 0)
{
pierw[0] = (-wspol[1]-sqrt(Del))/(2*wspol[0]);
pierw[1] = (-wspol[1]+sqrt(Del))/(2*wspol[0]);
}
else if(Del == 0)
{
pierw[0] = -wspol[1]/(2*wspol[0]);
}
else
{
printf("Delta mniejsza od 0\n");
}
return pierw;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////
void wypisz(float *pierw, float Del)
{
if (Del > 0)
{
printf("Rownanie posiada dwa pierwiastki rzeczywiste\nx1 = %.2f\tx2 = %.2f\n",pierw[0],pierw[1]);
}
else if (Del == 0)
{
printf("Rownanie posiada jeden podwojny pierwiastek rzeczywisty: %f.2\n", pierw[0]);
}
else
{
printf("Rownanie nie posiada pierwsiatków rzeczywistych\n");
}
}