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  2009-04-01 02:47:20

  giegiel - Członek DUG

giegiel
Członek DUG
Skąd: Chrzypsko Wielkie/Poznań
Zarejestrowany: 2006-04-15

tablice wielowymiarowe, wskaźniki, c++

Mam problem i nie mogę go rozwiązać. W ogóle nie ogarniam i mnie wpienia już to. Googluje i wydaje mi się że robie tak jak mi wuja google pokaże i dalej nie działa ;/ help

Kod:

int ma[10][10],mb[10][10];
    int n,m;
    
    cout << "podaj rozmiar macierzy [m][n]\n m:";
    cin >> m;
    cout << "n:";
    cin >> n;
    
    cout << "Macierz a:" << endl;
    srand ( time(NULL) );
    for(int i=1;i<=m;i++) {
        for(int a=1;a<=n;a++) {
            **ma[m][n] = rand() % 100;
            cout << ma[m][n] << "\t";
        }
        cout << endl;
    }


cout << "Macierz b:" << endl;
    for(int i=1;i<=m;i++) {
        for(int a=1;a<=n;a++) {
            mb[m][n] = rand() % 100;
            cout << mb[m][n] << "\t";
        }
        cout << endl;
    }

suma1(ma,mb,m,n);

oraz funkcja:

Kod:

void suma1(int **ma, int *mb[10], int x, int y) {
    int **mc;
    mc = (int**)malloc(x*sizeof(int));
    for(int i = 1; i <=x;i++) {
        mc[i]=(int*)malloc(y*sizeof(int));
    }
    
    for(int a=1;a<=x;a++) {
        for(int b=1;b<=y;b++) {
            cout << ma[a][b] << "\t";
        }
        cout << endl;
    }
}

i takiego errora mam:

Kod:

zad4.cpp:83: error: cannot convert 'int** (*)[10]' to 'int**' for argument '1' to 'void suma1(int**, int**, int, int)'

Może ktoś napisać jak ma to wyglądać i dlaczego tak?? Nie ogarniam tych wskaźników do tablic ;/ HELPP

Ostatnio edytowany przez giegiel (2009-04-01 02:48:43)

Offline

 

#2  2009-04-02 13:48:08

  bercik - Moderator Mamut

bercik
Moderator Mamut
Skąd: Warszawa
Zarejestrowany: 2006-09-23
Serwis

Re: tablice wielowymiarowe, wskaźniki, c++

Kod:

void suma1(int ma[][10], int mb[][10], int x, int y) {

1) nie wiem po co ten malloc jak i tak wczesniej masz na sztywno 10x10
2) pozatym tem malloc raczej nie powinien tak wygladac - tablica dwuwymiarowa to wskaznik na wskaznik bo
ma[1][2] jest rozumiane przez kompilator jako *(*(ma + 1)+2) innymi slowy jest to tablica tablic (bedacych jej wierszami)
3) jak chesz sie bawic w dynamiczne tablice 2d to chyba najprosciej w formie splaszczonej czyli

Kod:

int* mc = malloc(N*M*sizeof(int));
mc[1+2*M]=3;

Ostatnio edytowany przez bercik (2009-04-02 13:48:25)


"Wszyscy wiedzą, że czegoś zrobić nie można. Ale przypadkowo znajduje się jakiś nieuk, który tego nie wie. I on właśnie robi odkrycie." (A.Einstein)

Offline

 

Stopka forum

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