Luthien 0 Denunciar post Postado Junho 20, 2014 Tenho q fazer um programa q fale se a matriz é ou nao cubo magico, nesse meu codigo q ta uma bagunça horrorosa, na hora de executar, só imprime a soma dos numeros das linhas e colunas, nao imprime a soma da diagonal principal nem da secundaria...peço desculpas se meu codigo esta confuso mas preciso mt de ajuda, tenho 40 exercicios pra fazer e n consigo fazer nenhum =/ #include <stdio.h> int main () { int l,c,i,j,somapadrao = 0, somal = 0, somac = 0, somadp = 0, somadsec = 0, verdadeiro = 1; do { printf("Informe o numero de linhas da matriz\n"); scanf("%d",&l); printf("Informe o numero de colunas da matriz\n"); scanf("%d",&c); if(l!=c) { printf("Erro: o numero de linhas deve ser igual ao numero de colunas, digite novamente.\n\n"); } } while (l!=c); int mat[l][c]; if(l==c) { for(i=0; i<l; i++) { for(j=0; j<c; j++) { printf("Informe o numero da posicao [%d][%d] da matriz\n",i + 1,j + 1); scanf("%d",&mat[i][j]); } } } for(i=0; i<l; i++) { for(j=0; j<c; j++)//definindo um valor para que a matriz seja um quadrado magico { somapadrao += mat[0][j];//vai somar os valores de cada linha } printf("Soma dos valores da %d linha: %d\n",i+1,somapadrao); somapadrao = 0; } for(j=0; j<c; j++) { for(i=0; i<l; i++) { somac += mat[i][0]; } if(somac!= somapadrao) { verdadeiro = 0; } printf("Soma dos valores da %d coluna %d\n",j+1,somac); somac = 0; } for(i=0; i<l; i++) { for(j=0; j<c; j++) { if(i==j) { somadp += mat[i][j]; } } if(somadp!= somapadrao) { verdadeiro = 0; } } for(i=l; i<=l; i--)//3,2,1 { for(j=c; j<=c; j--)//3,2,1 { if(i==j) { somadsec += mat[i][j]; } } if(somadsec!= somapadrao) { verdadeiro = 0; } } printf("Soma da diagonal principal: %d\n",somadp); printf("Soma da diagonal secundaria: %d\n",somadsec); if(verdadeiro==1) { printf("E cubo magico\n"); } else { printf("Nao e cubo magico\n"); } return 0; } Compartilhar este post Link para o post Compartilhar em outros sites
ScreenBlack 13 Denunciar post Postado Julho 1, 2014 Encontrei alguns errinhos. Primeiro erro: Quando você define... somapadrao += mat[0][j]; e somac += mat[i][0]; Não permite que a somas sejam realizadas em outras linhas ou colunas. Trocando o valor zero pela variável correspondente, as somas ficarão corretas. somapadrao += mat[i][j]; e somac += mat[i][j]; Segundo erro: for(i=l; i<=l; i--)//3,2,1 { for(j=c; j<=c; j--)//3,2,1 Você está começando o loop utilizando um valor acima do máximo contido da matriz. Além disso, a comparação está sendo feita no valor mais alto, porém, você está decrementando, ou seja, indo para o valor mais baixo. Você deve validar se chegou a zero. for(i = l-1; i >= 0; i--)//3,2,1 { for(j = c-1; j >= 0; j--)//3,2,1 Espero que ajude! Att Compartilhar este post Link para o post Compartilhar em outros sites