• Index
  •  » Algorytmy
  •  » [C] Przekazywanie tablic dwuwymiarowych do funkcji.

#1 04-12-2007 22:26:27

mieczyk

Member

3375619
Zarejestrowany: 03-08-2007
Posty: 24
Punktów :   
WWW

[C] Przekazywanie tablic dwuwymiarowych do funkcji.

Dwa poniższe przykłady prezentują przekazywanie tablicy dwuwymiarowej do funkcji. Pierwszy przykład jest mało elegancki, ponieważ z góry znamy rozmiar tablicy. Drugi natomiast opiera się o dynamiczną alokację pamięci.

I przykład:

Kod:

/* Przekazywanie tablicy dwuwymiarowej do funkcji */
/* Sposob I */

#include <stdio.h>
#include <stdlib.h>

void wyswietl(int tab[][2], int x, int y)
{
     int i,j;
     
     for(i=0; i<x; i++)
       for(j=0; j<y; j++) 
         printf("%d\n", tab[i][j]);
}

int main()
{
    int tab[3][2];
    int i,j;
    int x=3;
    int y=2;
    
    srand(time(0));
    
    for(i=0; i<x; i++)
       for(j=0; j<x; j++)
           tab[i][j] = rand()%100;
           
    wyswietl(tab, x, y);    
 
     getchar();
     return 0;
}

II przykład:

Kod:

/* Przekazywanie tablicy dwuwymiarowej do funkcji */
/* Sposob II */

#include <stdio.h>
#include <stdlib.h>

void wyswietl(int **tab, int x, int y)
{
     int i,j;
     
     printf("Tablica %dx%d\n\n", x,y);
     
     for(i=0; i<x; i++)
     {  
         for(j=0; j<y; j++) printf("%d ", tab[i][j]);
         printf("\n");
      }
}

int main()
{
    srand(time(0));
    
    int **tab;
    int i,j;
    
    /* Losowanie wymiarow tablicy */
    int x = 1+rand()%20;
    int y = 1+rand()%20;
    
    /* Alokowanie potrzebnej pamięci */
    tab = (int**)malloc(x*y*sizeof(int*));
    for(i=0; i<x; i++)
       tab[i] = (int*)malloc(y*sizeof(int));
    
    /* Wypelnianie tablicy losowami liczbami */
    for(i=0; i<x; i++)
       for(j=0; j<y; j++)
          tab[i][j] = rand()%100;
          
    /* Wyswietlanie tablicy */
    wyswietl(tab, x, y);
    
    /* Zwalnianie pamieci */
    for(i=0; i<x; i++)
       free(tab[i]);
    free(tab);
    
    getchar();
    return 0;
}

Tutaj jednak, nie jestem pewien czy dobrze zwalniam pamięć. Jeżeli nie, zawsze można mnie poprawić...

Ostatnio edytowany przez mieczyk (04-12-2007 22:27:49)

Offline

 
  • Index
  •  » Algorytmy
  •  » [C] Przekazywanie tablic dwuwymiarowych do funkcji.

Stopka forum

RSS
Powered by PunBB 1.2.23
© Copyright 2002–2008 PunBB
Polityka cookies - Wersja Lo-Fi


Darmowe Forum | Ciekawe Fora | Darmowe Fora
GotLink.pl