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: [url]http://titek.victorygames.pl[/url]
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

[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

 

#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

[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)


[tt]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 |[/tt]

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

[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

 

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


[tt]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 |[/tt]

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Możesz wyłączyć AdBlock — tu nie ma reklam ;-)

[ Generated in 0.010 seconds, 9 queries executed ]

Informacje debugowania

Time (s) Query
0.00013 SET CHARSET latin2
0.00007 SET NAMES latin2
0.00129 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='3.133.139.28' WHERE u.id=1
0.00098 UPDATE punbb_online SET logged=1732389546 WHERE ident='3.133.139.28'
0.00078 SELECT * FROM punbb_online WHERE logged<1732389246
0.00105 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.00008 SELECT search_for, replace_with FROM punbb_censoring
0.00168 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.00110 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=20626
Total query time: 0.00716 s