Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Funkcja kwadratowa zamiana postaci kanonicznej na iloczynowa

Ostatnio zmodyfikowano 2017-10-18 20:05
Autor Wiadomość
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 :
C/C++
#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" );
}
   
   
   
   
   
   
   
   
   
   
   
P-165875
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ć 
P-165876
« 1 »
  Strona 1 z 1