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!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2012-02-09 20:45:47

  lubiekoty1 - Użytkownik

lubiekoty1
Użytkownik
Zarejestrowany: 2012-02-09

[SOLVED] C++ problem podczas kompilacji - niezrozumiały dla mnie

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.

Kod:

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:

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

 

#2  2012-02-09 20:57:53

  NIC - Członek DUG

NIC
Członek DUG
Skąd: Wrocław
Zarejestrowany: 2006-12-25
Serwis

Re: [SOLVED] C++ problem podczas kompilacji - niezrozumiały dla mnie

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]


Stronka-dom: http://titek.victorygames.pl
Jabber: nic@jabster.pl
Hobby: kompilowanie Linuksa, Bluetooth
Dystrybucja: żadna, bliski krewny LFS, składak

Offline

 

#3  2012-02-09 21:06:25

  lubiekoty1 - Użytkownik

lubiekoty1
Użytkownik
Zarejestrowany: 2012-02-09

Re: [SOLVED] C++ problem podczas kompilacji - niezrozumiały dla mnie

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

 

#4  2012-02-09 21:06:43

  P@blo - Nadworny matematyk

P@blo
Nadworny matematyk
Skąd: Wrocław v Jasło
Zarejestrowany: 2010-11-11

Re: [SOLVED] C++ problem podczas kompilacji - niezrozumiały dla mnie

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)


ThinkPadX220i
| Procesor: Intel(R) Core(TM) i3-2310M CPU @ 2.10GHz |
|  Debian: sid   |   Arch: amd64   |   Sound: alsa   |
| No DE | WM: DWM  |  DM: .bash_profile  |  BIOS+MBR |

Offline

 

#5  2012-02-09 21:09:23

  lubiekoty1 - Użytkownik

lubiekoty1
Użytkownik
Zarejestrowany: 2012-02-09

Re: [SOLVED] C++ problem podczas kompilacji - niezrozumiały dla mnie

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

 

#6  2012-02-09 21:29:52

  P@blo - Nadworny matematyk

P@blo
Nadworny matematyk
Skąd: Wrocław v Jasło
Zarejestrowany: 2010-11-11

Re: [SOLVED] C++ problem podczas kompilacji - niezrozumiały dla mnie

Mam...

Kod:

#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:

Kod:

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)


ThinkPadX220i
| Procesor: Intel(R) Core(TM) i3-2310M CPU @ 2.10GHz |
|  Debian: sid   |   Arch: amd64   |   Sound: alsa   |
| No DE | WM: DWM  |  DM: .bash_profile  |  BIOS+MBR |

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
To nie jest tylko forum, to nasza mała ojczyzna ;-)