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

C++ Klasa Reprezentująca Wielomiany

Ostatnio zmodyfikowano 2018-11-08 00:18
Autor Wiadomość
Fran3k
Temat założony przez niniejszego użytkownika
C++ Klasa Reprezentująca Wielomiany
» 2018-11-07 12:23:31
Witam,

Mam do zrobienia Klasę Reprezentującą Wielomiany.

Treść zadania:
Napisz klasę "poly" tak, aby mogła ona być użyta w przykładzie zaprezentowanym w pliku testpoly.cpp. Wykorzystaj w tym celu jeden z kontenerów bibliteki STL.

testpoly.cpp :

C/C++
#include <iostream>
using namespace std;
#include "poly.h"


int main( void )
{
    poly P1; //Declare object representing polynomial P1
    P1[ 3 ] = 2; P1[ 1 ] = 3.6; P1[ 0 ] = 7; //Specify coefficients of P1 = 2x^3 + 3.6x + 7
   
    poly P2 = 5; //Declare object representing polynomial P2 = 5
    P2[ 1 ] = 3; P2[ 2 ] = 6; P2[ 4 ] = 1; //Specify additional coefficients of P2 = x^4 + 6x^2 + 3x + 5
   
    cout << "Polynomial P1: " << P1 << endl; //Print P1
    cout << "Polynomial P2: " << P2 << endl; //Print P2
   
    poly P3 = P1 + P2; //Add P1 and P2
    cout << "Sum of polynomials P1 and P2: " << P3 << endl; //Print sum of P1 and P2
   
    P3 = P1 * P2; //Multiply P1 by P2
    cout << "Product of polynomials P1 and P2: " << P3 << endl; //Print product of P1 and P2
   
    P3 = 2 * P1; //Multiply P1 by 2
    cout << "Polynomial P1 multiplied by 2: " << P3 << endl; //Print product of P1 and 2
   
    double val = P1( 3.14 ); //Calculate the value of P1 at point 3.14
    cout << "Value of polynomial P1 at point 3.14: " << val << endl; //Print the value of P1 at point 3.14
};


Z tego co zdążyłem poczytać i poszukać to powinienem chyba użyć "Kontenera z biblioteki STL" - Vector

(http://cpp0x.pl/kursy/Kurs-STL-C++/Wstep-podstawowe-informacje-o-STL-u/115  to przeczytałem i chyba tylko Vector tu będzie pasował)

Prosiłbym o pomoc ze zrobieniem tego zadania. Nie chcę gotowego programu tylko chciałbym żeby ktoś mnie kierował co po kolei robić, bo ja totalnie nie wiem od czego zacząć.

Póki co zrobiłem po prostu drugi plik poly.hpp

C/C++
#include <iostream>
#include <math.h>
using namespace std;
class poly
{
private:
    //
public:
    double P1;
    double P2;
    double P3;
   
};
Nie widzę po prostu w przód tego co będę musiał zrobić. Myślę, że kolejny plik z konstruktorami i funkcjami itd zrobię żeby łatwo było się w tym ogarnąć. Ale prosiłbym o podanie mi pierwszego kroku jaki bym musiał zrobić :/

Wiem, że długa droga przede mną ale jakby ktoś się chciał zainteresować pomocą to bardzo bym prosił :) Czasu jest sporo :)


P-172776
pekfos
» 2018-11-07 18:34:45
Klasa musi mieć:
  • C/C++
    P1[ 3 ] = 2;
    operator[].
  • C/C++
    cout << "Polynomial P1: " << P1 << endl;
    Zaprzyjaźniony operator<<(std::ostream&, const poly&).
  • C/C++
    poly P3 = P1 + P2; //Add P1 and P2
    //..
    P3 = P1 * P2; //Multiply P1 by P2
    //..
    P3 = 2 * P1; //Multiply P1 by 2
    Operatory dodawania i mnożenia.
  • C/C++
    double val = P1( 3.14 );
    Operator wywołania.
Reszta to szczegóły implementacyjne. Te P1, P2 itd w klasie możesz od razu wywalić. Masz mieć wektor współczynników.
P-172782
Fran3k
Temat założony przez niniejszego użytkownika
» 2018-11-07 22:29:22
Dziękuję Ci bardzo za pomoc :)


Plik poly.h
C/C++
#include <iostream>
#include <math.h>
using namespace std;
class poly
{
private:
    //
public:
   
    poly(); //
    ~poly();
   
    int operator [];
    poly operator *( const poly & A, const poly & B );
    poly operator +( const poly & B, const poly & B );
    friend operator <<( std::ostream &, const poly & );
};
------------------------------------------------------------------

B ł ę dy:
wiersz / kolumna / b ł ą d
13 18 poly.h[ Error ] declaration of 'operator[]' as non - function
14 47 poly.h[ Error ] 'poly poly::operator*(const poly&, const poly&)' must take either zero or one argument
15 46 poly.h[ Error ] redefinition of 'const poly& B'
15 30 poly.h[ Note ] 'const poly& B' previously declared here


Plik wszystko.cpp

C/C++
#include "poly.h"
poly::poly() //nie wiem co w konstruktorze
{
   
}
poly::~poly() //destruktor o ile będzie potrzebny
{
   
}
//mnożenie
poly operator *( const poly & A, const poly & B )
{
    return poly( A * B );
}
//dzielenie
poly operator +( const poly & A, const poly & B )
{
    return poly( A + B );
}

--------------------------------------------------
B ł ę dy:
C:\P rogram Files( x86 ) \D ev - Cpp\MinGW64\x86_64 - w64 - mingw32\lib\libmingw32.a( lib64_libmingw32_a - crt0_c.o ) In function ` main ':
18 C:\c rossdev\src\mingw - w64 - v3 - git\mingw - w64 - crt\crt\crt0_c.c undefined reference to ` WinMain '
poly\collect2.exe[ Error ] ld returned 1 exit status

Nie umiałem dodać wywołania niestety.

Jakiś podkład zrobiłem ale co i jak poprawić to nie mam pojęcia. Wspierałem się internetem.
Z tego co rozumiem to będziemy operować na A i B, pod które po prostu będą podstawiane P1 / P2 / P3.

Zawsze jakiś krok do przodu zrobiony. Teraz bym prosił o kolejne wskazówki i pomoc w poprawieniu tego kodu, który teraz podsyłam, bo wiem, że słabo to wygląda.
P-172783
pekfos
» 2018-11-08 00:18:06
P-172784
« 1 »
  Strona 1 z 1