Home › Fóruns › Programação Básica › Exercício 41
- Este tópico contém 3 respostas, 2 vozes e foi atualizado pela última vez 2 anos, 8 meses atrás por IcaroFilho.
-
AutorPosts
-
-
10 de março de 2022 às 17:33 #88176Carlos Alberto Araujo ColletParticipante
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.
-
11 de março de 2022 às 12:02 #88306Carlos Alberto Araujo ColletParticipante
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.
-
12 de março de 2022 às 08:35 #88409IcaroFilhoModerador
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.
-
12 de março de 2022 às 08:19 #88402IcaroFilhoModerador
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 ose ( 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 )
parase ( 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.
-
-
AutorPosts
- Você deve fazer login para responder a este tópico.