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

Konstruktor w klasie. Klasa zespolona

Ostatnio zmodyfikowano 2014-01-02 21:36
Autor Wiadomość
Paja92
Temat założony przez niniejszego użytkownika
Konstruktor w klasie. Klasa zespolona
» 2014-01-02 14:04:05
Witam
Chcę utworzyć klasę liczb zespolonych na podstawie której utworzę zespolone macierze. Problem jaki się pojawia to niemożliwość skompilowania tego programu. Na podstawie błędów które wyrzuca wnioskuję ze nie do końca rozumiem o co chodzi z konstruktorem, tworzeniem z niego obiektów na którym można było by prowadzić obliczenia. Czy ktoś z użytkowników mógł by rozwiązać mój problem albo nakierować na jakieś mądre strony gdzie by było wyjaśnione jak w moim przypadku poprawnie to zrobić ? Oto plik źródłowy :
 
C/C++
#include <conio.h>
#include <complex>
#include <iostream>
#include <cmath>
using namespace std;

class Zesp
{
private:
    double real;
    double imag;
public:
    Zesp( double re, double im ) { real = re; imag = im; }
    Zesp() { real = 0.0; imag = 0.0; }
    Zesp wprowadz( double, double );
    Zesp dod( Zesp z1, Zesp z2 );
    Zesp dodmac( Zesp ** AA, Zesp ** BB, int r, int c );
    void wysmac( Zesp ** mac, int r, int c );
    friend ostream & operator <<( ostream & wy, Zesp & z );
    //   friend Zesp wprowadz(double rzecz, double uroj);
   
};
//-----funkcja dodaje dwie liczby zespolone------------------
Zesp::Zesp dod( Zesp z1, Zesp z2 )
{
    Zesp zesp;
    zesp.real = z1.real + z2.real;
    zesp.imag = z1.imag + z2.imag;
    return zesp;
}

//=======================================
Zesp::ostream & operator <<( ostream & wy, Zesp & z )
{
    wy << "(" << z.real << "," << z.imag << ")";
    return wy;
}
//-----------dodawanie macierzy zespolone-----------------
Zesp::Zesp ** dodmac( Zesp ** AA, Zesp ** BB, int r, int c )
{
    Zesp ** CC;
    CC = new Zesp *[ r ];
    for( int i = 0; i < r; i++ )
         CC[ i ] = new Zesp[ c ];
   
    for( int i = 0; i < c; i++ )
    for( int j = 0; j < c; j++ )
         CC[ i ][ j ] = dod( AA[ i ][ j ], BB[ i ][ j ] );
   
    return CC;
    delete CC;
}
//========WYŚWIETLANIE MACIERZY=============
void Zesp::Zesp wysmac( Zesp ** mac, int r, int c )

{
    for( int i = 0; i < r; i++ )
    {
        //cout<<"\n ";
        for( int j = 0; j < c; j++ )
        {
            cout << "   " << mac[ i ][ j ].real << "+" << mac[ i ][ j ].imag << "i";
            //cout<<"   "<<mac[i][j];
        }
    }
    cout << endl;
}
//==========================================================
int main()
{
    int row, col;
    cout << "\n podaj wymiar macierzy row i col";
    cin >> row;
    cin >> col;
    Zesp ** A, ** B, ** C, ** D;
    A = new Zesp *[ row ];
    B = new Zesp *[ row ];
   
    for( int i = 0; i < row; i++ )
    {
        A[ i ] = new Zesp[ col ];
        B[ i ] = new Zesp[ col ];
    }
    //double re,im;
    Zesp zz( re, im );
    for( int i = 0; i < row; i++ )
    for( int j = 0; j < col; j++ )
    {
        cout << "\n podaj rzeczywista i urojona ";
        cin >> re >> im;
        zz.re; zz.im;
        zz = wprowadz( re, im );
        A[ i ][ j ] = zz;
    }
    for( int i = 0; i < row; i++ )
    for( int j = 0; j < col; j++ )
    {
        cout << "\n podaj rzeczywista i urojona ";
        cin >> re >> im;
        zz =( re, im );
        zz = wprowadz( re, im );
        B[ i ][ j ] = zz;
    }
    cout << "A=";
    wysmac( A, row, col );
    cout << "\n";
    cout << "B=";
    wysmac( B, row, col );
    cout << "\n";
    cout << "C=  " << "suma macierzy";
    C = dodmac( A, B, row, col );
    wysmac( C, row, col );
    cout << "\n";
    delete A;
    delete B;
   
    getch();
    return 0;
}
Z góry dziękuje za każdą wskazówkę .
Pozdrawiam
P-100932
DejaVu
» 2014-01-02 14:09:42
Nie wkleiłeś błędów kompilacji.
P-100935
Paja92
Temat założony przez niniejszego użytkownika
» 2014-01-02 14:32:21
24 [Error] 'Zesp::Zesp' names the constructor, not the type
33 [Error] 'ostream' in 'class Zesp' does not name a type
39 [Error] 'Zesp::Zesp' names the constructor, not the type
52 [Error] expected initializer before 'wysmac'
Przepraszam za pominięcie :)
P-100939
kampar
» 2014-01-02 14:47:15
powtórz sobie definiowanie metod klasy. Np. zamiast
Zesp::Zesp dod
 powinno być
Zesp Zesp::dod
P-100941
Paja92
Temat założony przez niniejszego użytkownika
» 2014-01-02 16:14:19
Faktycznie działa natomiast Twoja podpowiedź nic mi nie daje niestety. Ale bardzo dziękuję :) są tylko dwa już :
39 [Error] expected initializer before '*' token
52 [Error] expected initializer before 'Zesp'
P-100951
pekfos
» 2014-01-02 16:16:26
Jak wyżej. Zamiast
Zesp::Zesp ** dodmac
, ma być
Zesp ** Zesp::dodmac
.
P-100952
Paja92
Temat założony przez niniejszego użytkownika
» 2014-01-02 21:36:24
Dziękuje bardzo za pomoc :) dalej są błędy ale innego typu już może sobie z nimi poradzę :)
P-100995
« 1 »
  Strona 1 z 1