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, 2 meses atrás por Tutora Jessica.
-
AutorPosts
-
-
11 de janeiro de 2022 às 08:22 #84148Lais GolinParticipante
Oi 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 #84522Tutora TaináMestre
Lais, 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 #91563Robson Lopes da SilvaParticipante
Saudaçõ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 #91611IcaroFilhoModerador
Bom 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 #95446Filipe Alexandre De SouzaParticipante
entao 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 #91703Robson Lopes da SilvaParticipante
Funcionou perfeitamente.
Obrigado. -
2 de julho de 2022 às 18:54 #96746Manoel Garcia De Noronha NetoParticipante
MEU 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 #96766IcaroFilhoModerador
Bom 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 #97025Rafael Cipriano da SilvaParticipante
O 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 #97037IcaroFilhoModerador
Bom 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 #99946Yuri Chaves MartinsParticipante
Creio 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 #99966Tutora JessicaModerador
Olá 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 #100047Yuri Chaves MartinsParticipante
Olá, 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 #100063Tutora JessicaModerador
Ola 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 #101364Fernando Alex Galves Coelho da RochaParticipante
Eu 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 #101457Tutora JessicaModerador
Ola 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 #101478Fernando Alex Galves Coelho da RochaParticipante
O 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 #101582Tutora JessicaModerador
Ola 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.