Funkcja kwadratowa zamiana postaci kanonicznej na iloczynowa
Ostatnio zmodyfikowano 2017-10-18 20:05
tech123 Temat założony przez niniejszego użytkownika |
Funkcja kwadratowa zamiana postaci kanonicznej na iloczynowa » 2017-10-18 19:41:17 Witam. Zadano mi w szkole do zrobienia program który zamieni postac kanoniczna na postac iloczynowa w funkcji kwadratowej. Mam dwa problemy. Pierwszy polega na tym, ze gdy wychodzi mi ujemny x1 lub x2 dla postaci iloczynowej, to program nie zmienia znaku i wychodzi taka postac iloczynowa : (x--2)(x--1). Drugi problem polega na tym, ze program podaje bledne dane gdy podaje a=2 b=-7 c=3 Oto moj ulomny pewnie kod : #include <iostream> #include <math.h> #include <sstream> using namespace std;
int a, b, c, delta, y, x, x1, x2, x0; double pdelta; main() { std::string iks2 = "x*x+"; std::string iks1 = "x+"; cout << "Podaj kolejno liczby a, b oraz c" << endl; cin >> a >> b >> c; system( "cls" ); std::ostringstream oss; oss << "Postac kanoniczna tej funckji wyglada nastepujaco: " << endl; oss << a; oss << iks2; oss << b; oss << iks1; oss << c << endl; std::cout << oss.str(); delta =( b * b ) -( 4 * a * c ); cout << "delta z tej funckji wynosi:" << delta << endl; pdelta = sqrt( delta ); if( delta < 0 ) { cout << "Brak rozwiazania dla tej delty" << endl; } if( delta == 0 ) { x0 = - b / 2 * a; cout << "x wynosi" << x0 << endl; std::ostringstream oss; oss << "Postac iloczynowa wyglada nastepujaco " << a; oss << "(x-"; oss << x0; oss << ") do kwadratu" << endl; cout << endl; oss << "PAMIETAJ ZE 2 MINUSY DAJA PLUS" << endl; std::cout << oss.str(); } if( delta > 0 ) { x1 = - b - pdelta; x2 = - b + pdelta; std::ostringstream oss; oss << "x1 wynosi " << x1 / 2 * a << endl; oss << "x2 wynosi " << x2 / 2 * a << endl; oss << "Postac iloczynowa wyglada nastepujaco " << a; oss << "(x-"; oss << x1; oss << ")"; oss << "(x-"; oss << x2; oss << ")"; std::cout << oss.str(); } return 0; system( "pause" ); }
|
|
mateczek |
» 2017-10-18 20:05:26 to program nie zmienia znaku i wychodzi taka postać iloczynowa
|
1. Chyba nie liczysz na to, że napis(string) sam ci pozmienia znaki ?? i gdy do napisu wrzucisz "x--1" to się sam przerobi na "x+1" 2. obliczenia prowadzisz na intach podczas gdy pierwiastki i wszystko inne mogą być rzeczywiste. To Ci nie ma prawa dobrze liczyć |
|
« 1 » |