Advertisement
Guest User

Untitled

a guest
Mar 22nd, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.42 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. #include <sstream>
  4. #include <string>
  5. #include <vector>
  6. #include <iterator>
  7.  
  8. using namespace std;
  9.  
  10. string input, inputSave, minimSiMaxim;
  11. int coeficient, coeficienti, existaSolutiiReale;
  12. float a, b, c, x1, x2, delta, ordonataVarfului, abscisaVarfului;
  13. int main()
  14. {
  15. existaSolutiiReale = 1;
  16.  
  17. cout<<"Introduce-ti o ecuatia de gradul 2 dupa modelul ax^2+bx+c=0. \nInserati-o aici: "; cin>>input;
  18. inputSave=input;
  19.  
  20. /*
  21. *Aici se modifica string-ul input pentru a elimina exponentul lui x, si semnele(+, ^, =) din aceasta ecuatie.
  22. */
  23. int positionOfUpArrow = input.find('^');
  24. input.erase(input.begin()+positionOfUpArrow+1);
  25. if(input.find_first_of('-')==0)
  26. input.insert(1, "1");
  27. size_t found = input.find_first_of("+^=");
  28. while(found != input.npos)
  29. {
  30. input[found]=' ';
  31. found = input.find_first_of("+^=", found + 1);
  32. }
  33.  
  34. /*
  35. *Aici se transforma dintr-un strin intr-un <vector><float>
  36. */
  37. istringstream iss(input);
  38. vector<string> coeficientiDarCuXuri{istream_iterator<string>{iss},
  39. istream_iterator<string>{}};
  40. vector<float> coeficientiFaraXuri;
  41.  
  42. for (unsigned i=0; i<coeficientiDarCuXuri.size(); i++)
  43. {
  44. stringstream str(coeficientiDarCuXuri.at(i));
  45. str >> coeficient;
  46. coeficientiFaraXuri.push_back(coeficient);
  47. }
  48.  
  49. /*
  50. *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
  51. */
  52. if(coeficientiFaraXuri[0]==0) coeficientiFaraXuri[0]=1;
  53. a=coeficientiFaraXuri[0]; b=coeficientiFaraXuri[1]; c=coeficientiFaraXuri[2];
  54. delta=pow(b,2)-4*a*c;
  55. abscisaVarfului = -b/2*a; ordonataVarfului = -delta/4*a;
  56. if(delta>=0)
  57. {
  58. x1=(-b+sqrt(delta))/(2*a);
  59. x2=(-b-sqrt(delta))/(2*a);
  60. } else existaSolutiiReale = 0;
  61. if(a<0) minimSiMaxim="Maximul";
  62. else minimSiMaxim="Minimul";
  63.  
  64. if(existaSolutiiReale == 1)
  65. cout<<"Radacinile ecuatiei de gradul 2 inserata sunt x1="<<x1<<" si x2="<<x2
  66. <<" .\nVarful functiei de gradul al doilea cu "<<inputSave<<" ecuatie atasata este punctul V("
  67. <<abscisaVarfului<<","<<ordonataVarfului<<").\n"<<minimSiMaxim<<" acestei functii este "<<ordonataVarfului;
  68. else cout<<"Ecuatia "<<inputSave<<" nu are solutii reale.";
  69. return 0;
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement