Moderators Courage Posted March 15, 2013 Moderators Report Posted March 15, 2013 Am de făcut un algoritm pentru rezolvarea ecuaţiei de gradul II, dar nu ştiu dacă e bun. L-am transformat în C++, dar nu merge bine . real a, b, c, d, x1, x2, x citeşte a, b, c ┌dacă a=0 atunci | scrie "Este o ecuaţie de gradul I" | ┌dacă b=0 atunci | | ┌dacă c=0 atunci | | | scrie "Ecuaţia are o infinitate de soluţii" | | |altfel | | | scrie "Ecuaţia nu are soluţii reale" | | └■ | |altfel | | ┌dacă c=0 atunci | | | scrie "soluţia este 0" | | |altfel | | | x<- -c/b | | | scrie x | | └■ | └■ |altfel | ┌dacă b=0 atunci | | ┌dacă c=0 atunci | | | scrie "soluţia este 0" | | |altfel | | | x<-sqrt(c/b) | | └■ | |altfel | | ┌dacă c=0 atunci | | | x1<-0 | | | x2<- -b/a | | | scrie x1, x2 | | |altfel | | | d<-b*b-4*a*c | | | ┌dacă d>0 atunci | | | | x1 <- (-b-sqrt(d)) / (2*a) | | | | x2 <- (-b+sqrt(d)) / (2*a) | | | | scrie x1, x2 | | | └■ | | | ┌dacă d=0 atunci | | | | x <- -b/(2*a) | | | | scrie x | | | └■ | | | ┌dacă d<0 atunci | | | | scrie "Ecuaţia nu are soluţii reale" | | | └■ | | └■ | └■ └■În C++ l-am transformat aşa (am băgat acolade şi la if / else deoarece arăta un rahat de roare cu else / if (>.<) #include <iostream> #include <math.h> using namespace std; int main() { float a,b,c,d,x1,x2,x; cout<<"a = "; cin>>a; cout<<"b = "; cin>>b; cout<<"c = "; cin>>c; if (a==0) { cout<<"Este o ecuatie de gradul I"; if (b==0) { if (c==0) { cout<<"Ecuatie are o infinitate de solutii"; } if (c!=0) { cout<<"Ecuatia nu are solutii"; } } if (b!=0) { if (c==0) { cout<<"0"; } if (c!=0) { x=-c/b; cout<<x; } } } if (a!=0) { if (b==0) { if (c==0) { cout<<"Singura solutie este 0"; } if (c!=0) { x=sqrt(c/b); cout<<x; } } if (b!=0) { if (c==0) { x1=0; x2=-b/a; cout<<x1<<x2; } if (c!=0) { d=(b*b)-(4*a*c); if (d>0) { x1=(-b-sqrt(d))/(2*a); x2=(-b+sqrt(d))/(2*a); cout<<x1; cout<<x2; } if (d=0) { x=-b/(2*a); cout<<x; } if (d<0) { cout<<"Ecuatia nu are solutii in multimea numerelor reale"; } } } } return 0; } 1
Solution +Lus Posted March 15, 2013 Solution Report Posted March 15, 2013 Wut... ce-i asta? Cum adica daca c=0 atunci ecuatia are o infinitate de solutii? Cine te-a invatat asta? Ce legatura au ifurile alea acolo? Ai 2 solutii. Nu inteleg ce-ai facut tu acolo, algoritmul e mai simplu... trebuie sa verifici doar delta. Din moment ce iti cere pe ecuatie de gradul 2, a nu are cum sa fie 0, iar b si c sunt irelevante. #include <iostream> using namespace std; int main() {float a, b, c, d, x, x1, x2; cin>>a>>b>>c; d=b*b-4*a*c; if(d<0) cout<<"ecuatia nu are solutii reale"; else if(d>0) {x1= (-b+sqrt(d))/(2*a); x2= (-b-sqrt(d))/(2*a); cout<<x1<<" "<<x2; } else {x=-b/2*a; cout<<x;} }Si cam asta e tot. 1
Moderators Courage Posted March 15, 2013 Author Moderators Report Posted March 15, 2013 Ms.Dar daca folosesc sqrt-ul, nu trebuie si un #include<math.h>?
+GodsOtherHand Posted March 15, 2013 Report Posted March 15, 2013 si daca d=0? love is a verb Love is a doing word
+GodsOtherHand Posted March 15, 2013 Report Posted March 15, 2013 ah scz, nam vazuto love is a verb Love is a doing word
Moderators Courage Posted March 16, 2013 Author Moderators Report Posted March 16, 2013 Wut... ce-i asta? Cum adica daca c=0 atunci ecuatia are o infinitate de solutii?Păi.. dacă avem 0*x^2 + 0*x + 0 = 0, ecuatia are o infinitate de solutii, deoarece orice viariabila am lua pentru X, aceasta va da 0.
+Lus Posted March 16, 2013 Report Posted March 16, 2013 Nu stiu cine te-a prostit, dar aia nu e ecuatie de gradul 2. Defapt, nu e nimic, e doar o ecuatie nedeterminata. Sau o fi ceva, prin facultate.
+Graham777 Posted March 16, 2013 Report Posted March 16, 2013 using namespace std; Când se folosește?
Moderators Courage Posted March 16, 2013 Author Moderators Report Posted March 16, 2013 http://forum.softpedia.com/topic/367461-using-namespace-std
+Graham777 Posted March 16, 2013 Report Posted March 16, 2013 #include <iostream.h> #include <math.h> using namespace std; int main() { float a, b, c, d=0, x1=0, x2=0; cout<<"Introdu valoare pentru a"; cin>>a; cout<<"Introdu valoare pentru b"; cin>>c; cout<<"Introdu valoare pentru c"; cin>>c; d=b*b-4*a*c; if (d>=0){ x1=(-b+ sqrt(d))/ 2*a; x2=(-b- sqrt(d))/2*a;} else cout<<"Ecuatia nu are solutii"; cout<<x1<<endl; cout<<x2; return 0; } Ce nu e corect?
+GodsOtherHand Posted March 16, 2013 Report Posted March 16, 2013 cout<<"Introdu valoare pentru b"; cin>>c; esti serios? love is a verb Love is a doing word
Moderators Courage Posted March 16, 2013 Author Moderators Report Posted March 16, 2013 x1=(-b+ sqrt(d))/ 2*a; x2=(-b- sqrt(d))/2*a;} trebe x1=(-b+ sqrt(d))/(2*a); x2=(-b- sqrt(d))/(2*a);} Si ai pus cin>>c; de 2 ori.
+GodsOtherHand Posted March 16, 2013 Report Posted March 16, 2013 si pune parantezele la D ala cand il calculezi..imparti la 2 si apoi inmultesti cu a, sau inparti la 2a? love is a verb Love is a doing word
+Graham777 Posted March 16, 2013 Report Posted March 16, 2013 (edited) cout<<"Introdu valoare pentru b"; cin>>c; esti serios? Nu înțeleg ironia. Și @Alex, tot nu-mi dă. L.E. Mulțam:) Edited March 16, 2013 by Gabriel R.
+GodsOtherHand Posted March 16, 2013 Report Posted March 16, 2013 eh nu tre sa faca neaparat caz special pt d=0, oricum solutiile vor fi egale.. daca e sa luam la puricat, trebuia sa si verifica ca ceea ce citeste sa fie valid, sa nu cumva sa fie caracter sau cine stie ce. love is a verb Love is a doing word
Moderators Courage Posted March 16, 2013 Author Moderators Report Posted March 16, 2013 Aleluia, merge.#include <iostream> #include <math.h> using namespace std; int main() { float a,b,c,x,x1,x2,d; cout<<"a="; cin>>a; cout<<"b="; cin>>b; cout<<"c="; cin>>c; if (a==0) { if (b==0) { if (c==0) { cout<<"Nu se poate ca c sa fie 0"; } if (c!=0) { cout<<"Ecuatia nu are solutii"; } } if (b!=0) { if (c==0) { cout<<"x=0"; } if (c!=0) { x=(-1)*(c/b); cout<<x; } } } if (a!=0) { if (b==0) { if (c==0) { cout<<"x=0"; } if (c!=0) { x=sqrt(c/a); } } if (b!=0) { if (c==0) { x1=0; x2=-b/a; cout<<x1<<" si "<<x2; } if (c!=0) { d=b*b-4*a*c; if (d>0); { x1=(-b+sqrt(d))/(2*a); x2=(-b-sqrt(d))/(2*a); cout<<x1<<" si "<<x2; } if (d==0) { x=-b/(2*a); cout<<x; } if (d<0) { cout<<"Ecuatia nu are solutii reale"; } } } } return 0; }
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now