Ir para conteúdo
giuberti123

Return - retornar média da matriz diagonal principal

Recommended Posts

Boa tarde galera!


Bem...gostaria que me ajudassem nesse programa. Estou querendo mostrar a média da minha matriz diagonal, porem, não consigo enxergar o erro, pois, quando rodo o sistema, ele mostra um resultado aleatório ( números grandes).


E outra...meu professor me falou que, as minhas chaves ( que separam minhas ações) são péssimas, fazendo com que , em vez de ajudar, me atrapalhe. Preciso que vocês me ajudem/aconselhem neste quesito também.


Muito obrigado meus amigos!!!






#include <stdio.h>

#include <stdlib.h>

#define t 2


int media( int matriz[t][t]);


int main()

{

int matriz[t][t], m, i,j;


for(i = 0; i<t; i++ )

{

for(j =0; j< t; j++)

{

printf("digite o valor da matriz: ");

scanf("%i", &matriz[j]);


if (i!=j)


matriz[j]=0;



}


}


printf("\n");


m=media(matriz);


for(i = 0; i<t; i++ )

{

for(j =0; j< t; j++)

{

printf("%i",matriz[j]);


} printf("\n");


}


printf("\n a media eh: %i", m);



return 0;

}



int media( int matriz[t][t])

{

int i,j, soma,media;


for(i = 0; i<t; i++ )

{

for(j =0; j< t; j++)

{

if (i!=j)


soma=soma + matriz[j];


}


}


media = 1.0*soma/t;


return media;

}


Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 05/10/2016 at 12:52, _Isis_ disse:

Você não está iniciando a variável soma.

Isso mesmo e isso faz com que o valor dessa variável seja indefinido e assim o valor da variável estará errado após as atribuições pois se somará valores conhecidos ao valor desconhecido que a variável tem por não ter sido inicializada. O programa está guardando na matriz os valores digitados porém utilizando apenas uma das dimensões dessa matriz o que fará com que apenas metade da matriz seja usada para o armazenamento desses valores pelo fato de ela ser bidimensional. Para acessar a outra metade dela é necessário que se inclua o índice da segunda dimensão na função de leitura e armazenamento de valores. Se não ler os valores e armazená-los usando também a segunda dimensão não terá como calcular a média diagonal pois o segundo valor a ser atribuído na soma para o cálculo da média não será armazenado e consequentemente essa média não terá como ser calculada o que vai fazer com que o programa sempre apresente resultados incorretos. Outra coisa que tem no final do código que não é exatamente um erro mas é desnecessário que tenha no programa é incluir o valor 1.0 multiplicado pela variável soma. Qualquer valor multiplicado por 1 continua sendo ele mesmo sem modificar então pode ser removido aquela multiplicação por 1.0 que o resultado continuará sendo o mesmo. Isso não é erro mas se não tiver o programa continua igual então não é necessário que tenha. Pode ser tirado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.