Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Esse algoritmo pede pra informar os nomes e as 3 notas de 5 alunos e mostrar qual é a menor nota de cada um. O problema tá na parte de ordenar os valores de cada linha da matriz.
Algoritmo "Menor nota"
Var
nomes: vetor[1..5] de caractere
notas: vetor[1..5, 1..3] de real
i, j, k: inteiro
menor, temp: real
Inicio
para i de 1 ate 5 faca
escreva("Digite o nome: ")
leia(nomes[i])
para j de 1 ate 3 faca
escreva("Digite a",j,"ª nota: ")
leia(notas[i, j])
fimpara
fimpara
//essa parte está com problema
para i de 1 ate 5 faca
para j de 1 ate 2 faca
menor <- j;
para k de j ate 3 faca
se notas[i, k] < notas[i, menor] entao
menor <- k;
fimse
senao
fimpara
se j <> menor entao
temp <- notas[i, menor];
notas[i, menor] <- notas[i, j];
notas[i, j] <- temp;
fimse
fimpara
fimpara
para i de 1 ate 5 faca
escreval("Aluno(a): ",nomes[i])
para j de 1 ate 3 faca
escreval(j,"ª nota: ",notas[i, j])
fimpara
fimpara
Fimalgoritmo
Consegui fazer de outro jeito aqui. Não consegui corrigir o erro do primeiro algoritmo, então vai esse mesmo:
Algoritmo "Menor nota"
Var
nomes: vetor[1..5] de caractere
notas: vetor[1..5, 1..3] de real
i, j, k: inteiro
temp: real
Inicio
para i de 1 ate 5 faca
escreva("Digite o nome: ")
leia(nomes[i])
para j de 1 ate 3 faca
escreva("Digite a",j,"ª nota: ")
leia(notas[i, j])
fimpara
fimpara
para i de 1 ate 5 faca
para j de 1 ate 2 faca
para k de j ate 3 faca
se notas[i, k] < notas[i, j] entao
temp <- notas[i, k]
notas[i, k] <- notas[i, j]
notas[i, j] <- temp
fimse
fimpara
fimpara
fimpara
para i de 1 ate 5 faca
escreval("Aluno(a): ",nomes[i])
escreval("Menor nota: ",notas[i, 1])
fimpara
Fimalgoritmo
Vlw aê kra :)
Lembre de clicar em resolvido, para evitar constrangimentos!
Até mais!
Você estava usando a variável 'menor' como índice da matriz.
Você estava usando a variável 'menor' como índice da matriz.
Por que não pode fazer isso?
>
Por que não pode fazer isso?
Poder pode. Mas não faz sentido, no caso.
E era isso que estava dando erro.
Bem, realmente não sei dizer porquê o VisuAlg aponta erro na seguinte linha:
notas[i, k] < notas[i, menor]
O pouco que pesquisei indica que o programa está tentando acessar um endereço da memória, que já está sendo utilizado por outro programa, que não é o VisuAlg.
Quanto a lógica usada, tente de outras formas, até que você ache uma solução para este erro.