Home › Fóruns › Programação Básica › M03A7 – Ex038 – Analisando Idades
- Este tópico contém 17 respostas, 10 vozes e foi atualizado pela última vez 2 anos, 7 meses atrás por
Tutora Jessica.
-
AutorPosts
-
-
11 de janeiro de 2022 às 08:22 #84148
Lais Golin
ParticipanteOi pessoal,
No exercício 038 – Analisando idades, percebi que uma das verificações está em branco.
Na 3a verificação, “O homem mais jovem é o … que tem 0 anos de idade”. O programa mostrado pelo Professor Guanabara não apresenta o nome/idade do homem mais jovem. Conforme a explicação do Professor, esse resultado deveria mostrar o Pedro com a idade 22.
Abraços,
Laís -
17 de janeiro de 2022 às 09:15 #84522
Tutora Tainá
MestreLais, de fato houve um erro nessa aula e o resultado “O homem mais jovem é o … que tem 0 anos de idade” está errado.
Agradecemos imensamente por ter nos avisado sobre isso.
Que tal você colocar aqui no fórum o código que dará o resultado correto no final? 😉🖖
-
18 de abril de 2022 às 18:26 #91563
Robson Lopes da Silva
ParticipanteSaudações,
Conseguir chegar até aqui.programa
{funcao inicio()
{
escreva(“{ EXERCICIO 038 – Analisando idades }\n”)inteiro c = 1, i, idadeFmenor = 0, idadeFmaior = 0, idadeMmenor = 0, idadeMmaior = 0
caracter s
cadeia m, nomeFmenor = ” “, sexoF = ” “, nomeFmaior = ” “, nomeMmenor = ” “, sexoM = ” “, nomeMmaior = ” ”enquanto (c <= 5){
escreva(“————-\n”)
escreva(c, “ª PESSOA\n”)
escreva(“————-\n”)
escreva(“NOME: “)
leia (m)
escreva(“SEXO: “)
leia (s)
escreva(“IDADE: “)
leia (i)se (c == 1){
idadeFmenor = i
idadeFmaior = i
idadeMmenor = i
idadeMmaior = i
}
se (i <= idadeFmenor e s == ‘F’){
idadeFmenor = i
nomeFmenor = m
sexoF = “mulher”
}
se (i > idadeFmaior e s == ‘F’){
idadeFmaior = i
nomeFmaior = m
sexoF = “mulher”
}
se (i <= idadeMmenor e s == ‘M’){
idadeMmenor = i
nomeMmenor = m
sexoM = “homem”
}
se (i > idadeMmaior e s == ‘M’){
idadeMmaior = i
nomeMmaior = m
sexoM = “homem”
}c++
}
escreva(“===================================================================\n”)
escreva(“A “, sexoF, ” mais jovem é a “, nomeFmenor, ” que tem “, idadeFmenor, ” anos\n”)
escreva(“A “, sexoF, ” mais velha é a “, nomeFmaior, ” que tem “, idadeFmaior, ” anos\n”)
escreva(“O “, sexoM, ” mais jovem é o “, nomeMmenor, ” que tem “, idadeMmenor, ” anos\n”)
escreva(“O “, sexoM, ” mais velho é o “, nomeMmaior, ” que tem “, idadeMmaior, ” anos”)}
}-
19 de abril de 2022 às 10:48 #91611
IcaroFilho
ModeradorBom dia.
Primeiramente, evite usar vaiáveis com 1 letra… por mais que você saiba do que se trata, nos programamos para outras pessoas lerem.
ex.: i => idade | s => sx ou sexo | m => nomeQuanto aos problemas.
Na primeira condição, não esta sendo atribuído os nomes, apenas as idades.Eu usaria uma abordagem diferente. Separaria por sexo e depois faria a checagem.
1- Se sexo F ou M
2- Se é a primeira entrada
3 – Se é menor que a idade cadastrada
4 – se é maior que a idade cadastradausando o seu código, criei o raciocínio para F, basta replicar para M
se(s == 'F' ou s == 'f'){ se(nomeFmenor == " "){ nomeFmenor = m nomeFmaior = m idadeFmenor = i idadeFmaior = i } senao { se (i < idadeFmenor ){ nomeFmenor = m idadeFmenor = i } se (i > idadeFmaior){ nomeFmaior = m idadeFmaior = i } } }
-
13 de junho de 2022 às 19:37 #95446
Filipe Alexandre De Souza
Participanteentao no caso, a separa primeiro o valor do sexo e depois faz as atribuiçoes ?
eu fiz isso e os valor de idade que o usuario digita vai tanto para maior idade das mulher tanto para a maior idade dos homens.aqui o codigo
se(c==1){ maior_idade_sexo_h = idade menor_idade_sexo_h = idade maior_idade_sexo_f = idade menor_idade_sexo_f = idade } se(sexo == 'H'){ se(idade < menor_idade_sexo_h){ menor_idade_sexo_h = idade } se(idade > maior_idade_sexo_h){ maior_idade_sexo_h = idade } } se(sexo == 'F'){ se(idade < menor_idade_sexo_h){ menor_idade_sexo_f = idade } se(idade > maior_idade_sexo_f){ maior_idade_sexo_f = idade } }
Todos as idades me aparecenm com o mesmo valor, apos digitar a priemeira pessoa.
-
-
21 de abril de 2022 às 08:18 #91703
Robson Lopes da Silva
ParticipanteFuncionou perfeitamente.
Obrigado. -
2 de julho de 2022 às 18:54 #96746
Manoel Garcia De Noronha Neto
ParticipanteMEU PRIMEIRO CÓDIGO:::
programa
{funcao inicio()
{
escreva(“{ EXERCÍCIO 038 – Analisando Idades } \n”)
cadeia nome, maisjovemf = “..”, maisvelhaf = “..”, maisjovemm = “..”, maisvelhom = “..”
inteiro c = 1, idade, maioridadef=0, menoridadef=0, maioridadem=0, menoridadem=0
caracter sexo
enquanto (c <= 4){
escreva(“————\n”)
escreva(c,”ª PESSOA\n”)
escreva(“————\n”)
escreva(“NOME: “)
leia (nome)
escreva(“SEXO[M/F]: “)
leia(sexo)
escreva(“IDADE: “)
leia (idade)se ( c == 1){
maioridadef = idade
menoridadef = idade
maisjovemf = nome
maisvelhaf = nome
maioridadem = idade
menoridadem = idade
maisjovemm = nome
maisvelhom = nome
}senao{
se( idade < menoridadef e sexo == ‘f’ ou sexo == ‘F’){
menoridadef = idade
maisjovemf = nome
}se(idade > maioridadef e sexo == ‘f’ ou sexo == ‘F’){
maioridadef = idade
maisvelhaf = nome
}se(idade > maioridadem e sexo == ‘m’ ou sexo == ‘M’){
maioridadem = idade
maisvelhom = nome
}se( idade < menoridadef e sexo == ‘m’ ou sexo == ‘M’){
menoridadem = idade
maisjovemm = nome
}
}
c++
}escreva(“\n=============================”)
escreva(“\nA mulher mais jovem é “,maisjovemf,” que tem “,menoridadef,” anos”)
escreva(“\nA mulher mais velha é “,maisvelhaf,” que tem “,maioridadef,” anos”)
escreva(“\nO homem mais jovem é “,maisjovemm,” que tem “,menoridadem,” anos”)
escreva(“\nO homem mais velho é “,maisvelhom,” que tem “,maioridadem,” anos”)
}
}MEU SEGUNDO CÓDIGO APÓS VER A AULA DE EXPLICAÇÃO:::
rograma
{funcao inicio()
{
escreva(“{ EXERCÍCIO 038 – Analisando Idades } \n”)
cadeia nome, novom=””,novof=””,velhom=””,velhaf=””
inteiro c=1, idade, totm=0,totf=0
inteiro menorm=0, menorf=0, maiorm=0,maiorf=0
caracter sexo
enquanto (c <= 4){
escreva(“————\n”)
escreva(c,”ª PESSOA\n”)
escreva(“————\n”)
escreva(“NOME: “)
leia (nome)
escreva(“SEXO[M/F]: “)
leia(sexo)
escreva(“IDADE: “)
leia (idade)se (sexo == ‘M’ ou sexo == ‘m’){
totm++
se (totm ==1){
menorm = idade
novom = nome
maiorm = idade
velhom = nome
}senao se (idade > maiorm){
maiorm = idade
velhom = nome
}se (idade < menorm){
menorm = idade
novom = nome
}
}senao se (sexo == ‘F’ ou sexo == ‘f’){
totf++
se(totf ==1){
menorf = idade
novof = nome
maiorf = idade
velhaf = nome
}senao se(idade > maiorf){
maiorf = idade
velhaf = nome
}se (idade < menorf){
menorf = idade
novof = nome
}}
c++
}
escreva(“\n===============================”)
escreva(“\nAo todo tem “,totm,” homens e “,totf,” mulheres”)
se(totf >= 1){
escreva(“\nA mulher mais jovem é a “,novof,” que tem “,menorf,” anos.”)
escreva(“\nA mulher mais velha é a “,velhaf,” que tem “,maiorf,” anos.”)
}senao se(totm >=1){
escreva(“\nO homem mais jovem é o “,novom,” que tem “,menorm,” anos.”)
escreva(“\nO homem mais velho é o “,velhom,” que tem “,maiorf,” anos.”)
}
}
}-
3 de julho de 2022 às 07:48 #96766
IcaroFilho
ModeradorBom dia,
Ótima evolução.
A visão deste exercício era primeiramente a separação dos sexos para depois a avaliação das idades. ( que foi o erro do seu primeiro código, onde você estava fazendo com que a primeira entrada preenchesse os dois sexo. ).
Um ponto muito importante na programação é o conceito de que se programa para outros programadores lerem, por isso a pratica de dar nomes explícitos para as variáveis.
Ex.:
maisjovemf
–>nome_mulher_jovem
menoridadef
–>idade_mulher_jovem
Assim , quem lê não precisa ler o contexto todo do código para entender do que se trata.
Outro ponto importante aqui para o fórum é a formatação.
Em códigos mais complexos ( que vai acontecer mais pro final ), a formatação deixa a leitura mais fácil, além de dar a possibilidade de copiar o código original para um editor de código. ( quando se copia do jeito que tá, temos que fazer ajustes de caracteres. )
Para manter a formatação basta ao colar aqui, selecionar todo o trecho de código e clicar emCODE
que se encontra logo acima da área de texto, você perceberá que irá ser adicionado crases no começo e no final do seu código.
Apenas isto fará uma enorme diferença para que possamos lhe ajudar com mais agilidade.Continue a evolução,
Bons estudos!
-
-
7 de julho de 2022 às 22:24 #97025
Rafael Cipriano da Silva
ParticipanteO meu programa só exibe o nome dos dois sexos no resultado final se eu tiver três opções para o mesmo sexo!
Então se eu tiver 2 mulheres e 3 homens ele exibe o homem jovem e o homem velho mas, não exibe o nome da primeira mulher só o da segunda!O que eu posso estar revendo? Sendo que usei a mesma lógica para todas as verificações!
programa { funcao inicio() { //Declaração de variáveis para as estruturas de controle inteiro C = 1, P = 1, IDADE cadeia NOME, SEXO //Declaração de variáveis do resultado cadeia MULHER_JOVEM = "", MULHER_VELHA = "", HOMEM_JOVEM = "", HOMEM_VELHO = "" inteiro IDADE_MULHER_JOVEM = 0, IDADE_MULHER_VELHA = 0, IDADE_HOMEM_JOVEM = 0, IDADE_HOMEM_VELHO = 0 escreva("{ EXERCÍCIO 038 - Analisando idades }\n") enquanto(C <= 5) { escreva("================\n") escreva(P, "° PESSOA\n") escreva("NOME: ") leia(NOME) escreva("IDADE: ") leia(IDADE) escreva("SEXO[M/F]: ") leia(SEXO) escreva("================\n") se(C == 1) { IDADE_MULHER_JOVEM = IDADE IDADE_MULHER_VELHA = IDADE IDADE_HOMEM_JOVEM = IDADE IDADE_HOMEM_VELHO = IDADE } se(SEXO == "F" e IDADE < IDADE_MULHER_JOVEM) { IDADE_MULHER_JOVEM = IDADE MULHER_JOVEM = NOME } se(SEXO == "F" e IDADE > IDADE_MULHER_VELHA) { IDADE_MULHER_VELHA = IDADE MULHER_VELHA = NOME } se(SEXO == "M" e IDADE < IDADE_HOMEM_JOVEM) { IDADE_HOMEM_JOVEM = IDADE HOMEM_JOVEM = NOME } se(SEXO == "M" e IDADE > IDADE_HOMEM_VELHO) { IDADE_HOMEM_VELHO = IDADE HOMEM_VELHO = NOME } C++ P++ } //Resultado escreva("A mulher mais jovem é a ", MULHER_JOVEM, " que tem ", IDADE_MULHER_JOVEM, " anos.\n") escreva("A mulher mais velha é a ", MULHER_VELHA, " que tem ", IDADE_MULHER_VELHA, " anos.\n") escreva("O homem mais jovem é o ", HOMEM_JOVEM, " que tem ", IDADE_HOMEM_JOVEM, " anos.\n") escreva("O homem mais velho é o ", HOMEM_VELHO, " que tem ", IDADE_HOMEM_VELHO, " anos.\n") } }
-
8 de julho de 2022 às 07:02 #97037
IcaroFilho
ModeradorBom dia Rafael,
Sempre antes de criar um novo tópico, procure no fórum se o mesmo já não foi criado. Assim deixa o nosso fórum mais limpo, sendo mais fácil de se encontrar as soluções, concentrando todas as duvidas sobre um assunto em um único lugar e também pode ser que sua duvida seja sanada na resposta de outro colega… que é este caso.Você cometeu o mesmo erro do Robson ( 3º post daqui ) e em seguida dou uma explicação sobre a resolução.
OBS: também há outro tópico do exercício 38 em que dou uma explicação mais completa e com resolução AQUIEm resumo, você esta errando por que esta atribuindo os nomes e idades para ambos os sexos no primeiro momento em que o programa roda, sendo que na primeira vez só é atribuído um sexo.
Caso leia os 2 tópicos e ainda continue com duvida, basta responder aqui.
-
-
21 de agosto de 2022 às 21:11 #99946
Yuri Chaves Martins
ParticipanteCreio que a verificação de se o homem ou a mulher digitada é a primeira pode ser feita sem a necessidade de um “se” específico para isso no exercício. Podem me informar se existe alguma situação que o código a seguir não funciona?
programa
{funcao inicio()
{
inteiro c=1, id, ho=0, mu=0, idhomai=0, idhomen=0, idmumai=0, idmumen=0
cadeia nome, sexo, nhomai=””, nhomen=””, nmumai=””, nmumen=””
enquanto (c<=5) {
escreva(“———————–\n”)
escreva(c+”a. PESSOA\n”)
escreva(“———————–\n”)
escreva(“NOME: “)
leia(nome)
escreva(“SEXO [M/F]: “)
leia(sexo)
escreva(“IDADE: “)
leia(id)
se (sexo == “M” ou sexo == “m”) {
ho++
se (id > idhomai ou idhomai == 0) {
idhomai = id
nhomai = nome
}
se (id < idhomen ou idhomen == 0) {
idhomen = id
nhomen = nome
}
}
se (sexo == “F” ou sexo == “f”) {
mu++
se (id > idmumai ou idmumai == 0) {
idmumai = id
nmumai = nome
}
se (id < idmumen ou idmumen == 0) {
idmumen = id
nmumen = nome
}
}
c++
}
//RESULTADOS:
escreva(“================================================================\n”)
escreva(“Ao todo tivemos ” + ho + ” homens e ” + mu + ” mulheres cadastrados.\n”)
escreva(“O homem mais jovem é “+ nhomen + ” que tem ” + idhomen + ” anos.\n”)
escreva(“O homem mais velho é ” + nhomai + ” que tem ” + idhomai + ” anos.\n”)
escreva(“A mulher mais jovem é ” + nmumen + ” que tem ” + idmumen + ” anos.\n”)
escreva(“A mulher mais velha é ” + nmumai + ” que tem ” + idmumai + ” anos.\n”)
escreva(“================================================================\n”)
}
}PS: sei que os nomes que dei para as minhas variaveis não são os melhores
-
22 de agosto de 2022 às 12:52 #99966
Tutora Jessica
ModeradorOlá Yuri, então, não consegui compreender muito qual seria sua dúvida, me desculpa..
Você poderia nos explicar melhor ?
Você gostaria de saber se tem erro no seu código?
Quer saber em quais ocasiões usar ou não o SE?
Te aguardo novamente para tentar lhe ajudar no que precisa 🖖 -
23 de agosto de 2022 às 22:23 #100047
Yuri Chaves Martins
ParticipanteOlá, Jessica,
Obrigado pela resposta. Minha dúvida diz respeito a lógica que o professor Guanabara ensina quando queremos guardar o maior número de uma sequência em uma variável. Ele ensina que se o número for o primeiro ele automaticamente é o maior (já que não há outro para comparação) e escreve código para testar essa condição na forma de “se, senao”. Por exemplo:
1)
se (n for o primeiro) {
maior = n
} senao {
se (n > maior) {
maior = n
}
}Contudo acho que essa estrutura pode ser simplificada utilizando o operador booleano “ou” da seguinte forma.
2)
se ( (n for o primeiro) ou (n > maior)) {
maior = n
}
Acho que essa segunda estrutura economiza linhas de codigo e algumas vezes é mais elegante que a primeira. O meu código anterior foi feito utilizando a estrutura 2 e gostaria de saber se isso está correto ou não. Qual seria a condição ou as condições nas quais a estrutura 1 seria mais apropriada que a estrutura 2. -
24 de agosto de 2022 às 10:32 #100063
Tutora Jessica
ModeradorOla Yuri, acho que agora consegui entender melhor..
Então, não há uma forma exatamente correta para escrever seu código, você pode usar da forma que se sentir melhor, o que você achar que se encaixa melhor, cada código é único..
O Professor Guanabara tenta explicar da forma mais fácil para que todas as funções e todo o passo a passo seja entendido pelos alunos, a partir da explicação dele você pode usar da forma que achar que deve, pode ficar a vontade para pesquisar diversas outras formas e se enquadrar no que achar melhor.
O importante das aulas iniciais é que seja entendido o que cada comando faz, e você demonstrou que entendeu direitinho.
Parabéns pelo seu empenho, continue assim que você vai longe 🖖 -
14 de setembro de 2022 às 17:10 #101364
Fernando Alex Galves Coelho da Rocha
ParticipanteEu devo estar olhando tão de perto que não consigo enxergar. Não consigo encontrar o pq de não encontrar a mulher jovem e a idade. Está aparecendo, para ela, a idade e nome da declaração inicial.
Alguém poderia esclarecer? Grato.programa
{funcao inicio()
{
inteiro idade, maiorF=0, menorF=0, maiorM=0, menorM=0, c=1
cadeia nome, velha=””, velho=””, nova=””, novo=””
caracter sexoenquanto(c<=5){
escreva(c + “a PESSOA”)
escreva(“———-\n”)
escreva(“NOME: “)
leia(nome)
escreva(“\nSEXO:[M/F] “)
leia(sexo)
escreva(“\nIdade: “)
leia(idade)
se(sexo==’M’ ou sexo==’m’){
se(c==1){
maiorM=idade
menorM=idade
velho=nome
novo=nome
}
senao{
se(idade>maiorM){
maiorM=idade
velho=nome
}
se(idade<menorM){
menorM=idade
novo=nome }
}}
senao se(sexo==’F’ ou sexo==’f’){
se(c==1){
maiorF=idade
menorF=idade
velha=nome
nova=nome
}
senao{
se(idade>maiorF){
maiorF=idade
velha=nome
}
se(idade<menorF){
menorF=idade
nova=nome
}}
}c++
}
escreva(“O homem mais velho é o “+velho+ ” e sua idade é de ” +maiorM+ ” anos.”)
escreva(“\nO homem mais jovem é o ” +novo+ ” e sua idade é de ” ,menorM, ” anos.”)
escreva(“\nA mulher mais velha é a ” + velha+ ” e sua idade é de “, maiorF, ” anos.”)
escreva(“\nA mulher mais jovem é a ” +nova+ ” e sua idade é de “, menorF, ” anos.”)
}
} -
15 de setembro de 2022 às 10:43 #101457
Tutora Jessica
ModeradorOla Fernando, testei seu código e apareceu a mulher mais nova direitinho..
Veja se tem alguma dúvida quanto a esse exercício, ou me explique melhor a sua dúvida.
No fórum, temos outra publicação com diversas explicações para o exercício 38
Nesse link : https://www.estudonauta.com/foruns/topic/mod-03-ex-038/-
15 de setembro de 2022 às 14:18 #101478
Fernando Alex Galves Coelho da Rocha
ParticipanteO que está aparecendo pra mim ao executar é:
O homem mais velho é Ricardo e sua idade é de 35 anos.
O homem mais jovem é o Caio e sua idade é de 4 anos.
A mulher mais velha é a Bianca e sua idade é de 32 anos.
A mulher mais jovem é a e sua idade é 0 anos.Pode ser algum bug aqui do Portugol já que apareceu pra você. Não sei. hehe
-
-
16 de setembro de 2022 às 13:02 #101582
Tutora Jessica
ModeradorOla Fernando,
Você já deu uma olhadinha nas resoluções acima, observei e seu código esta faltando um contador dentro do SE masculino e feminino.
-
-
AutorPosts
- Você deve fazer login para responder a este tópico.