giuberti123 0 Denunciar post Postado Outubro 4, 2016 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
_Isis_ 202 Denunciar post Postado Outubro 5, 2016 Você não está iniciando a variável soma. Compartilhar este post Link para o post Compartilhar em outros sites
Wilkyn Fernandes Taborda 0 Denunciar post Postado Janeiro 8, 2020 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