ascfla 0 Denunciar post Postado Junho 5, 2008 bom.. é o seguinte como sou novato na programação e no fórum.. andei pesquisando alguns códigos mesmo assim ainda fiquei com dúvidas pois , da maneira como um outro usuário postou o contador que aculuma a soma da diagonal principal e secundaria não tá funcionando no meu código.. se alguem puder ajudar .. agradeço .... #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <math.h> #include <string.h> main() { int lin,col, tab,soma; int diagP,diagS; int mat[4][4]; lin=0; col=0; diagP = 0; diagS = 0; for (lin=0; lin<=3; lin++) { for (col=0; col<=3;col++) { printf("Digite ELEMENTO da linha %d, coluna %d da matriz: ",lin+1,col+1); // aqui no scanf preenchemos a matriz scanf("%d", &mat[lin][col]); } } //Imprimindo a matriz printf("Matriz\n"); for (lin=0;lin<=3;lin++) { for (col=0;col<=3;col++) printf("%d\t",mat[lin][col]); printf("\n\n"); } // Imprimindo a diagonal principal printf("\n\nDiagonal principal\n\n"); for (lin=0; lin<=3;lin++) { printf("%d\n",mat[lin][lin]); for (tab=1;tab<=lin+1;tab++) printf("\t"); } // o erro ta ocorrendo nesse trecho do código .. no acumulador da soma.. for(lin=0;lin<3;lin++) { for(col=0;col<3;col++) { if(lin == col) { diagP = diagP + mat[lin][col]; } else if(lin + 1 == 3 - (col + 1) + 1) { printf("\n%d",lin); diagS = diagS + mat[lin][col]; printf("\n%d",diagS); } } } printf("\n Soma da Diagonal principal: %d\n" ,diagP); printf("\n Soma da Diagonal secundaria: %d\n",diagS); printf("\n\n"); system("pause"); return 0; } ah .. outra dúvida é .. e se eu quizer mostrar uma soma de uma determinada linha + coluna por exemplo , mostrar a soma dos elementos da linha 4 e da coluna 2 ... como ficaria ? desde já agradeço... Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Junho 6, 2008 bom para localizarmos + facil o erro faça loops diferentes para achar as somas! e sua duvida de somar os elementos da linha 4 coluna 2? como assim, soh contem um elemento ai! []'s Compartilhar este post Link para o post Compartilhar em outros sites
ascfla 0 Denunciar post Postado Junho 6, 2008 Bom .. o que tá acontecendo é que a soma da diagonal principal até q está dando certo porém não estou conseguindo fazer o mesmo pra secundária e no caso dos elementos é pq na função os elementos serão inseridos por parâmetro daí, que após rodar o programa a dificuldade está em somar uma determinada linha com outra coluna específica de elementos diferentes... to batendo cabeça aki mas to pegando gosto.. pela linguagem ... se puder ajudar..agradeço.. [ ] `s Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Junho 6, 2008 é assim msm q acha a secundaria: else if(lin + 1 == 3 - (col + 1) + 1) { printf("\n%d",lin); diagS = diagS + mat[lin][col]; printf("\n%d",diagS); }?? Compartilhar este post Link para o post Compartilhar em outros sites
ascfla 0 Denunciar post Postado Junho 6, 2008 pois é...quitZAUMMM essa lógica do if.. que tá pegando.. fiz basendo num código de pascal de um amigo.. mas não lembro se era essa exatamente a sintaxe.. Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Junho 6, 2008 vow dar um 'find' na net para ver c vejo algo e retorno c achar! []'s --edit-- achei algo no forum de Lógica assim: A diagonal secundária é identificada pela soma dos índices i + j resultando em 6 no caso da matriz 5x5. Tente usar essa informacão para fazer o algoritmo. se (i+j) > 6 faca // faca o teste para achar o menor. Compartilhar este post Link para o post Compartilhar em outros sites
ascfla 0 Denunciar post Postado Junho 7, 2008 ainda .. não rolou nesse ultimo esquema q você postou aí.. Quit... diag principal ta somando beleza. mas a secundária ainda.. nao .. olha como tá ate agora.. : CODE #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <math.h> #include <string.h> int main(void ) { int M[3][3]; int x,y,diagP,diagS,tab; diagP = 0; diagS = 0; { printf("Digite ELEMENTO da:\n"); for(x=0;x<3;x++){ for(y=0;y<3;y++) { { printf("linha %d, coluna %d da matriz: ",x+1,y+1); scanf("%d",&M[x][y]); } } } //Imprimindo a matriz printf("Matriz\n"); for(x=0;x<3;x++) { for(y=0;y<3;y++) { printf("matriz: M[%d][%d] = %d",x,y,M[x][y]); printf("%d\t",M[x][y]); printf("\n\n"); } } for(x=0;x<3;x++) { for(y=0;y<3;y++) { if(x == y) { diagP = diagP + M[x][y]; } else if((x+y)==4) // para a matriz 3X3 teria q ser essa a lógica.. Linha+coluna =4 para diag secundária ??? { printf("\n%d",x); diagS = diagS + M[x][y]; printf("\n%d",diagS); } } } printf("\n Soma da Diagonal principal: %d\n" ,diagP); printf("\n Soma da Diagonal secundaria: %d\n",diagS); printf("\n\n"); system("pause"); } } Compartilhar este post Link para o post Compartilhar em outros sites
gRoOvE 0 Denunciar post Postado Junho 7, 2008 a sua lógica para calcular a Diagonal Secundária está errada. if(i + j == 2) //Para uma matriz 3x3, o correto é 2Faça no papel uma matriz 3x3 e veja o que existe de incomum na Diagonal Secundária. Compartilhar este post Link para o post Compartilhar em outros sites
ascfla 0 Denunciar post Postado Junho 7, 2008 po amigo.. ainda tem algo errado.. né possível.. bom ..pra mim.. usando como exemplo a matriz : 1 2 3 1 2 3 3 2 1 a soma da principal é 4.. isso o código ta certo , já na secundária que a soma é 8.. nao funciona de jeito nenhum... e como o amigo groove disse.. achei estranho.. como posso somar os índices da linha 3 coluna 1 e a soma ser igual a 2 ? não seria 4 ? para a diagonal secundária ??? bom . ate agora ta assim .. : CODE #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <math.h> #include <string.h> int main(void ) { int M[3][3]; int x,y,somaL,somaC,diagP,diagS,tab; diagP = 0; diagS = 0; { printf("Digite ELEMENTO da:\n"); for(x=0;x<3;x++){ for(y=0;y<3;y++) { { printf("linha %d, coluna %d da matriz: ",x+1,y+1); scanf("%d",&M[x][y]); } } } for(x=0;x<3;x++) { for(y=0;y<3;y++) { if(x == y) { diagP = diagP + M[x][y]; } else if(x+y==2) diagS = diagS + M[x][y]; } } } printf("\n Soma da Diagonal principal: %d\n" ,diagP); printf("\n Soma da Diagonal secundaria: %d\n",diagS); printf("\n\n"); system("pause"); } ajuda aí galera.. Compartilhar este post Link para o post Compartilhar em outros sites
gRoOvE 0 Denunciar post Postado Junho 8, 2008 cara, indente esse código pls, seu erro está no if se você faz else if, quando a posição 2-2 é adicionada no diagP, ela nao vai ser adicionada mais no diagS... pra você intender, faça como eu te falei velho, desenhe num papel a matriz e marque as posições do lado for(x=0;x<3;x++) { for(y=0;y<3;y++) { if(x == y) { diagP = diagP + M[x][y]; } if(x + y == 2) { diagS = diagS + M[x][y]; } } } Compartilhar este post Link para o post Compartilhar em outros sites
ascfla 0 Denunciar post Postado Junho 8, 2008 ow groove.. vlw.. as vezes na ânsia de fz 3.. 4 exercícios ao msm tempo.. a gente dá essas mancadas.. vlw mesmo Compartilhar este post Link para o post Compartilhar em outros sites
gRoOvE 0 Denunciar post Postado Junho 8, 2008 aheuahae é mesmo, o certo é fazer um de cada vez, pra não se perder tudo :D Compartilhar este post Link para o post Compartilhar em outros sites