exercício 38. programação basica

Home Fóruns Programação Básica exercício 38. programação basica

Visualizando 8 respostas da discussão
  • Autor
    Posts
    • #153301
      programa
      {
      	
      	funcao inicio()
      	{
      		inteiro c = 1, idade, contagem_f = 0, contagem_m = 0, maior_m = 0
      		inteiro menor_m = 0, maior_f = 0, menor_f = 0
      		cadeia nome, novo_f = "", novo_m = "", velho_f = "", velho_m = ""
      		caracter sx
      
      		enquanto (c <= 4) {
      			escreva (c," pessoa\n")
      			escreva ("-------------------------------------------------------\n")
      			escreva ("Digite o nome: ")
      			leia (nome)
      			escreva ("Digite a idade: ")
      			leia (idade)
      			escreva ("Digite o sexo: ")
      			leia (sx)
      			escreva ("===========================================================\n")
      
      			se (sx == 'm' ou sx == 'M') { // sexo masculino
      				contagem_m++
      				
      				se (contagem_m == 1) {
      					novo_m = nome
      					menor_m = idade
      					velho_m = nome
      					maior_m = idade
      					
      				}senao {
      					se (idade > maior_m) {
      						maior_m = idade
      						velho_m = nome
      					}
      					se (idade < menor_m) {
      						menor_m = idade
      						novo_m = nome
      					}
      						
      				}
      			}senao se (sx == 'f' ou sx == 'F') { // sexo feminino
      				contagem_f++
      				se (contagem_f == 1) {
      					novo_f = nome
      					menor_f =idade
      					velho_f = nome
      					maior_f = idade
      				}senao {
      					se (idade > maior_f) {
      						maior_f = idade
      						velho_f = nome
      					}
      					se (idade < menor_f) {
      						menor_f = idade
      						novo_f = nome
      					}
      				}
      			}
      
      			c++
      		}
      		escreva ("\n===========================================================\n")
      		escreva ("Ao todo tem ",contagem_m," masculino e ",contagem_f," feminino\n")
      		escreva ("A mulher mais velha é ",velho_f,". Ela tem ",maior_f," anos\n")
      		escreva ("A mulher mais nova é ",novo_f,". ela tem ",menor_f," anos\n")
      		escreva ("O homem mais velho é ",velho_m,". Ele tem ",maior_m," anos\n")
      		escreva ("O homem mais novo é ",novo_m,". Ele tem ",menor_m," anos\n")
      	}
      }
      

      tá certo?

    • #153336
      Tutora Jessica
      Moderador

      Ola Kauan, você tem alguma duvida?
      Seu codigo apresenta algum erro ou não conseguiu fazer alguma parte dele?

    • #158160

      Jéssica, boa tarde! Estou com problema de lógica nesse programa (já tentei algumas vezes), e consegui fazer funcionar com alguns “erros”.
      Exemplo: quando faço com HOMENS e MULHERES, o sistema me entrega os dados normalmente, porém quando só coloco pessoas de um único sexo, a resposta aparece tanto na opção M/F (João, aparece tanto no F/M).
      Observação: estou tentando resolver o exercício, o mais parecido com a aula. Verifiquei que no exercício, a OPÇÃO HOMEM MAIS NOVO, aparece ZERADO, porém o professor digitou o nome, sexo e a idade do homem mais novo (não consegui printar a tela no fórum). Estou travado nessa situação. Pode me ajudar com essa dúvida? Obrigado.

      Segue abaixo o código do programa:

      programa
      {

      funcao inicio()
      {
      inteiro c, id, moco, velho, moca, idosa, fem, mas
      cadeia sx, nome, namemoco, namemoca, namevelho, nameidosa

      c = 1
      moco = 0
      velho = 0
      moca = 0
      idosa = 0
      fem = 0
      mas = 0
      nome = “”
      namemoco = “”
      namemoca = “”
      namevelho = “”
      nameidosa = “”

      escreva(“{ EXERCÍCIO 038 – Analisando Idades } \n”)
      enquanto(c <= 3){
      escreva(“————————-\n”)
      escreva(c,”ª PESSOA \n”)
      escreva(“————————-\n”)
      escreva(“NOME: “)
      leia(nome)
      escreva(“SEXO: [M/F] “)
      leia(sx)
      escreva(“IDADE: “)
      leia(id)

      se(c == 1){
      moco = id
      moca = id
      velho = id
      idosa = id
      namemoco = nome
      namemoca = nome
      namevelho = nome
      nameidosa = nome

      }
      se(id < moca e sx == “f” ou sx == “F”){
      namemoca = nome
      moca = id
      fem = fem + 1
      }
      se(id > idosa e sx == “f” ou sx == “F”){
      nameidosa = nome
      idosa = id
      fem = fem + 1
      }

      senao{

      se(id < moco e sx == “m” ou sx == “M”){
      namemoco = nome
      moco = id
      mas = mas + 1
      }se(id > velho e sx == “m” ou sx == “M”){
      namevelho = nome
      velho = id
      mas = mas + 1
      }
      }

      c = c + 1
      }
      escreva(“=======================================================\n”)
      escreva(“A mulher MAIS NOVA é “,namemoca,” que tem “,moca,” anos. \n”)
      escreva(“A mulher MAIS VELHA é “,nameidosa,” que tem “,idosa,” anos. \n”)
      escreva(“O homem MAIS JOVEM é “,namemoco,” que tem “,moco,” anos. \n”)
      escreva(“O homem MAIS VELHO é “,namevelho,” que tem “,velho,” anos. \n”)

      }
      }

    • #158161
      Tutora Jessica
      Moderador

      Olá Rondineli, você me enviou o código completo?
      Estou tentando testar seu código mais ele nem esta deixando eu rodar..
      Me informa se ele esta completo e vou pedir para que me envie novamente , colando o código completo, selecionando ele por completo e após clicar em CODE, assim ele vem todo certinho e identado conforme esta fazendo no seu portugol.
      Te aguardo 🖖🏼

    • #158294

      Boa tarde, Jéssica! Sim foi o código completo.

      Segue abaixo o código no formato solicitado:

      programa
      {

      funcao inicio()
      {
      inteiro c, id, moco, velho, moca, idosa, fem, mas
      cadeia sx, nome, namemoco, namemoca, namevelho, nameidosa

      c = 1
      moco = 0
      velho = 0
      moca = 0
      idosa = 0
      fem = 0
      mas = 0
      nome = “”
      namemoco = “”
      namemoca = “”
      namevelho = “”
      nameidosa = “”

      escreva(“{ EXERCÍCIO 038 – Analisando Idades } \n”)
      enquanto(c <= 3){
      escreva(“————————-\n”)
      escreva(c,”ª PESSOA \n”)
      escreva(“————————-\n”)
      escreva(“NOME: “)
      leia(nome)
      escreva(“SEXO: [M/F] “)
      leia(sx)
      escreva(“IDADE: “)
      leia(id)

      se(c == 1){
      moco = id
      moca = id
      velho = id
      idosa = id
      namemoco = nome
      namemoca = nome
      namevelho = nome
      nameidosa = nome

      }
      se(id < moca e sx == “f” ou sx == “F”){
      namemoca = nome
      moca = id
      fem = fem + 1
      }
      se(id > idosa e sx == “f” ou sx == “F”){
      nameidosa = nome
      idosa = id
      fem = fem + 1
      }

      senao{

      se(id < moco e sx == “m” ou sx == “M”){
      namemoco = nome
      moco = id
      mas = mas + 1
      }se(id > velho e sx == “m” ou sx == “M”){
      namevelho = nome
      velho = id
      mas = mas + 1
      }
      }

      c = c + 1
      }
      escreva(“=======================================================\n”)
      escreva(“A mulher MAIS NOVA é “,namemoca,” que tem “,moca,” anos. \n”)
      escreva(“A mulher MAIS VELHA é “,nameidosa,” que tem “,idosa,” anos. \n”)
      escreva(“O homem MAIS JOVEM é “,namemoco,” que tem “,moco,” anos. \n”)
      escreva(“O homem MAIS VELHO é “,namevelho,” que tem “,velho,” anos. \n”)

      }
      }

    • #158300
      Tutora Jessica
      Moderador

      Olá Rondineli, o código não veio identado novamente o que dificulta a minha visualização do código, para enviar identado você precisa colar o código, selecionar ele por inteiro e clicar no botão CODE que fica na caixinha acima de onde digitamos aqui no fórum, me tira uma dúvida, você conseguiu concluir o exercício 37 ?

    • #158358

      Boa tarde, Jéssica! Segue abaixo o programa como solicitado.
      Sim, efetuei o 37. Com relação ao 38, eu verifiquei a correção do professor e fiz a leitura de algumas respostas no Fórum (entendi), porém no código que eu estou com dúvida, é que quando eu informo só pessoas de um sexo, o NOME,IDADE,SEXO aparece em ambos os sexos. Revendo a aula percebi que no exercício feito pelo professor os dados do HOMEM mais novo, não apareceu.
      Acho que estou errando nas sequência do SE e SENAO.

      programa
      {
      	
      	funcao inicio()
      	{
      		inteiro c, id, moco, velho, moca, idosa, fem, mas
      		cadeia sx, nome, namemoco, namemoca, namevelho, nameidosa
      		
      		c = 1
      		moco = 0
      		velho = 0
      		moca = 0
      		idosa = 0
      		fem = 0
      		mas = 0
      		nome = ""
      		namemoco = ""
      		namemoca = ""
      		namevelho = ""
      		nameidosa = ""
      		
      		escreva("{ EXERCÍCIO 038 - Analisando Idades } \n")
      		enquanto(c <= 3){
      			escreva("-------------------------\n")
      			escreva(c,"ª PESSOA \n")
      			escreva("-------------------------\n")
      			escreva("NOME: ")
      			leia(nome)
      			escreva("SEXO: [M/F] ")
      			leia(sx)
      			escreva("IDADE: ")
      			leia(id)
      
      			se(c == 1){
      				moco = id
      				moca = id
      				velho = id
      				idosa = id
      				namemoco = nome
      				namemoca = nome
      				namevelho = nome
      				nameidosa = nome
      				
      			}
      				se(id < moca e sx == "f" ou sx == "F"){
      					namemoca = nome
      					moca = id
      					fem = fem + 1
      				}
      				se(id > idosa e sx == "f" ou sx == "F"){
      					nameidosa = nome
      					idosa = id
      					fem = fem + 1
      				}
      				
      			senao{
      				
      			
      				se(id < moco e sx == "m" ou sx == "M"){
      					namemoco = nome
      					moco = id
      					mas = mas + 1
      				}se(id > velho e sx == "m" ou sx == "M"){
      					namevelho = nome
      					velho = id
      					mas = mas + 1
      				}
      		}
      
      			c = c + 1
      		}
      		escreva("=======================================================\n")
      		escreva("A mulher MAIS NOVA é ",namemoca," que tem ",moca," anos. \n")
      		escreva("A mulher MAIS VELHA é ",nameidosa,"  que tem ",idosa," anos. \n")
      		escreva("O homem MAIS JOVEM é ",namemoco," que tem ",moco," anos. \n")
      		escreva("O homem MAIS VELHO é ",namevelho," que tem ",velho," anos. \n")
      		
      	}
      }
    • #158396
      Tutora Jessica
      Moderador

      Ola Rondineli, o problema está realmente no uso do senao no seu código. O senao é executado se a condição anterior não for verdadeira. No seu caso, se a pessoa for mulher e tiver mais de idosa anos, o código dentro do senao será executado para homens, o que não é o que você espera.

      Vou compartilhar com você apenas uma forma para você conseguir analisar a lógica e ver se consegue implementar no seu código:

      
      programa {
        funcao inicio() {
          inteiro c, id, moco, velho, moca, idosa, fem, mas
          cadeia sx, nome, namemoco, namemoca, namevelho, nameidosa
      
          c = 1
          moco = 0
          velho = 0
          moca = 0
          idosa = 0
          fem = 0
          mas = 0
          nome = ""
          namemoco = ""
          namemoca = ""
          namevelho = ""
          nameidosa = ""
      
          escreva("{ EXERCÍCIO 038 - Analisando Idades } \n")
      
          enquanto(c <= 3){
            escreva("-------------------------\n")
            escreva(c,"ª PESSOA \n")
            escreva("-------------------------\n")
            escreva("NOME: ")
            leia(nome)
            escreva("SEXO: [M/F] ")
            leia(sx)
            escreva("IDADE: ")
            leia(id)
      
            se(c == 1){
              moco = id
              moca = id
              velho = id
              idosa = id
              namemoco = nome
              namemoca = nome
              namevelho = nome
              nameidosa = nome
            }
      
            se(sx == "f" ou sx == "F"){
              fem = fem + 1
              se(id < moca){
                namemoca = nome
                moca = id
              }
              se(id > idosa){
                nameidosa = nome
                idosa = id
              }
            }
      
            se(sx == "m" ou sx == "M"){
              mas = mas + 1
              se(id < moco){
                namemoco = nome
                moco = id
              }
              se(id > velho){
                namevelho = nome
                velho = id
              }
            }
      
            c = c + 1
          }
      
          escreva("=======================================================\n")
          se(fem > 0){
            escreva("A mulher MAIS NOVA é ",namemoca," que tem ",moca," anos. \n")
            escreva("A mulher MAIS VELHA é ",nameidosa," que tem ",idosa," anos. \n")
          } senao {
            escreva("Não há mulheres cadastradas.\n")
          }
      
          se(mas > 0){
            escreva("O homem MAIS JOVEM é ",namemoco," que tem ",moco," anos. \n")
            escreva("O homem MAIS VELHO é ",namevelho," que tem ",velho," anos. \n")
          } senao {
            escreva("Não há homens cadastrados.\n")
          }
        }
      }

      Essa versão do código separa as condições para homens e mulheres, evitando o problema do senao. Além disso, ela verifica se há homens ou mulheres cadastrados antes de imprimir os resultados.

      • Esta resposta foi modificada 3 semanas, 1 dia atrás por Tutora Jessica.
    • #158459

      Boa tarde, Jéssica! Obrigado pelo retorno. Consegui compreender. Só fiquei com um curiosidade. Você fez um SE para informar o sexo e outro SE para informar a idade. Essa declaração era necessária ou foi para deixar a compreensão mais fácil? Obrigado.
      Exemplo abaixo:

      se(sx == “f” ou sx == “F”){
      fem = fem + 1
      se(id < moca){
      namemoca = nome
      moca = id
      }

      • #158461
        Tutora Jessica
        Moderador

        Ola Rondineli, esse foi um exemplo para compreensão e para mostrar que podemos fazer de diversas formas, eu sugiro a você que quando tiver duvidas desse formato que tente executa las sempre que elas aparecerem, pois dessa forma você começa a enxergar novas formas de criar as lógicas do seu programa e principalmente a encontrar e resolver novos erros que vão aparecendo pelo caminho .. rs

        Fico feliz que tenha entendido, qualquer outra duvida só coltar ao fórum que estaremos por aqui para tentar lhe ajudar da melhor forma 🖖🏼

Visualizando 8 respostas da discussão
  • Você deve fazer login para responder a este tópico.