[C++] Klasa reprezentująca macierz

tomek1995
Użytkownik
Użytkownik
Posty: 11
Rejestracja: 12 kwie 2015, o 15:51
Płeć: Mężczyzna
Lokalizacja: Bydgoscz

[C++] Klasa reprezentująca macierz

Post autor: tomek1995 »

Witam musze zrobić takie coś.Czy macie jakiś pomysł jak to zrobić?

konstruktor domyślny - można zastąpić następnym
konstruktor z dwoma parametrami
konstruktor kopiujący
destruktor

metoda wypelnijZerami
metoda wypelnijJedynkami
metoda wypelnijLosowo
metoda wyswietl
Ostatnio zmieniony 12 kwie 2015, o 16:14 przez Afish, łącznie zmieniany 1 raz.
Powód: Staraj się lepiej dobierać nazwy tematów, tak by wskazywały o czym jest treść zadania.
bartek118
Użytkownik
Użytkownik
Posty: 5965
Rejestracja: 28 lut 2010, o 19:45
Płeć: Mężczyzna
Lokalizacja: Toruń
Podziękował: 15 razy
Pomógł: 1251 razy

[C++] Klasa reprezentująca macierz

Post autor: bartek118 »

W czym problem?
Macierz możesz trzymać jako tablicę dwuwymiarową.
tomek1995
Użytkownik
Użytkownik
Posty: 11
Rejestracja: 12 kwie 2015, o 15:51
Płeć: Mężczyzna
Lokalizacja: Bydgoscz

[C++] Klasa reprezentująca macierz

Post autor: tomek1995 »

no jest taki problem,że mam podanego maina

Kod: Zaznacz cały

cout<<"macierze"<<endl;
        Macierz i(2,3);
        Macierz j(2,3);
        Macierz k(3,2);

        Macierz macierz(-1,0);
        macierz.wyswietl();

        i.wypelnijJedynkami();
        j.wypelnijJedynkami();
        k.wypelnijJedynkami();


        //wyswietl powinna byc metoda const
        (i+j).wyswietl();
        (i-j+i).wyswietl();

        i=j;
        j+=i;

        j.wyswietl();
        i.wyswietl();
        (i*k).wyswietl();

        cout<<"Złe wymiary"<<endl;
        (k*k).wyswietl();


        cout<<"Macierz losowa"<<endl;
        i.wypelnijLosowo();
        i.wyswietl();

        cout<<"Błąd alokacji"<<endl;
        Macierz m(1000000,1000000);
        m.wyswietl();

        return 0;
i do niego muszę zrobić dwa pliki macierz.h macierz.cpp ale nie mam pojecia co do czego ;/
Ostatnio zmieniony 12 kwie 2015, o 16:58 przez bartek118, łącznie zmieniany 1 raz.
Powód: Kod umieszczaj w tagach [code]
bartek118
Użytkownik
Użytkownik
Posty: 5965
Rejestracja: 28 lut 2010, o 19:45
Płeć: Mężczyzna
Lokalizacja: Toruń
Podziękował: 15 razy
Pomógł: 1251 razy

[C++] Klasa reprezentująca macierz

Post autor: bartek118 »

Zacznij od stworzenia klasy Macierz
tomek1995
Użytkownik
Użytkownik
Posty: 11
Rejestracja: 12 kwie 2015, o 15:51
Płeć: Mężczyzna
Lokalizacja: Bydgoscz

[C++] Klasa reprezentująca macierz

Post autor: tomek1995 »

Kod: Zaznacz cały

class Macierz
{
private:
    int m;
    int n;
    double**tablica
    
public:
    Macierz();
    Macierz(int _m);
    Macierz(int m);
    Macierz(int n);
    
    
};
zacząłem takie coś czy to wogóle jest zgodne do tego mojego maina jest sens dalej robić czy już początek zły? i to będzie w tym pliku macierz.h
Ostatnio zmieniony 12 kwie 2015, o 18:43 przez bartek118, łącznie zmieniany 1 raz.
Powód: Ponownie: kod umieszczaj w tagach!
bartek118
Użytkownik
Użytkownik
Posty: 5965
Rejestracja: 28 lut 2010, o 19:45
Płeć: Mężczyzna
Lokalizacja: Toruń
Podziękował: 15 razy
Pomógł: 1251 razy

[C++] Klasa reprezentująca macierz

Post autor: bartek118 »

Konstruktory są źle zrobione. Ma być bezargumentowy Macierz() i dwuargumentowy Macierz(int _n, int _m)
gryxon
Użytkownik
Użytkownik
Posty: 311
Rejestracja: 30 gru 2011, o 02:21
Płeć: Mężczyzna
Lokalizacja: Puławy
Podziękował: 11 razy
Pomógł: 53 razy

[C++] Klasa reprezentująca macierz

Post autor: gryxon »

bartek118 pisze:Konstruktory są źle zrobione. Ma być bezargumentowy Macierz() i dwuargumentowy Macierz(int _n, int _m)
Jako, że operujemy na tablicy alokowanej dynamicznie to przydałby się także konstruktor kopiujący.
W pliku .h powinny być deklaracje metod itp, natomiast w pliku .cpp ich implementacje.
tomek1995
Użytkownik
Użytkownik
Posty: 11
Rejestracja: 12 kwie 2015, o 15:51
Płeć: Mężczyzna
Lokalizacja: Bydgoscz

[C++] Klasa reprezentująca macierz

Post autor: tomek1995 »

Kod: Zaznacz cały

class Macierz
{
Macierz(int x, int y);
Macierz(const Macierz&);
Macierz& operator=(Macierz&);
Macierz& operator+(Macierz&);
Macierz& operator-(Macierz&);
Macierz& operator*(Macierz&);
Macierz& operator*(int);
Macierz& operator+=(Macierz&);
Macierz& operator-=(Macierz&);
void wyswietl();
void wypelnijJedynakmi();
void wypelnijLosowo();
~Macierz();
};
W pliku macierz.h powinno być takie coś żeby się zgadzało czy jescze coś mam dopisac?
bartek118
Użytkownik
Użytkownik
Posty: 5965
Rejestracja: 28 lut 2010, o 19:45
Płeć: Mężczyzna
Lokalizacja: Toruń
Podziękował: 15 razy
Pomógł: 1251 razy

[C++] Klasa reprezentująca macierz

Post autor: bartek118 »

Wygląda na to, że tak.
tomek1995
Użytkownik
Użytkownik
Posty: 11
Rejestracja: 12 kwie 2015, o 15:51
Płeć: Mężczyzna
Lokalizacja: Bydgoscz

[C++] Klasa reprezentująca macierz

Post autor: tomek1995 »

Kod: Zaznacz cały

#include "macierz.h"
#include "liczbazespolona.h"
#include <iostream>

using namespace std;

Macierz::~Macierz()
{
    LiczbaZespolona=new double*[x];
    for (int i=0;i<x;i++)
    {
        LiczbaZespolona[i]=new double[y];
        for(int j=0;j<y;j++)
            LiczbaZespolona[i][j]=i*x+j+1;
    }
}

void Macierz::wyswietl()
{
    for(int i=0;i<x;i++)
    {
        for(int j=0;j<x;j++)
            cout<<LiczbaZespolona[i][j]<<"	";
        cout<<endl;
    }

}
Macierz::~Macierz()
{
    for(int i=0;i<x;i++)
    delete []LiczbaZespolona[i];
    delete []LiczbaZespolona;
}


w pliku macierz.cpp mam taki kod pomożecie to dokończyć,żeby było dobrze i się zgadzało z moim mainem i plikiem macierz.h-- 14 kwi 2015, o 18:47 --

Kod: Zaznacz cały

Macierz::Macierz(const Macierz& a):
{
    for(int i=0;i<m;i++)
    {
        for(int j=0;j<n;j++)
        {
            LiczbaZespolona[i][j] = LiczbaZespolona[i][j];
        }
    }
    Macierz::Macierz(int x, int y)
    {
    m=x;
    n=y;
    tablica=new double*[m];
    for(int i =0 ; i<n;i++)
     t[i]=new double[m];
    for (int i=0;i<n;i++)
     for(int j=0; j<m;j++)
      t[i][j]=0;
    }
konstruktor kopiujący i operator przypisania czy tak ma wyglądać?
ODPOWIEDZ