Ir para conteúdo
Fórum Script Brasil

Henrique0352

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Posts postados por Henrique0352

  1. Olá!

    Estou com um problema no cálculo da média dos elementos de uma matriz qualquer, por meio de uma função. O código que segue faz o seguinte, na função principal: lê, na primeira linha de um arquivo externo de texto, dois valores inteiros referentes à quantidade de linhas e de colunas de uma matriz, criando a matriz logo em seguida. No mais, ele lê os elementos da matriz (localizados no mesmo arquivo, logo abaixo da linha que contém o tamanho da matriz) e os mostra, a fim de testar a leitura. O arquivo de texto seria algo assim, por exemplo:

    2 2 => linhas e colunas
    1 2 => elementos
    3 4 => elementos
    Bom, a matriz é passada como parâmetro para a função "media_matriz", mas ela não retorna o valor correto. Creio que o erro esteja na variável soma. (lembrando que a função "media_matriz" só aceita matrizes quadradas, e o primeiro parâmetro "n" é justamente o número de linhas e de colunas).
    Enfim, eu costumava fazer esse tipo de exercício em linguagens como o C#, e em IDEs como o Visual Studio, então me parece que sem os auxílios de conversão de variáveis, concatenação e gerenciamento de memória, fiquei perdido :P.
    Agradeço desde já!
    float media_matriz(int n, float mat[][100]) {
        // variaveis
        int i, j;
        float soma = 0.0, media = 0.0;
    
        // processamento
        for(i = 0; i < n; i++)
            for(j = 0; j < n; j++)
                soma += mat[i][j];
    
        media = soma/((float)n*(float)n);
    
        // saida
        return(media);
    }
    
    int main(void) {
        // variaveis
        FILE* arquivo = fopen("texto.txt", "r");
        int j, i, l, c;
    
        // entrada
        fscanf(arquivo, "%i %i", &l, &c);
        float m[l][c];
    
        // processamento
        for(i = 0; i < l; i++)
            for(j = 0; j < c; j++)
                fscanf(arquivo, "%f", &m[i][j]);
    
        // saida
        for(i = 0; i < l; i++) {
            for(j = 0; j < c; j++)
                printf("M[%d, %d]: %f ", i, j, m[i][j]);
            printf("\n");
        }
    
        printf("media: %f", media_matriz(l,m));
    
        fclose(arquivo);
        return(0);
    }
×
×
  • Criar Novo...