Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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

×

Informação importante

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