wragler Opublikowano 13 Stycznia 2006 Zgłoś Opublikowano 13 Stycznia 2006 Witam mam klopot z przeladowaniem takiego operatora. Chcialbym to zorbic w programie zajmoujacym sie macierzami. Tzn ze zamiast podawac np. tab[1][0] to bym mogl wpisac tab(1,0). Probowalem juz np. macierz operator(int x,int y)(&macierz) ale w sumie nie wiem jak to zorbic aby dobrze dzialalo. I mam jeszcze jedno pytanie jak w c++ czytac z pliku zawierajacego liczby oddzielone spacjami i wczytywac je do tablicy i jak je zapisaywac od pliku. Z gory dziekuje Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
PelzaK Opublikowano 13 Stycznia 2006 Zgłoś Opublikowano 13 Stycznia 2006 a czy musisz przeciążać operator? Nawet nie wiem czy się da przeciażyć nawiasy... bo one są chyab zastrzeżeone do funkcji.. ale mogę sie mylić :) Ja nigdy nic nie przeciążałem (no moze pare razy), bez tego spokojnie można zyć :) jak wczytać... za pomocą istream.. korzystając z przeciazonego operatora >> Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Gość Opublikowano 13 Stycznia 2006 Zgłoś Opublikowano 13 Stycznia 2006 a czy musisz przeciążać operator? Nawet nie wiem czy się da przeciażyć nawiasy... bo one są chyab zastrzeżeone do funkcji.. ale mogę sie mylić :)Masz do tego prawo i wlasnie z niego skorzystales :) Ja nigdy nic nie przeciążałem (no moze pare razy), bez tego spokojnie można zyć :)Podobnie jak bez samochodow i wielu innych rzeczy, a jednak one ulatwiaja zycie. Przeciazenie operatora () powinno wygladac mniej wiecej tak: int operator() (int x, int y) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
wragler Opublikowano 13 Stycznia 2006 Zgłoś Opublikowano 13 Stycznia 2006 A jak zrobic zeby te int x i int y wskazywaly mi na odpowiednie elemety tablicy tab[3][3]??? Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Gość Opublikowano 13 Stycznia 2006 Zgłoś Opublikowano 13 Stycznia 2006 W tym operatorze mozesz sie odwolywac przez this do obiektu, wiec jesli masz jako pole ta tablice to sie po prostu do niej odwolaj. Wypadalo by tylko najpierw sprawdzic czy indexy nie przekraczaja dozwolonych wartosci. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
wragler Opublikowano 13 Stycznia 2006 Zgłoś Opublikowano 13 Stycznia 2006 O to mi w sumie chodzilo.Ale jak zrobic abym mogl si eodwolywac poprzez ten operator do poszczegolnych eleemtow tablicy. Np wprowadzam tab(2,1) i automatycznie odwoluje sie do tab[2][1], zeby np go zmienic albo poporstu wproadzic. I czy jak przeladuje ten operator to bede mogl go uzywac np w przeladowanich innych operatorow.Chodzi mi o to czy zamisat np w operatorze dodawania tab[1][1]*macierz.tab[1][2] zrobic tab(1,1)+macierz.tab(1,2). O takie cos mi chodzi. A oto kod mojego niedokonczonego programu: #include <iostream.h>class macierz{ int tab[3][3]; //static ileMacierzy;public: macierz operator+(macierz &); macierz operator-(macierz &); macierz operator*(macierz &); int operator&(); macierz() {} macierz(int); ~macierz() {} void wyswietl(){ cout<<"Macierz: "<<endl<<endl; cout<<" | "<<tab[0][0]<<"; "<<tab[0][1]<<"; "<<tab[0][2]<<" | "<<endl<<" | "<<tab[1][0]<<"; "<<tab[1][1]<<"; "<<tab[1][2]<<" | "<<endl<<" | "<<tab[2][0]<<"; "<<tab[2][1]<<"; "<<tab[2][2]<<"|"<<endl; }macierz odwr(){macierz b;tab[0][0]=-1*tab[0][0];return b;}};//macierz.ileMacierzy = 0;// kostruktormacierz::macierz(int i) { cout << "Tworzymy macierz: " << endl; int n; for(i =0;i<3;i++) { for(int j=0;j<3;j++) { cout << "Podaj [" << i << "][" << j << "] "; cin >> n; tab[i][j]=n; if (j==2 && i == 2) break; } }}// prezladowanie operatoramacierz macierz::operator +(macierz &dodaj) { macierz tym; tym.tab[0][0] = dodaj.tab[0][0] + tab[0][0]; tym.tab[0][1] = dodaj.tab[0][1] + tab[0][1]; tym.tab[0][2] = dodaj.tab[0][2] + tab[0][2]; tym.tab[1][0] = dodaj.tab[1][0] + tab[1][0]; tym.tab[1][1] = dodaj.tab[1][1] + tab[1][1]; tym.tab[1][2] = dodaj.tab[1][2] + tab[1][2]; tym.tab[2][0] = dodaj.tab[2][0] + tab[2][0]; tym.tab[2][1] = dodaj.tab[2][1] + tab[2][1]; tym.tab[2][2] = dodaj.tab[2][2] + tab[2][2]; return tym;}macierz macierz::operator -(macierz &odejmij) { macierz tym; tym.tab[0][0] = odejmij.tab[0][0] - tab[0][0]; tym.tab[0][1] = odejmij.tab[0][1] - tab[0][1]; tym.tab[0][2] = odejmij.tab[0][2] - tab[0][2]; tym.tab[1][0] = odejmij.tab[1][0] - tab[1][0]; tym.tab[1][1] = odejmij.tab[1][1] - tab[1][1]; tym.tab[1][2] = odejmij.tab[1][2] - tab[1][2]; tym.tab[2][0] = odejmij.tab[2][0] - tab[2][0]; tym.tab[2][1] = odejmij.tab[2][1] - tab[2][1]; tym.tab[2][2] = odejmij.tab[2][2] - tab[2][2]; return tym;}macierz macierz::operator *(macierz &mnoz){macierz tym;tym.tab[0][0]=mnoz.tab[0][0]*tab[0][0]+mnoz.tab[0][1]*tab[1][0]+mnoz.tab[0][2]*tab[2][0];tym.tab[0][1]=mnoz.tab[0][0]*tab[0][1]+mnoz.tab[0][1]*tab[1][1]+mnoz.tab[0][2]*tab[2][1];tym.tab[0][2]=mnoz.tab[0][0]*tab[0][2]+mnoz.tab[0][1]*tab[1][2]+mnoz.tab[0][2]*tab[2][2];tym.tab[1][0]=mnoz.tab[1][0]*tab[0][0]+mnoz.tab[1][1]*tab[1][0]+mnoz.tab[1][2]*tab[2][0];tym.tab[1][1]=mnoz.tab[1][0]*tab[0][1]+mnoz.tab[1][1]*tab[1][1]+mnoz.tab[1][2]*tab[2][1];tym.tab[1][2]=mnoz.tab[1][0]*tab[0][2]+mnoz.tab[1][1]*tab[1][2]+mnoz.tab[1][2]*tab[2][2];tym.tab[2][0]=mnoz.tab[2][0]*tab[0][0]+mnoz.tab[2][1]*tab[1][0]+mnoz.tab[2][2]*tab[2][0];tym.tab[2][1]=mnoz.tab[2][0]*tab[0][1]+mnoz.tab[2][1]*tab[1][1]+mnoz.tab[2][2]*tab[2][1];tym.tab[2][2]=mnoz.tab[2][0]*tab[0][2]+mnoz.tab[2][1]*tab[1][2]+mnoz.tab[2][2]*tab[2][2];return tym;}int macierz::operator&(){ int tym; tym=tab[0][0]*tab[1][1]*tab[2][2]-tab[0][0]*tab[1][2]*tab[2][1]-tab[0][1]*tab[1][0]*tab[2][2]+tab[0][1]*tab[1][2]*tab[2][0]+tab[0][2]*tab[1][0]*tab[2][1]-tab[0][2]*tab[1][1]*tab[2][0]; return tym;}void main(void){ macierz tab1(1),tab2(1),tab3,b; int a; tab1.wyswietl(); tab2.wyswietl(); tab3=tab1+tab2; a=&tab1; cout<<"Wyznacznik "<<a<<endl; tab3.wyswietl(); tab1.wyswietl(); tab3=tab1*tab2; tab3.wyswietl(); ;} Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Gość Opublikowano 14 Stycznia 2006 Zgłoś Opublikowano 14 Stycznia 2006 (edytowane) Ale jak zrobic abym mogl si eodwolywac poprzez ten operator do poszczegolnych eleemtow tablicy. Np wprowadzam tab(2,1) i automatycznie odwoluje sie do tab[2][1], zeby np go zmienic albo poporstu wproadzic.Jak zwrocisz w tym przeladowaniu referencje to bedziesz mogl modyfikowac wartosc poprzez tab(2,1) = 13 I czy jak przeladuje ten operator to bede mogl go uzywac np w przeladowanich innych operatorow.Chodzi mi o to czy zamisat np w operatorze dodawania tab[1][1]*macierz.tab[1][2] zrobic tab(1,1)+macierz.tab(1,2).Jak najbardziej. Co do kodu.. slyszales kiedys o petlach? Bo te funkcje do operacji na macierzy to sa tak napisane, ze lepiej tego nikomu nie pokazuj. Edytowane 14 Stycznia 2006 przez FiDO Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
wragler Opublikowano 14 Stycznia 2006 Zgłoś Opublikowano 14 Stycznia 2006 A moglbym prosic o przyklad tego przeladowani z referencja?? Pozdrawiam Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
wragler Opublikowano 14 Stycznia 2006 Zgłoś Opublikowano 14 Stycznia 2006 Zrobilem te dodawani w funkcji ale cos jest nie tak. Nie mam pojecia dlaczego mi pisze ze nie zadeklarowalem zmiennej j. I wogole nie dziala te dodawania.Tzn w programie nic sie ni ewyswietla. macierz macierz::operator+(macierz &dodaj){ macierz tym; for(int i=0;i<3;j++){ for(int j=0;j<3;j++){ tym.tab[i][j]=dodaj.tab[i][j]+tab[i][j]; //if(j==2&&i==2) // break;}}return tym;} Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Gość Opublikowano 14 Stycznia 2006 Zgłoś Opublikowano 14 Stycznia 2006 A moglbym prosic o przyklad tego przeladowani z referencja?? Pozdrawiam Jasne: #include <iostream>using namespace std;class Test{ int tab[3][3];public: Test() { for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { tab[i][j] = 0; } } } int& operator() (int i, int j) { if (i > 2 || j > 2) { throw (char*)"Zly indeks"; } return this->tab[i][j]; } void operator() () { for (int i = 0; i < 3; i++) { for (int j = 0;j < 3;j++ ) { cout << "["<< i << "," << j << "] = " << this->operator() (i, j) << endl; } } }};int main(){ Test test; cout << "test\n"; try { test(0, 0) = 1; test(2, 2) = 3; test(1, 1) = 10; test(3, 3) = 99; } catch (char * str) { cout << "Nastapil wyjatek: " << str << endl; } test(); return 0;} Zrobilem te dodawani w funkcji ale cos jest nie tak. Nie mam pojecia dlaczego mi pisze ze nie zadeklarowalem zmiennej j. I wogole nie dziala te dodawania.Tzn w programie nic sie ni ewyswietla.Konkretny komunikat bledu podaj. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
wragler Opublikowano 14 Stycznia 2006 Zgłoś Opublikowano 14 Stycznia 2006 error C2065: 'j' : undeclared identifier - taki jest komunikat. A dziwne bo w miejscu wywolania tego dodawania program sie zawiesza. Czy cos jest z tym dodawaniem nie tak bo jak n amje oko to powinna byc dobrze. Tzn program sie odpala jak zadeklaruje zmienna int j; w tym dodawaniu ale juz naprawde nie wiem jak to zoribc. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Gość Opublikowano 14 Stycznia 2006 Zgłoś Opublikowano 14 Stycznia 2006 Wystaw gdzies caly plik zrodlowy w takiej wersji, ze rzuca tym bledem, zobacze u siebie. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
wragler Opublikowano 14 Stycznia 2006 Zgłoś Opublikowano 14 Stycznia 2006 To jest ta wersja z gdzie poajwia si eblad przy zmiennej j #include <iostream.h>#include<iomanip>#include<string.h>using namespace std;class macierz{ int tab[3][3]; //static ileMacierzy;public: macierz operator+(macierz &); macierz operator-(macierz &); macierz operator*(macierz &); macierz operator|(macierz &); int &operator()(int i,int j); int operator&(); void trojkat(); macierz() {} macierz(int); ~macierz() {} void wyswietl(char _co[20]){ char co[20]; strcpy(co,_co); cout<<co<<endl; for(int i=0;i<3;i++,cout<<endl) for(int j=0;j<3;j++) cout<<tab[i][j]<<";"; cout<<endl;}};//macierz.ileMacierzy = 0;// kostruktormacierz::macierz(int i) { cout << "Tworzymy "<<i<<" macierz: " << endl; int n; for(i =0;i<3;i++) { for(int j=0;j<3;j++) { cout << "Podaj [" << i << "][" << j << "] "; cin >> n; tab[i][j]=n; if (j==2 && i == 2) break; } }}macierz macierz::operator+(macierz &dodaj){ macierz tym; for(int i=0;i<3;j++){ for(int j=0;j<3;j++){ tym.tab[i][j]=dodaj.tab[i][j]+tab[i][j]; if(j==2&&i==2) break;}}return tym;}// prezladowanie operatora/*macierz macierz::operator +(macierz &dodaj) { macierz tym; tym.tab[0][0] = dodaj.tab[0][0] + tab[0][0]; tym.tab[0][1] = dodaj.tab[0][1] + tab[0][1]; tym.tab[0][2] = dodaj.tab[0][2] + tab[0][2]; tym.tab[1][0] = dodaj.tab[1][0] + tab[1][0]; tym.tab[1][1] = dodaj.tab[1][1] + tab[1][1]; tym.tab[1][2] = dodaj.tab[1][2] + tab[1][2]; tym.tab[2][0] = dodaj.tab[2][0] + tab[2][0]; tym.tab[2][1] = dodaj.tab[2][1] + tab[2][1]; tym.tab[2][2] = dodaj.tab[2][2] + tab[2][2]; return tym;}*/macierz macierz::operator -(macierz &odejmij) { macierz tym; tym.tab[0][0] = odejmij.tab[0][0] - tab[0][0]; tym.tab[0][1] = odejmij.tab[0][1] - tab[0][1]; tym.tab[0][2] = odejmij.tab[0][2] - tab[0][2]; tym.tab[1][0] = odejmij.tab[1][0] - tab[1][0]; tym.tab[1][1] = odejmij.tab[1][1] - tab[1][1]; tym.tab[1][2] = odejmij.tab[1][2] - tab[1][2]; tym.tab[2][0] = odejmij.tab[2][0] - tab[2][0]; tym.tab[2][1] = odejmij.tab[2][1] - tab[2][1]; tym.tab[2][2] = odejmij.tab[2][2] - tab[2][2]; return tym;}macierz macierz::operator *(macierz &mnoz){macierz tym;tym.tab[0][0]=mnoz.tab[0][0]*tab[0][0]+mnoz.tab[0][1]*tab[1][0]+mnoz.tab[0][2]*tab[2][0];tym.tab[0][1]=mnoz.tab[0][0]*tab[0][1]+mnoz.tab[0][1]*tab[1][1]+mnoz.tab[0][2]*tab[2][1];tym.tab[0][2]=mnoz.tab[0][0]*tab[0][2]+mnoz.tab[0][1]*tab[1][2]+mnoz.tab[0][2]*tab[2][2];tym.tab[1][0]=mnoz.tab[1][0]*tab[0][0]+mnoz.tab[1][1]*tab[1][0]+mnoz.tab[1][2]*tab[2][0];tym.tab[1][1]=mnoz.tab[1][0]*tab[0][1]+mnoz.tab[1][1]*tab[1][1]+mnoz.tab[1][2]*tab[2][1];tym.tab[1][2]=mnoz.tab[1][0]*tab[0][2]+mnoz.tab[1][1]*tab[1][2]+mnoz.tab[1][2]*tab[2][2];tym.tab[2][0]=mnoz.tab[2][0]*tab[0][0]+mnoz.tab[2][1]*tab[1][0]+mnoz.tab[2][2]*tab[2][0];tym.tab[2][1]=mnoz.tab[2][0]*tab[0][1]+mnoz.tab[2][1]*tab[1][1]+mnoz.tab[2][2]*tab[2][1];tym.tab[2][2]=mnoz.tab[2][0]*tab[0][2]+mnoz.tab[2][1]*tab[1][2]+mnoz.tab[2][2]*tab[2][2];return tym;}int macierz::operator&(){ int tym; tym=tab[0][0]*tab[1][1]*tab[2][2]-tab[0][0]*tab[1][2]*tab[2][1]-tab[0][1]*tab[1][0]*tab[2][2]+tab[0][1]*tab[1][2]*tab[2][0]+tab[0][2]*tab[1][0]*tab[2][1]-tab[0][2]*tab[1][1]*tab[2][0]; return tym;}int& macierz::operator()(int i,int j){ return this->tab[i][j];}void main(void){ macierz tab1(1),tab2(2),tab3,b; int a,c; tab1.wyswietl("Macierz"); tab2.wyswietl("Macierz"); tab3=tab1+tab2; a=&tab1; cout<<"Wyznacznik "<<a<<endl; tab3.wyswietl("Suma"); tab1.wyswietl("Macierz"); tab3=tab1*tab2; tab3.wyswietl("Iloczyn"); c=tab1(0,0)+tab2(1,1); cout<<c; }A to jest wersja taka jak chcialbym zeby chodzilo tylko ze dla wszsytkich nawiasow kawdratowych zeby je zastapic przeladowanym operatorem. w tym kodzie tylko w jednym miejscu to zrobilm i wyskakuje blad. #include <iostream.h>#include<iomanip>#include<string.h>using namespace std;class macierz{ int tab[3][3]; //static ileMacierzy;public: macierz operator+(macierz &); macierz operator-(macierz &); macierz operator*(macierz &); macierz operator|(macierz &); int &operator()(int i,int j); int operator&(); void trojkat(); macierz() {} macierz(int); ~macierz() {} void wyswietl(char _co[20]){ char co[20]; strcpy(co,_co); cout<<co<<endl; for(int i=0;i<3;i++,cout<<endl) for(int j=0;j<3;j++) cout<<tab[i][j]<<";"; cout<<endl;}};//macierz.ileMacierzy = 0;// kostruktormacierz::macierz(int i) { cout << "Tworzymy "<<i<<" macierz: " << endl; int n; for(i =0;i<3;i++) { for(int j=0;j<3;j++) { cout << "Podaj [" << i << "][" << j << "] "; cin >> n; tab[i][j]=n; if (j==2 && i == 2) break; } }}macierz macierz::operator+(macierz &dodaj){ macierz tym; for(int i=0;i<3;j++){ for(int j=0;j<3;j++){ tym.tab[i][j]=dodaj.tab[i][j]+tab[i][j]; if(j==2&&i==2) break;}}return tym;}// prezladowanie operatora/*macierz macierz::operator +(macierz &dodaj) { macierz tym; tym.tab(0,0) = dodaj.tab(0,0) + tab(0,0);//tak wlasnie chialbym aby to wszsytko dzialalo tym.tab[0][1] = dodaj.tab[0][1] + tab[0][1]; tym.tab[0][2] = dodaj.tab[0][2] + tab[0][2]; tym.tab[1][0] = dodaj.tab[1][0] + tab[1][0]; tym.tab[1][1] = dodaj.tab[1][1] + tab[1][1]; tym.tab[1][2] = dodaj.tab[1][2] + tab[1][2]; tym.tab[2][0] = dodaj.tab[2][0] + tab[2][0]; tym.tab[2][1] = dodaj.tab[2][1] + tab[2][1]; tym.tab[2][2] = dodaj.tab[2][2] + tab[2][2]; return tym;}*/macierz macierz::operator -(macierz &odejmij) { macierz tym; tym.tab[0][0] = odejmij.tab[0][0] - tab[0][0]; tym.tab[0][1] = odejmij.tab[0][1] - tab[0][1]; tym.tab[0][2] = odejmij.tab[0][2] - tab[0][2]; tym.tab[1][0] = odejmij.tab[1][0] - tab[1][0]; tym.tab[1][1] = odejmij.tab[1][1] - tab[1][1]; tym.tab[1][2] = odejmij.tab[1][2] - tab[1][2]; tym.tab[2][0] = odejmij.tab[2][0] - tab[2][0]; tym.tab[2][1] = odejmij.tab[2][1] - tab[2][1]; tym.tab[2][2] = odejmij.tab[2][2] - tab[2][2]; return tym;}macierz macierz::operator *(macierz &mnoz){macierz tym;tym.tab[0][0]=mnoz.tab[0][0]*tab[0][0]+mnoz.tab[0][1]*tab[1][0]+mnoz.tab[0][2]*tab[2][0];tym.tab[0][1]=mnoz.tab[0][0]*tab[0][1]+mnoz.tab[0][1]*tab[1][1]+mnoz.tab[0][2]*tab[2][1];tym.tab[0][2]=mnoz.tab[0][0]*tab[0][2]+mnoz.tab[0][1]*tab[1][2]+mnoz.tab[0][2]*tab[2][2];tym.tab[1][0]=mnoz.tab[1][0]*tab[0][0]+mnoz.tab[1][1]*tab[1][0]+mnoz.tab[1][2]*tab[2][0];tym.tab[1][1]=mnoz.tab[1][0]*tab[0][1]+mnoz.tab[1][1]*tab[1][1]+mnoz.tab[1][2]*tab[2][1];tym.tab[1][2]=mnoz.tab[1][0]*tab[0][2]+mnoz.tab[1][1]*tab[1][2]+mnoz.tab[1][2]*tab[2][2];tym.tab[2][0]=mnoz.tab[2][0]*tab[0][0]+mnoz.tab[2][1]*tab[1][0]+mnoz.tab[2][2]*tab[2][0];tym.tab[2][1]=mnoz.tab[2][0]*tab[0][1]+mnoz.tab[2][1]*tab[1][1]+mnoz.tab[2][2]*tab[2][1];tym.tab[2][2]=mnoz.tab[2][0]*tab[0][2]+mnoz.tab[2][1]*tab[1][2]+mnoz.tab[2][2]*tab[2][2];return tym;}int macierz::operator&(){ int tym; tym=tab[0][0]*tab[1][1]*tab[2][2]-tab[0][0]*tab[1][2]*tab[2][1]-tab[0][1]*tab[1][0]*tab[2][2]+tab[0][1]*tab[1][2]*tab[2][0]+tab[0][2]*tab[1][0]*tab[2][1]-tab[0][2]*tab[1][1]*tab[2][0]; return tym;}int& macierz::operator()(int i,int j){ return this->tab[i][j];}void main(void){ macierz tab1(1),tab2(2),tab3,b; int a,c; tab1.wyswietl("Macierz"); tab2.wyswietl("Macierz"); tab3=tab1+tab2; a=&tab1; cout<<"Wyznacznik "<<a<<endl; tab3.wyswietl("Suma"); tab1.wyswietl("Macierz"); tab3=tab1*tab2; tab3.wyswietl("Iloczyn"); c=tab1(0,0)+tab2(1,1); cout<<c; } Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Gość Opublikowano 14 Stycznia 2006 Zgłoś Opublikowano 14 Stycznia 2006 Ech... trzeba patrzec w ktorej linii jest blad. Odrazu po tym doszedlem, ze w pierwszym for masz j++ zamiast i++ i dlatego Ci rzucalo bledem. Co do reszty to napisze tylko tyle: macierz macierz::operator+(macierz &dodaj){ macierz tym; for(int i=0;i<3;i++) { for(int j=0;j<3;j++) { tym(i, j) = this->operator()(i, j) + dodaj(i, j); } } return tym;} PS. strasznie bazgrasz w tym kodzie.. nie wszedzie masz wciecia, klamry tez jakos dziwnie umieszczasz (np. w tym operator+ w swojej wersji). Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
wragler Opublikowano 14 Stycznia 2006 Zgłoś Opublikowano 14 Stycznia 2006 To sa wlasnie takie bazgroly bo to narazie jest pocztaek pracy . A co jest z tym przeladowaniem tego operatora()?????? Da sie to tak zrobic jak znanaczylem? Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Gość Opublikowano 14 Stycznia 2006 Zgłoś Opublikowano 14 Stycznia 2006 A patrzyles chociaz na ten kod co wkleilem wyzej ? :) Co do poczatku pracy to zadne tlumaczenie. Tez sobie tak kiedys tlumaczylem.. ale jak juz sie zagalopujesz to potem sie nie chce poprawiac. Dlatego warto od razu pisac normalnie, nawet jesli program ma nie przekraczac strony. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
wragler Opublikowano 14 Stycznia 2006 Zgłoś Opublikowano 14 Stycznia 2006 Zeczywiscie za szybko czytalem i nie zobacyzlem :) ale teraz np jezli nie chialbym za kazym razem pisac this->operator()itd...? To jak to zrobic? Np niazej mam przeladowany operator & ktory liczy wyznacznik. Jeest tam wzor pisany za pomoca tab[j] a jak to zrobic aby bylo (i,j)???? I to juz bedzie chyba wszystko. :) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Gość Opublikowano 14 Stycznia 2006 Zgłoś Opublikowano 14 Stycznia 2006 (edytowane) Zeczywiscie za szybko czytalem i nie zobacyzlem :) ale teraz np jezli nie chialbym za kazym razem pisac this->operator()itd...? To jak to zrobic?Niestety w przypadku wywolywania przeciazonych operatorow na this trzeba tak. this(i, j) nie przejdzie... Innej opcji nie znam. Np niazej mam przeladowany operator & ktory liczy wyznacznik. Jeest tam wzor pisany za pomoca tab[j] a jak to zrobic aby bylo (i,j)???? I znowu nie masz petli.. wiec zamiana na (i, j) nie poprawi Ci czytelnosci. Pozatym ten "wzor" dla wiekszej macierzy juz nie zadziala. Ale jak koniecznie chcesz no to zamieniasz analogicznie jak ja zrobilem to wyzej (porownaj sobie orginal z tym co napisalem). Edytowane 14 Stycznia 2006 przez FiDO Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
wragler Opublikowano 14 Stycznia 2006 Zgłoś Opublikowano 14 Stycznia 2006 no trudno tak musi juz chyba zostac, Dzieki wielkie za pomoc. Juz te "wzory" pozamienialem n afunkcje jeszcze tylko ten na wyznacznik:) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Gość Opublikowano 16 Stycznia 2006 Zgłoś Opublikowano 16 Stycznia 2006 Ech.. tak to jest jak sie ostatni raz C++ widzialo z 1.5 roku temu :) Pogadalem chwile z kumplem.. powspominalismy stare dobre czasy C++ i wyszlo z tego to, ze this->operator() (i, j) mozna zamienic na znacznie prostsze (*this)(i, j) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...