Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Strony: 1
Witam stworzyłem program na obliczanie macierzy 2x2 przy użyciu programowania obiektowego - na zwykłych zmiennych i wszystko działa natomiast gdy próbuje przekształcić ów zwykłe zmienne na tablice wyskakuje mi błąd którego nie rozumiem.
bląd : podczasz wywoływania metody wypisujacej wynik : Request for member ‘oblicz’ in ‘jeden’, which is of non-class type 'macierz ( int (*)[2])’
Przedstawię uproszczony kod:
#include <iostream> #include <stdlib.h> #include <string.h> using namespace std; class Macierz { private: int tablica [2][2]; public: Macierz (int tablicaX[2][2]); double oblicz(); }; Macierz :: Macierz (int tablicaX[2][2]) { tablica[0][0] = tablicaX[0][0] ; tablica[0][1] = tablicaX[0][1] ; tablica[1][0] = tablicaX[1][0] ; tablica[1][1] = tablicaX[1][1] ; } double macierz::oblicz() { cout << "Wynik macierzy wynosi :"; cout << (tablica[0][0]*tablica[1][1]) - (tablica[0][1]*tablica[1][0]) << endl <<endl; } int main() { int tablicaX[2][2]; cout <<"Wzoroj sie na przykladzie : " <<endl <<endl; cout << "[X11 X12]"<<endl; cout << "[X21 X22]"<<endl; cout <<"Podaj wartosc X11" <<endl; cin >>tablicaX[0][0]; cout <<"podaj wartosc X12" <<endl; cin >>tablicaX[0][1]; cout <<"Podaj wartosc X21" <<endl; cin >>tablicaX[1][0]; cout <<"Podaj wartosc X22" <<endl; cin >>tablicaX[1][1]; Macierz jeden(tablicaX); jeden.oblicz(); return 0; }
Serdecznie dziękuje za ewentualną pomoc :)
Ostatnio edytowany przez lubiekoty1 (2012-02-09 21:11:13)
Offline
W funkcji main():
Linia ~56: macierz jeden(int tablicaX[2][2]); --> macierz jeden(tablicaX);
W wywołaniu konstruktora zadeklarowałeś nową tablicę, a raczej chcesz przekazać tą do której wczytujesz dane.
PS. Nazwy klas z reguły z dużej literki się nazywa macierz -> Macierz
PS 2. Przy tym pierwszym "#include<iostream>", brakuje spacji (patrz dwa poniżej tego) [coby konsekwencja była]
Offline
[quote=NIC]W funkcji main():
Linia ~56: macierz jeden(int tablicaX[2][2]); --> macierz jeden(tablicaX);
W wywołaniu konstruktora zadeklarowałeś nową tablicę, a raczej chcesz przekazać tą do której wczytujesz dane.
PS. Nazwy klas z reguły z dużej literki się nazywa macierz -> Macierz
PS 2. Przy tym pierwszym "#include<iostream>", brakuje spacji (patrz dwa poniżej tego) [coby konsekwencja była][/quote]
Dziekuje serdecznie za pomoc -> głowiłem się nad tym od 2h.. :) Jeszcze raz dziękuje temat do zamknięcia
Ostatnio edytowany przez lubiekoty1 (2012-02-09 21:07:56)
Offline
[s]Już obczaiłem. Kompilujesz gcc zamiast g++. U mnie twój kod przechodzi. :)[/s]
Fałszywy alarm... Dajcie mi chwile :D
Poza tym wywal biblioteki string i std... Piszesz obiektowo to po co ci *.h? To nawyk z C. W C++ wszystko odpowiednio powinno się pisać inaczej... cstring, cmath...
Ostatnio edytowany przez P@blo (2012-02-09 21:08:59)
Offline
[quote=P@blo]Już obczaiłem. Kompilujesz gcc zamiast g++. U mnie twój kod przechodzi. :)
Poza tym wywal biblioteki string i std... Piszesz obiektowo to po co ci *.h? To nawyk z C. W C++ wszystko odpowiednio powinno się pisać inaczej... cstring, cmath...[/quote]
Plik -> nowy projekt -> Automatycznie dodaje, nawet nie zwróciłem na to uwagi
Offline
Mam...
#include<iostream> using namespace std; class macierz { private: int tablica[2][2]; public: macierz(int tablicaX[2][2]); int oblicz(); }; int main(){ int tab[2][2]; cout <<"Wzoroj sie na przykladzie : " <<endl <<endl; cout << "[X11 X12]"<<endl; cout << "[X21 X22]"<<endl; cout <<"Podaj wartosc X11" <<endl; cin >>tab[0][0]; cout <<"podaj wartosc X12" <<endl; cin >>tab[0][1]; cout <<"Podaj wartosc X21" <<endl; cin >>tab[1][0]; cout <<"Podaj wartosc X22" <<endl; cin >>tab[1][1]; macierz jeden(tab); jeden.oblicz(); } macierz :: macierz (int tablicaX[2][2]){ tablica[0][0] = tablicaX[0][0] ; tablica[0][1] = tablicaX[0][1] ; tablica[1][0] = tablicaX[1][0] ; tablica[1][1] = tablicaX[1][1] ; }; int macierz::oblicz(){ cout << "Wynik macierzy wynosi :"; cout << (tablica[0][0]*tablica[1][1]) - (tablica[0][1]*tablica[1][0]) << endl <<endl; };
U mnie działa... Ale czym to się różni od twojego? A widze:
mac2.cc:30:20: error: ‘macierz’ has not been declared mac2.cc: In function ‘double oblicz()’: mac2.cc:33:28: error: ‘tablica’ was not declared in this scope
Ale musiałeś teraz pozmieniać bo reszta jest ok... :/ Polecam tablice dynamiczne.
Ostatnio edytowany przez P@blo (2012-02-09 21:33:26)
Offline
Strony: 1
Time (s) | Query |
---|---|
0.00010 | SET CHARSET latin2 |
0.00004 | SET NAMES latin2 |
0.00105 | SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='18.117.75.218' WHERE u.id=1 |
0.00067 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '18.117.75.218', 1732396711) |
0.00044 | SELECT * FROM punbb_online WHERE logged<1732396411 |
0.00037 | SELECT topic_id FROM punbb_posts WHERE id=193945 |
0.00005 | SELECT id FROM punbb_posts WHERE topic_id=20626 ORDER BY posted |
0.00062 | SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=20626 AND t.moved_to IS NULL |
0.00005 | SELECT search_for, replace_with FROM punbb_censoring |
0.00087 | SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=20626 ORDER BY p.id LIMIT 0,25 |
0.00092 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=20626 |
Total query time: 0.00518 s |