Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cmath>
- #include <sstream>
- #include <string>
- #include <vector>
- #include <iterator>
- using namespace std;
- string input, inputSave, minimSiMaxim;
- int coeficient, coeficienti, existaSolutiiReale;
- float a, b, c, x1, x2, delta, ordonataVarfului, abscisaVarfului;
- int main()
- {
- existaSolutiiReale = 1;
- cout<<"Introduce-ti o ecuatia de gradul 2 dupa modelul ax^2+bx+c=0. \nInserati-o aici: "; cin>>input;
- inputSave=input;
- /*
- *Aici se modifica string-ul input pentru a elimina exponentul lui x, si semnele(+, ^, =) din aceasta ecuatie.
- */
- int positionOfUpArrow = input.find('^');
- input.erase(input.begin()+positionOfUpArrow+1);
- if(input.find_first_of('-')==0)
- input.insert(1, "1");
- size_t found = input.find_first_of("+^=");
- while(found != input.npos)
- {
- input[found]=' ';
- found = input.find_first_of("+^=", found + 1);
- }
- /*
- *Aici se transforma dintr-un strin intr-un <vector><float>
- */
- istringstream iss(input);
- vector<string> coeficientiDarCuXuri{istream_iterator<string>{iss},
- istream_iterator<string>{}};
- vector<float> coeficientiFaraXuri;
- for (unsigned i=0; i<coeficientiDarCuXuri.size(); i++)
- {
- stringstream str(coeficientiDarCuXuri.at(i));
- str >> coeficient;
- coeficientiFaraXuri.push_back(coeficient);
- }
- /*
- *De aici in jos se fac calculele diferitelor elemente alei unei ecuatii de gradul al doilea si se stabileste daca aceasta are minim sau maxim
- */
- if(coeficientiFaraXuri[0]==0) coeficientiFaraXuri[0]=1;
- a=coeficientiFaraXuri[0]; b=coeficientiFaraXuri[1]; c=coeficientiFaraXuri[2];
- delta=pow(b,2)-4*a*c;
- abscisaVarfului = -b/2*a; ordonataVarfului = -delta/4*a;
- if(delta>=0)
- {
- x1=(-b+sqrt(delta))/(2*a);
- x2=(-b-sqrt(delta))/(2*a);
- } else existaSolutiiReale = 0;
- if(a<0) minimSiMaxim="Maximul";
- else minimSiMaxim="Minimul";
- if(existaSolutiiReale == 1)
- cout<<"Radacinile ecuatiei de gradul 2 inserata sunt x1="<<x1<<" si x2="<<x2
- <<" .\nVarful functiei de gradul al doilea cu "<<inputSave<<" ecuatie atasata este punctul V("
- <<abscisaVarfului<<","<<ordonataVarfului<<").\n"<<minimSiMaxim<<" acestei functii este "<<ordonataVarfului;
- else cout<<"Ecuatia "<<inputSave<<" nu are solutii reale.";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement