Ir ao conteúdo
  • Cadastre-se

Matrizes e elementos das diagonais secundárias


Hanarge

Posts recomendados

Olá! Agora estou com dúvida em matrizes. Estou tentando calcular os elementos acima da diagonal secundária no Dev-C++, porém, tem horas que quando eu executo o código e ele pede todos os elementos da matriz, chega nos dois últimos ele mistura tipo, ao invés de ficar M[3][1], M[3][2], M[3][3], ele retorna M[3][1], M[4][2], M[4][6]. E como faço para ele imprimir os elementos separados um do outro? Agradeço.

int main(int argc, char *argv[]) {

int i, j, m[3][3];

for (i=1; i<=3; i++){

for (j=1; j<=3; j++){

printf("INFORME OS ELEMENTOS DA MATRIZ M[%d][%d]:",i,j);

scanf("%d", &m[j]);

}

}

printf("ELEMENTOS ACIMA DA DIAGONAL SECUNDARIA: ", i);

for (i=1; i<4; i++){

for (j=1; j<4; j++){

if (i+j<3+1) {

printf("%d", m[j]);}

}

}

return 0;

}

Link para o comentário
Compartilhar em outros sites

Olá amigo,

pelo que notei você está tentando acessar pedaços na memória que não lhe pertence.

Lembre-se que quando criamos um array de tamanho 3 seus indices se distribuem assim:

[0][1][2]

Logo, tornaria inviável você acessar a posição 3 dele! Segue o código arrumado! Caso haja algum problema poste aqui novamente!

#include <stdio.h>

int main(int argc, char *argv[]) {
int i, j, m[3][3];
for (i=0; i<3; i++){
for (j=0; j<3; j++){
printf("INFORME OS ELEMENTOS DA MATRIZ M[%d][%d]:",i,j);
scanf("%d", &m[i][j]);
}
}
printf("ELEMENTOS ACIMA DA DIAGONAL SECUNDARIA: ", i);
for (i=0; i<3; i++){
for (j=0; j<3; j++){
if (i+j<3+1) {
printf("%d", m[i][j]);
}
}
}
return 0;
}

Link para o comentário
Compartilhar em outros sites

Hanarge,

Se colocar o zero, não consigo calcular o valor correto dos elementos da matriz secundária. Do outro modo, eu consigo. Somente a numeração da matriz fica embaralhada.

A observação do amigo acima é importante e deve sempre ser observada. Com aquele valor de índice, você extrapola os limites da matriz e começa a receber valores incorretos, chegando até mesmo a travar o programa.

Para resolver o problema do cálculo, use o programa postado acima e depois basta alterar o teste para:

if (i + j < 3 - 1)

Lembre-se que o índice máximo de acesso à sua matriz 3x3 é 2 (0..2)(0..2).

[]'s

LNW

Link para o comentário
Compartilhar em outros sites

Arquivado

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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...