GRY-Online.pl --> Archiwum Forum

jak zrobic macierz w c++?

27.03.2003
09:41
[1]

mallekith [ Centurion ]

jak zrobic macierz w c++?

wlasnie, jak to zrobic? robie tak, np:
main() ‹

int macierz[3][3]; //tu bedzie macierz 3x3 ?
...
macierz[1][2]=1; //1 - wiersz, 2 - kolumna ?
...
cout << macierz[1][2]; // jezeli w sposub jw. podstawiam do macierzy jakies wartosci, to on mi zwraca czasmi jakies glupoty... ?

27.03.2003
09:46
[2]

mallekith [ Centurion ]

w sposob oczywiscie... :))) bed za 2-3 godziny, mam nadizeje ze do tego czasu moj problem bedzie rozwiazany :)) oby... :) fajnie by bylo

27.03.2003
09:46
[3]

Eliash [ Generaďż˝ ]

mallekith -->
int maciez[3][3] tworzy tablice dwuwymiarową, można to uznać za macierz.
Musisz pamięteć że indeksacja w C/C++ zawsze zaczyna się od zera,
Czyli cout << maciez[3][3] zwróci krzaczki. Używaj 0,1,2 dla odpowiednio 1 2 3 kolumny/wiersza
Innej przyczyny błędów nie widzę ...


27.03.2003
09:52
[4]

mallekith [ Centurion ]

int macierz[2][2];
int i,j;
macierz[0][0]=1;
macierz[0][1]=2;
macierz[0][2]=3;
macierz[1][0]=4;
macierz[1][1]=5;
macierz[1][2]=6;
macierz[2][0]=7;
macierz[2][1]=8;
macierz[2][2]=9;

for(i=0; i<3; i++)‹
for(j=0; j<3; j++)‹
cout <<"\t" << macierz[j] << "\t";

cout << "\n";


teraz zamiast 3 wypisuje 4 i zamast 6 wypisuje 7

27.03.2003
09:54
[5]

mallekith [ Centurion ]

jeszcze raz petla, bo cos sie skopalo :)
zamiast i bedzie k
for(i=0;k<3;i++)‹
for(j=0;j<3;j++)‹
cout <<"\t" << macierz[k][j] << "\t";

cout << "\n";

27.03.2003
10:00
[6]

Eliash [ Generaďż˝ ]

mallekith -->
Popatrz na początek tego programu
int maciez[2][2]

oznacza to ze tworzysz tablice skladającą się z CZTERECH elementow
w C indeksuje się OD ZERA czyli oby "dobrać się" do pierwszego elementu
uzyj indeksu 0, do drugiego indeksu 1. Inteks 2 spowoduje błąd.
Zeby program zadzialal zmiań na
int maciez[3][3]

27.03.2003
14:10
[7]

mallekith [ Centurion ]

ok, to juz mam. a teraz, jak najszybciej podstawic pod wszystkie wartosci obiektu typu
class macierz ‹
int wiersz1[3];
int wiersz2[3];
int wiersz3[3];


najszybciej podstwaic pd kjakastam macierz pozniej np. zera?

27.03.2003
14:15
[8]

Eliash [ Generaďż˝ ]

mallekith   --> Jesli to jest jakieś zaliczenie, to oblejesz :]

for (int i=;1 i<3; i++)

wiersz1 = 0;
wiersz2 = 0;
wiersz2 = 0;
›;

Jeżeli Twoim zadanie jest napisanie klasy przedstawiającej macierz to nie tędy droga. :)

27.03.2003
14:27
[9]

mallekith [ Centurion ]

no miedzy innymi napisanie klasy macierz z dodawaniem i mnozeniem. jezeli mowisz ze mam zle, to moze mi podpowiesz? bo ja nie mam innego pomysla :)

27.03.2003
14:49
smile
[10]

Eliash [ Generaďż˝ ]

Już zapomniałęm operacje na macierzach :)
dodawane musiały mieć takie same rozmiary, a mnozone
"odwrotne" ? Dobrze pamiętam ?

27.03.2003
15:03
[11]

mallekith [ Centurion ]

dzieki, juz zrobilem, jak chcesz zobaczyc jak to wychodzi, to moge ci wyslac na maila :)) ale dalem rade :D

27.03.2003
15:11
smile
[12]

Eliash [ Generaďż˝ ]

#include <stdio.h>
class CMacierz

private:
int *_tablica;
unsigned int MatrixSize;
unsigned int Cols, Rows;
CMacierz(const unsigned int wiersze, const unsigned int kolumny, int dane1[], int dane2[]);
public:
CMacierz(const unsigned int wiersze, const unsigned int kolumny);
~CMacierz();
int &Element(unsigned int, unsigned int);
CMacierz operator+(CMacierz);
CMacierz operator*(CMacierz);
›;

CMacierz::CMacierz (const unsigned int wiersze, const unsigned int kolumny)

MatrixSize = wiersze * kolumny;
Cols = kolumny;
Rows = wiersze;
_tablica = new int[MatrixSize];
for (unsigned int i=0; i<MatrixSize; i++)
_tablica = 0;
›;

CMacierz::~CMacierz()

delete [] _tablica;
›;

int &CMacierz::Element(unsigned int wiersz, unsigned int kolumna)

return _tablica[wiersz*kolumna];
›;

CMacierz::CMacierz(const unsigned int wiersze, const unsigned int kolumny, int dane1[], int dane2[])

MatrixSize = wiersze * kolumny;
Cols = kolumny;
Rows = wiersze;
_tablica = new int[MatrixSize];
for (unsigned int i=0; i<MatrixSize; i++)

_tablica = dane1 + dane2;
›;
›;
CMacierz CMacierz::operator+(CMacierz _macierz)

if (_macierz.Cols != Cols || _macierz.Rows != Rows )

// Tu powinien być wywołąny wyjątek
›;
return CMacierz(Rows, Cols, _tablica, _macierz._tablica);
›;
void main()

CMacierz macierz(3,3);
CMacierz macierz2(3,3);
macierz.Element(1, 1) = 3;
CMacierz macierz3 = macierz + macierz2;
printf(" wartosc: %d", macierz3.Element(1, 1));
›;


/*
Napisałem ta klase w 15 minut, ma pewnie mnostwo błędów
Pozostało Ci zrobienie mnożenia macierzy, robi się to
bardzo podobnie jak dodawanie, mysle że zobie poradzisz :)
Oczywiście możesz tu jeszcze duzo rzeczy zmienic/poprawic
nie zastrzegam sobie do tego "kodu" praw autorskich :)
*/

© 2000-2025 GRY-OnLine S.A.