Ir para conteúdo

POWERED BY:

Arquivado

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

barthoraimundo

2 erros graves no meu algorítmo

Recommended Posts

ENUNCIADO DO EXERCÍCIO:

Suponha que uma Casa de Jogos queira "agitar" suas rodadas de jogos.Entre os frequentadores normais do lugar eles inserem (até 12) jogadorescontratados para se misturarem aos frequentadores. Então sugere-se que essesjogadores, após declarados seus nomes, tenham uma "agenda" comhorários (até 24 vezes por dia), porém só poderão jogar a cada hora cheia. Ex:9h,13h,22h, etc. Os jogadores terão um tipo a ser definido no ato do cadastro(FORTE, FRACO, MÉDIO, etc.) e também terão um lema, também a ser definido nomomento do cadastro ("DESISTIR JAMAIS","DEVAGAR ESEMPRE","SÓ JOGO POR ESPORTE",etc.). Cada jogador poderá jogarquantas vezes quiser (até 24 no dia). Todos os jogadores contratados receberãovalores para jogar (em notas ou moedas). Caso sejam notas só poderão apostar 1nota por vez, mas se forem moedas poderão optar pela quantidade a ser apostada.Ao final do cadastro imprimir as informações (que serão afixadas num quadro deavisos) contendo: NOME, TIPO, LEMA, VEZES e o(s) HORÁRIOS referentes à quantidadede vezes. Conforme abaixo:

 

escreval ("O jogador",jogador, " jogará às ",hora[m]," hora(s)e seu lema é",lema[k])

 

escreval ("ou seja, ",vezes[l],"vez(es) ao dia. Ele é um jogador do tipo ",tipo[j],".")

 

BEM EU DESENVOLVI O CÓDIGO E ESTOU COM OS SEGUINTES PROBLEMAS:

 

1) O vetor horas[m] não "armazena" os horários de todos os jogadores.Ele "sobrepoe" os horários e sendo assim, ao final do cadastro,somente estão armazenados os horários do último jogador cadastrado. Sejamquantos jogadores forem.

2) Ao final deverá ser impressa uma lista para ser afixada no local. Não estouconseguindo sucesso na impressão dessa lista. Primeiro porque há problemas novetor [m] e segundo porque não estou conseguindo informar com precisão o quêdeve ser impresso. Todo o restante está correto e funcionando bem. O códigoestá todo comentado informando os locais onde há erros.

 

OBS: Já dei uma "melhoradinha" na impressão final, mas continua com erros. Creio que sejam porque o vetor[m] não esteja guardando as informações.

 

AGRADEÇO SE ALGUÉM PUDER ME ORIENTAR. EIS O CÓDIGO:

 

[code]var
jogador: vetor [0..11] de literal//i
tipo: vetor [0..11] de literal//j
lema: vetor [0..11] de literal//k
vezes: vetor [0..11] de inteiro//l
hora: vetor [0..23] de inteiro//m
i,j,k,l,m,quant,quant1,quant2,hor,vez,tot,moe,aux,aux1: inteiro
nome,resp,jog,tip,lem: literal
dia: real
inicio
// Seção de Comandos
escreval ("VETOR HORA (m) COM PROBLEMAS")
escreval ("IMPRESSÃO FINAL C/ PROBLEMAS")
escreval ("------------------------------------------------------------")
escreval ("CADASTRAR ATÉ 12 JOGADORES, ONDE CADA UM PODERÁ JOGAR ATÉ 24")
escreval ("VEZES, SENDO UMA VEZ POR HORA, NO MÁXIMO.")
escreval ("------------------------------------------------------------")
escreva ("Deseja iniciar um cadastramento de jogadores?: ")
leia (resp)
se resp <> "sim" entao
escreval ("Estamos encerrando o programa. Obrigado!")
interrompa//Ok, interrupção funcionando
senao
escreva ("Organizador(a), por favor, digite seu nome: ")
leia (nome)
escreval ("Seja bem-vindo(a) ",nome,".")
escreval ("Você poderá cadastrar até 12 jogadores.")
escreva ("Quantos jogadores pretende cadastrar?: ")
leia (quant)
i<-quant//isso faz jogador pular para o próximo.
para i de 0 ate quant-1 faca//CERTO! (i está pulando para o próximo jogador)
para j de i ate i faca//CERTO! (j está pulando para o próximo tipo)
para k de i ate i faca//CERTO! (k está pulando para a próxima lema)
para l de i ate i faca//CERTO! (l está pulando para a próxima vez)
escreva ("Digite o nome do",i +1,"º jogador: ")
leia (jog)
jogador[i]<-jog
escreval ("Ok, o",i +1,"º jogador é: ",jog,".")
escreva ("Digite o tipo deste",i+1,"º jogador: ")
leia(tip)
tipo[j]<-tip
escreval ("Ok, o",i +1,"º jogador ","",jog," é do tipo ",tip,".")
escreva ("O",i +1,"º jogador ","",jog,", é do tipo ",tip," e o seu lema é: ")
leia (lem)
lema[k]<-lem
escreval ("Ok, o ",i +1,"º jogador ","",jog,", do tipo ",tip," tem como lema ",lem,".")
escreva ("Quantas vezes o",i +1,"º jogador ",jog," jogará no dia?: ")
leia (vez)
vezes[l]<-vez//CERTO!
escreval ("O ",i+1 ,"º jogador ",jog," jogará",vez," vez(es) ao dia.")
escreval ("---------------------------------------------------------------------")
escreval ("Todos os jogadores receberão valores para jogar,   mas devem informar")
escreval ("os totais recebidos discriminando se são notas ou moedas.  Permite-se")
escreval ("apostar apenas 1 nota por vez, mas moedas podem ser quantas quiserem.")
escreval ("---------------------------------------------------------------------")
escreva ("São notas?: ")
leia (resp)
se resp <> "sim" entao
escreval ("Ok, não são notas. São moedas.")
escreva ("Quantas moedas o jogador está recebendo?: ")
leia (quant1)//quant1 para moedas
tot<-quant1
escreval ("Ok, estão sendo recebidas ",tot," moedas.")
escreva ("Qual a quantidade de moedas a ser(em) apostada(s) em cada jogada?: ")
leia (moe)//moe para gravar as moedas
aux<-moe*vez//aux para calcular valor máximo diário pela quantidade de vezes
dia<-tot/aux//dia recebe total de moedas dividido pelo total a ser gasto em cada jogada
escreval ("As moedas recebidas pelo jogador ",jog," vão durar: ",dia," dias(s).")
senao
escreva ("Quantas notas o jogador está recebendo?: ")
leia (quant2)//quant2 para notas
tot<-quant2
escreval ("Ok, estão sendo recebidas ",tot," notas.")
dia<-tot/vez//CERTO
escreval ("As notas recebidas pelo jogador ",jog," vão durar: ",dia," dias(s).")
fimse
//ERRO DAQUI PRA BAIXO!
aux<-vez//CERTO!
para m de 0 ate <=aux-1 faca//ERRO! o vetor m recebe as horas somente referentes à quantidade
//de vezes, porém, as posições se sobrepoem (não pulam além da quantidade de vezes informadas
//se vezes=3 ele receberá somente 3 horários diferentes.
hora[m]<-m
escreva ("Digite o ",m+1 ,"º horário em que o jogador ",jog," jogará: ")
leia (hor)
hora[m]<-hor//CERTO!
escreval ("Ok, o ",m+1 ,"º horário em que o jogador ",jog," jogará é: ",hor," hora(s).")
fimpara
fimpara
fimpara
fimpara
fimpara
escreval ("Ok, ",nome," as informações foram recebidas com sucesso!")
fimse
escreval ("IMPRESSÃO DAS INFORMAÇÕES RECEBIDAS")
escreval ("-----------------------------------")
escreval ("OBS:  Quando vazio, é porque não há o que ser impresso.")
escreval ("Você chegou ao fim das informações. Deseja imprimi-las?")
escreval ("-------------------------------------------------------")
leia (resp)
se resp <> "sim" entao
escreval ("------------------------------------------------")
escreval ("Você digitou NÃO. Estamos encerrando o programa.")
escreval ("------------------------------------------------")
interrompa
senao
escreval ("------------------------------------------")
escreval ("Este é o resumo das informações recebidas:")
escreval ("------------------------------------------")
escreval ("  ERRO AO MANDAR IMPRIMIR AS INFORMAÇÕES. ")
escreval ("------------------------------------------")
para i de 0 ate quant-1 faca//CERTO
para m de i ate i faca//CERTO
para j de i ate i faca//CERTO
para l de i ate i faca//CERTO
para k de i ate i faca//CERTO
escreval ("O jogador ",jogador[i], " jogará às ",hora[m], " hora(s)e seu lema é ",lema[k], ",")
escreval ("ou seja, ",vezes[l], " vezes e é um jogador do tipo ",tipo[j], ".")
fimpara
fimpara
fimpara
fimpara
fimpara
fimse
fimalgoritmo[code]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo vamos lá..

* Você poderia identar o código para ficar mais claro?

* de um exemplo de uma entrada e como seria a saida..

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara, soh tem um problema no seu código. é no laço de inserção no array em questão.

preste bem atenção nos seus contadores e como você está tratando os indíces do array nos seus laços de inserção.

 

você vai descobrir fácil fácil pq existe essa sobreposição.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo vamos lá..

* Você poderia identar o código para ficar mais claro?

* de um exemplo de uma entrada e como seria a saida..

 

[]s

 

Olá obrigado pela resposta. Bem de forma simples aqui está um exemplo:

Vamos supor que dos 12 jogadores que posso cadastrar eu cadastre apenas 2.

Então para cada um deles teremos: NOME,TIPO,LEMA,VEZES E HORÁRIOS.

Declaro o 1º jogador:

JOÃO, FORTE, "VENCER SEMPRE", 2 , 10 e 12 (Além de declarar se estão recebendo notas ou moedas para jogarem)

Declaro o 2º jogador:

PEDRO, FRACO, "PREFIRO BRINCAR", 2, 14 e 16 (Além de declarar se estão recebendo notas ou moedas para jogarem)

Na impressão final teremos que ter:

O jogador ",JOÃO, " jogará às ",10 hora(s)e seu lema é "VENCER SEMPRE"

O jogador ",JOÃO, " jogará às ",12 hora(s)e seu lema é "VENCER SEMPRE"

ou seja, ",2, " vezes e é um jogador do tipo ",FORTE

O jogador ",PEDRO, " jogará às ",14 hora(s)e seu lema é "PREFIRO BRINCAR"

O jogador ",PEDRO, " jogará às ",16 hora(s)e seu lema é "PREFIRO BRINCAR"

ou seja, ",2, " vezes e é um jogador do tipo ",FRACO

 

cara, soh tem um problema no seu código. é no laço de inserção no array em questão.

preste bem atenção nos seus contadores e como você está tratando os indíces do array nos seus laços de inserção.

 

você vai descobrir fácil fácil pq existe essa sobreposição.

 

 

Olá marcuslll... obrigado pela resposta. Vou tentar a sua dica, mas serei sincero: Essa era a minha desconfiança e eu (desde que criei o código) não consegui de maneira alguma (alterando os laços) sucesso com o resultado. Qualquer alteração no laço interfere no restante do código. Qualquer alteração no vetor[m] faz com que o vetor[l] por exemplo, (perda da sua propriedade), ou seja, ele para de enumerar a quantidade de vezes para os jogadores na ordem em que deve ser.

Também já tentei com outros comandos como (enquanto e repita) ambos sem sucesso. Você testou essa sua dica? Esse código, como foi construído, ficou muito "sensível" a qualquer alteração e é justamente essa a dificuldade que estou tendo com ele.

Tentei algumas alterações nas auxiliares, mas não obtive resultado, pois pela lógica a variável "aux" deve receber a quantidade de vezes (-1) porque inicia em zero e termina em 23 (já que os jogadores podem jogar em todas as horas "cheias" do dia, ou seja: de meia-noite até 23 horas) e enviar essa quantidade para o vetor[m] (horas) o qual deve entender que isso se refere à quantidade de posições a serem ocupadas no mesmo (para cada jogador).

Bem, é isso. Agradeço mais uma vez e desejo sucesso a todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites
para m de 0 ate <=aux-1 faca

Oque você tentou fazer aqui? o laço para é um laço contado, tenta colocar sua expressão em uma estrutura 'se" ou usa o laço enquanto

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.