Exercício 41

Home Fóruns Programação Básica Exercício 41

Visualizando 2 respostas da discussão
  • Autor
    Posts
    • #88176

      Estou tentando resolver o exercício 41 e não estou conseguindo mostrar os valores do nome da pessoa mais jovem e sua idade na hora que vou rodar o código. Aparece que a pessoa tem 0 anos e não aparece seu nome. Será que poderiam me ajudar? Segue o código. Caso tenham mais sugestões, agradeço se me indicarem.

      programa
      {
      	inclua biblioteca Tipos --> t
      	
      	funcao inicio()
      	{
      		inteiro c = 1, idade, maior = 0, menor = 0, soma = 0, media = 0
      		cadeia nome, velho = "", novo = ""
      		
      
      		enquanto (verdadeiro) {
      
      			escreva("\n--------------NOVO AMIGO----------------")
      			escreva("\nOBS: Digite ACABOU no nome para parar")
      			escreva("\n Nome:")
      			leia(nome)
      			se (nome == "ACABOU"){
      			   pare
      			}
      			escreva("\n Idade")
      			leia(idade)
      
      			c ++
      			soma += idade
      
      			se (c==1) {
      				maior=idade
      				velho= nome
      				menor= idade
      				novo= nome
      			}  senao {
      				
      			se ( idade < menor) {
      				menor = idade
      				novo = nome
      				}
      				se (idade > maior) {
      				maior = idade
      				velho = nome
      				}
      			}
      		}
      		
      		media = t.inteiro_para_real(soma)/t.inteiro_para_real(c-1)
      		escreva("\n===============RESULTADO=================")
      		escreva("\nTotal de amigos cadastrados:", (c-1))
      		escreva("\nSeu amigo mais velho é o ", velho, " com ", maior, " anos")
      		escreva("\nSeu amigo mais novo é o ", novo, "com", menor, "anos")
      		escreva("\nA media de idade do grupo é de", t.inteiro_para_real(media))
      	}
      }
      • Este tópico foi modificado 2 anos, 8 meses atrás por IcaroFilho.
    • #88306

      Aproveitando, comecei a tentar fazer o exercício 42 e, quando coloco o programa para rodar, não aparece a soma dos homens, que aparece como se fosse zero. Fiquei bastante tempo tentando descobrir o problema, mas não consegui. Fui ver a resolução do professor e está exatamente igual. Por que isso está acontecendo?

      obs: Não resolvi ainda o exercício 42 todo.

      Segue o código:

      programa
      {
      	
      	funcao inicio()
      	{
      		cadeia nome
      		caracter sexo, resp
      		real salario
      		inteiro tot = 0, totH = 0, totM = 0
      
      		enquanto (verdadeiro) {
      
      			escreva("\nNome: ")
      			leia(nome)
      			escreva("\nSexo [M/F] ")
      			leia(sexo)
      			escreva("\nSalário: R$ ")
      			leia(salario)
      
      			
      			tot ++
      			se (sexo == 'H' ou sexo == 'h') {
      				totH ++
      			} senao  se (sexo == 'F' ou sexo == 'f') {
      				totM ++
      			}
      			
      			
      			
      			escreva("\nQuer continuar? [S/N]")
      			leia(resp)
      			se(resp=='N' ou resp=='n') {
      				pare
      			}
      			escreva("\n-----------------------------")	
      			}
      			escreva("\n============RESULTADO===================")		
      			escreva("\nTotal de pessoas cadastradas:", tot)
      			escreva("\nTotal de homens:", totH)
      			escreva("\nTotal de mulheres:", totM)
      				
      	}
      									
      }
      • Esta resposta foi modificada 2 anos, 8 meses atrás por IcaroFilho.
      • #88409
        IcaroFilho
        Moderador

        Bom dia.

        1- pelo que li esta faltando a parte da soma dos homens né ?

        2- O problema esta na comparação da sua variável na condição dos homens.
        vc exibe na tela que é para o usuário digitar M/F (sendo M para masculino), contudo sua comparação é se (sexo == 'H' ou sexo == 'h').
        Se digitar H/h na hora de utilizar o programa, irá funcionar corretamente, porem a alteração correta seria fazer a com a comparação fosse com M/m.

    • #88402
      IcaroFilho
      Moderador

      Questão 41

      Bom dia.
      Trata-se de um erro de lógica.
      no seu código, você está realizando a operação do contador antes mesmo da primeira condição ser listada. logo, ele não realiza o se ( c == 1 ), pois na primeira vez que roda ele já é 2 => ( isso acontece pq seu contador inicia com 1 e já soma + 1 antes de chegar nessa condição. )

      A correção seria desloca-la para o final da operação.

      Outro ponto a se levar em consideração é que, como está começando o operador do contador em 1, esta tendo que realizar como subtração no final para que ele desconsidere esse primeiro laço => ( nessa sua logica de iniciar em 1, ao adicionar o primeiro usuário , irá constar como 2 )

      A correção deste problema é simplesmente por o contador em 0 e alterar a condição de se ( c == 1 ) para se ( c == 0 )

      Código completo refatorado:

      programa
      {
      	inclua biblioteca Tipos --> t
      	
      	funcao inicio()
      	{
      		inteiro c = 0, idade, maior = 0, menor = 0, soma = 0, media = 0
      		cadeia nome, velho = "", novo = ""
      		
      
      		enquanto (verdadeiro) {
      
      			escreva("\n--------------NOVO AMIGO----------------")
      			escreva("\nOBS: Digite ACABOU no nome para parar")
      			escreva("\n Nome:")
      			leia(nome)
      			se (nome == "ACABOU"){
      			   pare
      			}
      			escreva("\n Idade")
      			leia(idade)
      
      			
      
      			se (c==0) {
      				maior = idade
      				menor = idade
      				velho= nome
      				novo= nome
      			}  senao {
      				
      			se ( idade < menor) {
      				menor = idade
      				novo = nome
      				}
      				se (idade > maior) {
      				maior = idade
      				velho = nome
      				}
      			}
      
      			c ++
      			soma += idade
      		}
      		
      		media = t.inteiro_para_real(soma)/t.inteiro_para_real(c)
      		escreva("\n===============RESULTADO=================")
      		escreva("\nTotal de amigos cadastrados:", (c))
      		escreva("\nSeu amigo mais velho é o ", velho, " com ", maior, " anos")
      		escreva("\nSeu amigo mais novo é o ", novo, "com", menor, "anos")
      		escreva("\nA media de idade do grupo é de", t.inteiro_para_real(media))
      	}
      }
      • Esta resposta foi modificada 2 anos, 8 meses atrás por IcaroFilho.
Visualizando 2 respostas da discussão
  • Você deve fazer login para responder a este tópico.