Napisać program // Walidacja

0

Witam, otrzymałem takie zadanko i bardzo bym prosił o rzucenie okiem bo mam wątpliwości czy mam poprawne podejście do problemu:

Napisz oraz przetestuj program obliczający pierwiastki trójmianu kwadratowego. Rozszerz go o obliczanie wyników dla ujemnej delty (pierwiastki zespolone).

Pisałem to w języku C. W załączniku przesyłam plik source z kodem poniżej.

DZIĘKI!

MÓJ KOD:

#include <iostream>
#include<math.h>

using namespace std;


int main(){
	double a, b, c, x1, x2, delta;
	cout << "Pierwiastki trojmianu kwadratowego" << endl;
	cout << "wspolczynnik a=";
	cin >> a;
	if (a == 0)
	{
		printf("niepoprawna wartosc a");
		system("PAUSE");
		return(-1);
	}
	cout << "wspolczynnik b i wyraz wolny c";
	cin >> b >> c;
	delta = b*b - 4 * a*c;
	cout << "--Wyniki--" << endl;
	if (delta > 0){
		x1 = (-b - sqrt(delta)) / (2 * a);
		x2 = (-b + sqrt(delta)) / (2 * a);
		cout << "x1=" << x1 << "x2 =" << x2 << endl;
	}
	else if (delta == 0){
		x1 = -b / (2 * a);
		cout << "x0=" << x1 << "\n";
	}
	else{
		x1 = (-b - sqrt(delta)*sqrt(-1) / (2 * a);
		x1 = (-b + sqrt(delta)*sqrt(-1) / (2 * a);

	}
	system("pause");
}
1

Mam dla Ciebie złą wiadomość: nie pisałeś tego programu w C, tylko w C++.

Jak na nowicjusza kod wygląda ok, pomijając system("pause") i zbyteczne obliczenia dla ujemnej delty.

1

Na pewno się nie pomyliłeś jeżeli delta<0? Nie pomyliłeś się też i dwa razy do tej samej zmiennej przypisujesz miejsca zerowe? Tj u Ciebie w else? Drugą sprawą jest to, czy na pewno to czy można używać funkcji sqrt dla liczb ujemnych?

0

Chyba już kumam. zaraz poprawie. System("pause"); dodałem żebym podczas kompilacji zobaczył wyniki, pewnie jest to bład ale chciałem zobaczyć co stworzyłem :D pomimo błędu i tak się czuje jak Pan Stworzenia :D. Dziękuje za uwagi.

0

Jeśli wszystko dobrze zrozumiałe to powinno być tak:

#include <iostream>
#include <math.h>

using namespace std;

int main()
{
double a, b, c, x1, x2, delta;
cout <<"Pierwiastki trojmianu kwaratowegp"<<endl;
cout <<"Wspolczynnik a=";
cin>>a;
if(a==0)
{
printf("Niepoprawna wartosc a!");
system("PAUSE");
return(-1);

}
cout<<"Wspolczynnik b i wyraz wolny c";
cin>>b>>c;
delta=b*b-4*a*c;
cout<<"Wyniki:"<<endl;
if(delta>0)
{
	x1=(-b-sqrt(delta))/(2*a);
	x2=(-b+sqrt(delta))/(2*a);
	cout<<"x1="<<x1<<"x2="<<x2<<endl;
}
	else if(delta==0)
	{
		x1=-b/(2*a);
		cout<<"x0="<<x1<<"\n";
	}
	else if(a!=0)
	{	
		double a=1,b=1,c=5,;
		double delta=b*b-4*a*c;
		else if(delta<0)
		{
			delta=sqrt(-delta);
			cout<<"\nx1="<<-b/(2*a)<<"-"<<delta/(2*a)<<i;
			cout<<"\nx1="<<-b/(2*a)<<"+"<<delta/(2*a)<<i;
		}
		else if(delta==0)
		cout<<"\nx="<<-b/(2*a);
		else
		{
			delta=sqrt(delta);
			cout<<"\nx1="<<(-b-delta)/(2*a);
			cout<<"\nx1="<<(-b+delta)/(2*a);
		}
	}

}

1 użytkowników online, w tym zalogowanych: 0, gości: 1