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


Członek DUG
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
NIC napisał(-a):
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]
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



Nadworny matematyk




Już obczaiłem. Kompilujesz gcc zamiast g++. U mnie twój kod przechodzi. :)
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
P@blo napisał(-a):
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...
Plik -> nowy projekt -> Automatycznie dodaje, nawet nie zwróciłem na to uwagi
Offline



Nadworny matematyk




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