Ir ao conteúdo

Posts recomendados

Postado

Olá!

Estou com problema nesta questão aqui Considere um “caminho” construído dentro dessa matriz, iniciado no elemento [1][1] e no qual o sucessor de cada elemento é o menor dos seus vizinhos que ainda não faça parte do caminho. O final do caminho ocorre quando for atingido um elemento na “borda” da matriz, ou seja, na primeira ou na última linha ou na primeira ou na última coluna. Escreva um programa que construa uma matriz como essa, 10x10, e mostre na tela o somatório dos valores que formam o caminho. 

Abaixo estou colocando a matriz que estou utilizando

int matriz[10][10] = { 12, 16, 18, 77, 45, 65, 34, 11, 81, 90,
 51, 5, 15, 88, 13, 33, 17, 9, 10, 54,
 89, 1, 7, 23, 34, 15, 16, 18, 20, 19,
 22, 6, 83, 25, 20, 14, 21, 18, 17, 18,
 19, 3, 18, 8, 49, 6, 66, 8, 17, 22,
 45, 33, 9, 17, 55, 80, 9, 5, 22, 31,
 2, 45, 2, 3, 96, 14, 100, 4, 76, 54,
 90, 85, 1, 99, 16, 3, 15, 3, 4, 25,
 8, 44, 43, 20, 5, 7, 13, 44, 39, 112,
 1, 23, 21, 32, 9, 31, 31, 2, 56, 2 };

E abaixo está o código

#include<stdio.h>
#define tam 10

main(){
int m, i, j, n, r, u=0, t, o, s=0, l, c;
int val[100];
int matriz[10][10] = { 12, 16, 18, 77, 45, 65, 34, 11, 81, 90,
51, 5, 15, 88, 13, 33, 17, 9, 10, 54,
89, 1, 7, 23, 34, 15, 16, 18, 20, 19,
22, 6, 83, 25, 20, 14, 21, 18, 17, 18,
19, 3, 18, 8, 49, 6, 66, 8, 17, 22,
45, 33, 9, 17, 55, 80, 9, 5, 22, 31,
2, 45, 2, 3, 96, 14, 100, 4, 76, 54,
90, 85, 1, 99, 16, 3, 15, 3, 4, 25,
8, 44, 43, 20, 5, 7, 13, 44, 39, 112,
1, 23, 21, 32, 9, 31, 31, 2, 56, 2 };

/*printf("Diga os valores da matriz: \n");
for(j=0; j<tam; j++){
for(i=0; i<tam; i++){
scanf("%d", &matriz[i][j]);
}}*/
val[0] = matriz[1][1];

/*---------achar o maior valor------------*/
m=0;
for(j=0; j<tam; j++){
for(i=0; i<tam; i++){
if(matriz[i][j]>m){m = matriz[i][j];}
}}
/*----------------------------------------*/

n = 1; r = 1;
while((r != 0 && r != 9) || (n != 0 && n != 9)){

val[c]=matriz[n][r];
do{
for(j = n-1; j <= n+1; j++){
for(i = r-1; i <= r+1; i++){
if(matriz[i][j]<m){
m = matriz[i][j];
l = i; c = j;
}
if(j>=n+1 && i>=r+1){val[1]=m; s=1;}
}
}
}while(s!=1);
c++;
n = l; r = c;
}
r=0;
for(t=0; t<c+1; t++){
r = r + val[t];}

printf("A soma dos numeros encontrados e %d ", r);
printf("%d %d %d", val[0], val[1], val[2]);
}

O problema é que ele compila normal, só que depois quando o programa abre parece que ele dá overflow e encerra o programa, o que tá acontecendo com esse programa?

  • Obrigado 1
Postado

@Igor Lima Kock    creio que você precisará inicializar a variável c lá no início , pois sem isso ele terá um valor indeterminado , por haver Lixo naquela posição da memória e assim no vetor val não tem tal posição e aí para proteger o sistema do pc , o código é encerrado .

Postado
2 minutos atrás, devair1010 disse:

@Igor Lima Kock    creio que você precisará inicializar a variável c lá no início , pois sem isso ele terá um valor indeterminado , por haver Lixo naquela posição da memória e assim no vetor val não tem tal posição e aí para proteger o sistema do pc , o código é encerrado .

Tipo igualar ele a 0?

  • Amei 1
Postado
14 minutos atrás, devair1010 disse:

@Igor Lima Kock    isso mesmo ,  mas seu código não está funcionando do jeito que você espera , pois ele não faz nada , então coloque essa linha 


printf("val c= %d\n",c);

lá na linha 35 do seu código e apareceu apenas isso 

cod3.thumb.jpg.800991287d042497f0a35a44cadf0077.jpg

Aparece isso image.thumb.png.6cf51a9dc0a6abfcd0674bfbac8bf1b9.png

  • Obrigado 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!