[Duvida] Matriz em c

sirMk

Membro
Eu tenho que criar uma matriz em c com o tamanho dado pelo utilizador. e gostava de saber como faze-lo e que esta a dar-me erro da maneira que estou a fazer.

criar matriz normalmente: tabuleiro[8][8];

printf("Digite o tamanho do tabuleiro: ");
scanf("%i",&tamanho);

agora queria criar uma matriz com os valores introduzidos tipo tabuleiro[tamanho][tamanho], mas penso que tenha de ser com ponteiros e essa a minha duvida.

alguem pode me ajudar?

Obrigado.
 
Não tem obrigatoriamente de ser com ponteiros. O seguinte código, por exemplo:

Código:
int linhas_da_matriz = 4;
int colunas_da_matriz = 3;

int a_minha_matriz[linhas_da_matriz][colunas_da_matriz];
É válido no standard C99, http://en.wikipedia.org/wiki/C_(programming_language)#C99

mas não é permitido no standard C89/C90. Qualquer compilador moderno deverá, no entanto, suportar essa parte do standard C99.

A maneira mais aconselhada, no entanto, é usar ponteiros, já que não tem problemas de compatibilidade com os standards:

Código:
int linhas_da_matriz = 4;
int colunas_da_matriz = 3;

int** a_minha_matriz = malloc(linhas_da_matriz * sizeof(int*));
int i = 0;
for (i = 0; i < linhas_da_matriz; ++i) {
   a_minha_matriz[i] = malloc(colunas_da_matriz * sizeof(int));
}
 
Última edição:
Matriz de float's

Boas, não sei se com o teu nível de programação vais entender esta pequena função, mas se perderes algum tempo vais ver que não é nada de por ai alem. Esta pequena função devolve-te uma matriz com as dimensões que passares pelos argumentos ‘colunas’ e ‘linhas’. Da uma vista de olhos e diz se serviu.


Código:
//cria matriz dinamica com floats
float **CriaF(int colunas, int linhas){
    float **image2;
    int    i;
    
    image2 = (float **) calloc(linhas,sizeof(float*));
    
    for(i=0; i<linhas; i++)
        image2[i] = (float *) calloc(colunas,sizeof(float));
    return image2;
}
 
Neste Caso eu quero criar uma matriz para char então vou fazer o seguinte (gostei da tua função e percebia penso eu :) )
Código:
//cria matriz dinamica com chars
char **CriaF(int colunas, int linhas){
    char **image2;
    int    i;
 
    image2 = (char **) calloc(linhas,sizeof(int?*));
 
    for(i=0; i<linhas; i++)
        image2[i] = (char *) calloc(colunas,sizeof(int?));
    return image2;
}

so tenho esta duvida dps do sizeof tenho que por int não é? va obrigadão ja me ajudaram a perceber ^^
 
Back
Topo