1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

[Duvida] Matriz em c

Discussão em 'Programação' iniciada por sirMk, 5 de Janeiro de 2009. (Respostas: 5; Visualizações: 911)

  1. 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.
     
  2. Mr_Miguel

    Mr_Miguel Power Member

    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: 5 de Janeiro de 2009
  3. 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;
    }
    
    
     
  4. 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 ^^
     
  5. Mr_Miguel

    Mr_Miguel Power Member

    Não. Depois do sizeof tens que por "char", que é o tipo de dados que queres armazenar na matriz. Regra geral: sizeof(tipo de dados alvo)
     
  6. Subscrevo :P
     

Partilhar esta Página