Malutki problemik w C

Odpowiedz Nowy wątek
2014-12-12 16:43
0

Mógł by mi ktoś rozjaśnić w jaki sposób dodać tablice 2 wymiarową do funkcji i skutecznie na niej operować? Najlepiej gdyby znalazła się jakaś dobra dusza i poprawiła ten mini kod :) Z góry serdeczne dziękuje wszystkim chętnym do pomocy ;)

#include <stdio.h>
#include <stdlib.h>
 
#define X_SIZE 3        //wysokosc
#define Y_SIZE 3        //szerokosc
 
void rysuj();
void gra();
void wypelnij(char *PoleGry[Y_SIZE]);  // Wypelnianie tablicy
void rysujtablice(char *PoleGry[Y_SIZE]);   // rysowanie tablicy
 
int main()
{
    char PoleGry[X_SIZE][Y_SIZE];
    wypelnij(*PoleGry[Y_SIZE]);
    return 0;
    system("PAUSE");
}
    void wypelnij(char *PoleGry[Y_SIZE])
 
{
        int i, j;
        for (i = 0; i < X_SIZE; i++)
        {
            for (j = 0; j < Y_SIZE; j++)
            {
                *PoleGry[j] =' ';
            }       
            *(PoleGry[j])++;
        }
}
void rysuj()
{
}
void gra()
{
}
void rysujtablice(char *PoleGry[Y_SIZE])
{   
} 

Pozostało 580 znaków

2014-12-12 18:45
wypelnij(*PoleGry[Y_SIZE]) 

Jeśli chcesz przekazać tylko 4 element tablicy, to powinieneś użyć referencji

&PoleGry[Y_SIZE]

Zaś jeśli chcesz przekazać całą tablicę, to wystarczy:

 wypelnij(PoleGry)

Miej na uwadze, że gdy ją przekażesz do funkcji, to musisz ją traktować jako jednowymiarową, tj. przy założeniu, że tablica ma wymiary tablica[2][2], to by zapisać element do pola [2][1] będziesz musiał wpisać:

tablica[2] = ' ' 

Bo elementy w tablicy są numerowane od 0.
Przy założeniu, że chcesz ją przekazać całą to prototyp funkcji powinien wyglądać tak:

void wypelnij(char *PoleGry)
edytowany 1x, ostatnio: snooxeq, 2014-12-12 18:46
Wróć jak ogarniesz jakiś pierwszy lepszy tutorial języka C. Gdzie ty masz tam referencje? a to co ? wypelnij(*PoleGry[Y_SIZE]) ??? - Dregorio 2014-12-12 18:57
@Dregorio Bez przesady, nie ma co od razu ludzi na pal nabijac za drobna pomylke... - n0name_l 2014-12-12 19:41
Korzystam z każdej okazji by podbudować swoje ego :P No i uczę się od najlepszych(ciebie :)) - Dregorio 2014-12-12 19:44

Pozostało 580 znaków

2014-12-12 21:07
0

Myślę, że możesz zrobić to też w inny sposób. Mianowicie prototyp funkcji :


    void wypelnij( char **PoleGry );  

Natomiast tablice tworzysz w ten sposób :


    char **PoleGry;
    PoleGry = new char*[Y_SIZE];
    for(int i=0; i<Y_SIZE; i++) PoleGry[i] = new char[X_SIZE];

Aby użyć funkcji wystarczy:

    wypelnij( PoleGry );

Mam nadzieję, że mój sposób będzie ok;

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0