Analise dos Exercício 41 e 42

Home Fóruns Programação Básica Analise dos Exercício 41 e 42

Marcado: 

Visualizando 15 respostas da discussão
  • Autor
    Posts
    • #101121
      MARCIO PAIVA
      Participante
      Oi Jéssica tudo bem ?
      
      gostaria que você de uma analisada nesses exercícios.
      
      Eis aqui os códigos:
      
      programa
      {
      inclua biblioteca Matematica-->M
      inclua biblioteca Tipos-->t
      	
      	funcao inicio()
      	{
      		escreva("{EXERCÌCIO 041-Cadastro de amigos}")
      		inteiro c = 1
      		inteiro idade = 0
      		inteiro st_idades = 0
      		inteiro tc = 0
      		inteiro idade_amigo_jovem = 0
      		inteiro idade_amigo_velho = 0
      		real m_idades = 0.0
      		cadeia nome = ""
      		cadeia nome_amigo_jovem = ""
      		cadeia nome_amigo_velho = ""
      		enquanto(verdadeiro){
      			st_idades = st_idades + idade
      			tc = c - 1
      			m_idades = t.inteiro_para_real(st_idades) / tc
      			escreva("\n-------------NOVO AMIGO---------------")
      			escreva("\nOBS: Digite ACABOU no nome para parar")
      			escreva("\nNome: ")
      			leia(nome)
      			se(nome == "ACABOU" ou nome == "acabou"){
      				pare
      			}
      			escreva("Idade: ")
      			leia(idade)
      		     se(nome_amigo_jovem == ""){
      		     	nome_amigo_jovem = nome
      		     	idade_amigo_jovem = idade
      		     }
      		     se(idade<idade_amigo_jovem){
      		     	nome_amigo_jovem = nome
      		     	idade_amigo_jovem = idade
      		     
      		     }senao se(nome_amigo_velho == ""){
      		     	nome_amigo_velho = nome
      		     	idade_amigo_velho = idade
      		     }
      		     se(idade>idade_amigo_velho){
      		     	nome_amigo_velho = nome
      		     	idade_amigo_velho = idade
      		     }
      
      			
      		c++	
      		}
      		escreva("\n********INTERROMPIDO********")
      		escreva("\n========RESULTADO============")
      		escreva("\n Total de amigos cadastrados "+tc)
      		escreva("\n Seu amigo mais velho é "+nome_amigo_velho)
      		escreva(",com "+idade_amigo_velho+" anos")
      		escreva("\n Seu amigo mais jovem é "+nome_amigo_jovem)
      		escreva(",com "+idade_amigo_jovem+" anos")
      		escreva("\nA média de idade do grupo é de "+M.arredondar(m_idades,2))
      	}
      }
      programa
      {
      inclua biblioteca Tipos-->t
      	
      	funcao inicio()
      	{
      		escreva("{EXERCÍCIO 042-Cadastro de Funcionários}")
      		inteiro cont = 1
      		inteiro s_homens = 0
      		inteiro s_mulheres = 0
      		inteiro sm_total_m = 0
      		real sal = 0.0 
      		real m_sal_h = 0.0
      		real maior_sal_h = 0.0
      		cadeia nome
      		cadeia sexo
      		cadeia resp
      		enquanto(verdadeiro){
      			escreva("\nNome: ")
      			leia(nome)
      			escreva("Sexo: [M/F] ")
      			leia(sexo)
      			escreva("Salário R$: ")
      			leia(sal)
      			se(sexo == "M" ou sexo == "m"){
      				s_homens++
      				m_sal_h = (m_sal_h + sal) / s_homens
      				se(sal>maior_sal_h){
      					maior_sal_h = sal
      				}
      			}
      			senao se(sexo == "F" ou sexo == "f"){
      				s_mulheres++
      				se(sal>1000){
      					sm_total_m++
      				}
      			}
      			escreva("quer continuar [S/N]? ")
      			leia(resp)
      			se(resp == "N" ou resp == "n"){
      				pare
      			}
      		cont++	
      		}
      		escreva("\n==========RESULTADO=================")
      		escreva("\nTotal de pessoas cadastradas: "+cont)
      		escreva("\nTotal de homens: "+s_homens)
      		escreva("\nTotal de mulheres: "+s_mulheres)
      		escreva("\nMédia salarial dos homens R$: "+m_sal_h)
      		escreva("\nTotal de mulheres que ganham mais de mil: "+sm_total_m)
      		escreva("\nMaior salário entre os homens: "+maior_sal_h)
      		
      	}
      }
    • #101160
      Tutora Jessica
      Moderador

      Olá Marcio,
      Perfeito, tudo funcionando conforme o exercício pede!!
      Parabéns, continue assim que você vai longe
      Bons estudos 🖖

      • #142670
        Alexandre Rocha
        Participante

        minha nédia esta dando errado e eu nao sei identificar, o que eu posso fazer
        inclua biblioteca Tipos –> t
        inclua biblioteca Matematica –> a

        funcao inicio()
        {
        cadeia nome=”++”, n_nv=”++”, n_vl=”++”
        inteiro id=0, id_nv=100000, id_vl=-100000,c=0, s=0
        enquanto(verdadeiro) {
        escreva(“\n>>>>>>>>>>>> NOVO AMIGO <<<<<<<<<<<<<<“)
        escreva(“\nOBS: Digite [STOP] no nome para parar”)
        escreva(“\nNome: “)
        leia(nome)
        se( nome == “stop” ) {
        pare
        }
        escreva(“\nIdade: “)
        leia(id)

        se( id_nv > id ) {
        id_nv = id
        n_nv = nome
        s += id
        }
        se( id_vl < id ) {
        id_vl = id
        n_vl = nome
        s += id
        }
        c++
        }
        real m = t.inteiro_para_real(s)/c
        escreva(“\nTotal de amigos cadastrados:”+c)
        escreva(“\nSeu amigo mais velho é “+n_vl+”, com “+id_vl+” anos”)
        escreva(“\nSeu amigo mais jovem é “+n_nv+”, com “+id_nv+” anos”)
        escreva(“\nA média de idade do grupo é “+m)
        }
        }

    • #101185
      MARCIO PAIVA
      Participante

      Muito obrigado Jéssica

    • #104296
      Neander Fontes
      Participante

      Olá Jessica, Tudo bem?
      Tenho visto que você corrige os exercícios e tenho notado algumas avaliações na execução que me trouxeram algumas dúvidas.
      Em alguns exercícios, não sei exatamente dizer quais no momento, mas em principal os que pedem a determinação de maiores e menores valores.
      Dentre eles o Exercício 041 Solicitar me fez questionar uma situação que gostaria dessa Ajuda!!
      Ao Colocar os Dados Iguais ao vídeo do Professor, seguido da ordem do Nome e da Idade:
      1) Nome: Pedro
      idade: 13
      2) Nome: Demerval “Nossa que nome Difícil”
      idade: 85
      3) Nome: Ana Claudia
      idade: 12
      4) Nome: Paulo
      idade: 22
      5) Nome: Gustavo
      idade: 40

      Código Ok?! Dados Ficam Corretos, Tudo Certo, Porém….
      Quando se faz:
      2) Nome: Demerval – Não fica atribuído em alguma varável
      idade: 85
      1) Nome: Pedro
      idade: 13
      3) Nome: Ana Claudia
      idade: 12
      4) Nome: Paulo
      idade: 22
      5) Nome: Gustavo
      idade: 40
      Os Dados Finais Ficam Errados, Gostaria de Solução para me ajudar no código! 😀 <3

      programa
      {/*	Módulo03 Aula09 - Repetição com Interrupção "Break"
      * 	Portugol Exercício041.
      *   	Autor: Neander
      *	Data: 03/11/2022
      *	Local: Portugal-Braga
      *	Empresa: Estudonauta
       */
       	inclua biblioteca Texto --> txt
       	inclua biblioteca Tipos --> tp
       	inclua biblioteca Util --> u
      	funcao inicio()
      	{
      //Exercício 041: - Cadastro de Amigos
      		escreva("{ EXERCÍCIO 41 - Cadastro de Amigos }")
      		//Obs.:
      		//Declarações de Variáveis:
      		inteiro contador, idadeAmigo, qtAmigo, idadeMenor
      		inteiro idadeMaior, somaIdade
      		real amigoMedia
      		cadeia nomeAmigo, amigoVelho, amigoNovo
      		//Entrada de Dados:
      		escreva("\n\n---------------------------------------")
      		escreva("\n\t  Lista de Amigos")
      		escreva("\n---------------------------------------")		
      		//Declarações Fixas:
      		contador = 0
      		qtAmigo = 0
      		idadeMaior = 0
      		idadeMenor = 0
      		amigoMedia = 0.0
      		somaIdade = 0
      		amigoVelho = " "
      		amigoNovo = " "
      		//Declarações do Escopo Principal:
      		enquanto (verdadeiro) {
      			escreva("\n============= Novo Amigo ==============")
      			escreva("\nOBS.: Digite ACABOU no nome para parar")
      			escreva("\nNOME: ")
      			leia(nomeAmigo)
      			se (txt.caixa_alta(nomeAmigo) == "ACABOU") {
      				escreva("\t***** INTERROMPIDO *****")
      				pare
      			}
      			escreva("IDADE: ")
      			leia(idadeAmigo)
      				somaIdade += idadeAmigo //Soma das Idades
      				
      			se (qtAmigo == 1) { //Maior ou Menor Número = Idade
      				idadeMaior = idadeAmigo
      				amigoVelho = nomeAmigo
      				idadeMenor = idadeAmigo
      				amigoNovo = nomeAmigo
      			} senao {
      				se (idadeAmigo < idadeMenor) {
      					idadeMenor = idadeAmigo
      					amigoNovo = nomeAmigo
      				}
      				se (idadeAmigo > idadeMaior) {
      					idadeMaior = idadeAmigo
      					amigoVelho = nomeAmigo
      				}
      			}
      			
      			qtAmigo++ //Quantidade de Amigos
      			amigoMedia = tp.inteiro_para_real(somaIdade) / qtAmigo //Média da Idade de todos os Amigos
      		}
      		escreva("\n\n########## RESULTADOS FINAIS ##########")
      		//Declarações Finais:
      		escreva("\nTotal de Amigos cadastrados: " + qtAmigo)
      		escreva("\nA Média de idade do Grupo é de " + amigoMedia + " anos.")
      		escreva("\nSeu Amigo(a) mais novo(a) é " + amigoNovo + " com " + idadeMenor + " anos.")
      		escreva("\nSeu Amigo(a) mais velho(a) é " + amigoVelho + " com " + idadeMaior + " anos.")
      		escreva("\n============================================")	
      		escreva("\n\n------------------------ Fim ------------------------")
      	}
      }
    • #104309
      Tutora Jessica
      Moderador

      Ola Neander,
      Nesse caso é só você colocar um contador para variável qtAmigo..
      Dessa forma:

      escreva("IDADE: ")
      leia(idadeAmigo)
      	qtAmigo++
      	somaIdade += idadeAmigo 

      Veja se funciona dessa forma.
      Bons estudos 🖖

    • #106652

      programa
      {

      funcao inicio()
      {
      cadeia nome, velho = ” “, jovem = ” ”
      inteiro idade, cp = 0, idvelho = 0, idjovem = 0, mediagrupo = 0, acidade = 0
      enquanto(verdadeiro){
      escreva(“\n————- NOVO AMIGO ————-“)
      escreva(“\nOBS: Digite ACABOU no nome para parar.”)
      escreva(“\nNome: “)
      leia(nome)
      se(nome == “ACABOU”){
      escreva(“******* INTERROMPIDO *******”)
      escreva(“\n========== RESULTADOS ==========”)
      pare
      }
      escreva(“Idade: “)
      leia(idade)
      cp++
      se(cp == 1){
      idvelho = idade
      velho = nome
      idjovem = idade
      jovem = nome
      }senao{
      se(idade > idvelho){
      idvelho = idade
      velho = nome
      }
      se(idade < idjovem){
      idjovem = idade
      jovem = nome
      }
      }
      acidade+=idade
      mediagrupo = acidade/cp
      }
      escreva(“\nTotal de amigos cadastrados: “,cp)
      escreva(“\nSeu amigo(a) mais velho(a) é “+velho+”, com “+idvelho+” anos.”)
      escreva(“\nSeu amigo(a) mais jovem é “+jovem+”, com “+idjovem+” anos.”)
      escreva(“\nA média de idade do grupo é de “+mediagrupo)
      }
      }`

    • #106655
      programa
      {
      	
      	funcao inicio()
      	{
      		inteiro salario, cp = 0, totm = 0, totf = 0, salariototalhomem = 0, maiorsalariohomem = 0, maiorquemil = 0, qtdmaiorsalariof = 0
      		cadeia nome, sx, nomeM = " ", nomeF = " "
       		caracter resp
      		enquanto(verdadeiro){
      			escreva("Nome: ")
      			leia(nome)
      			escreva("Sexo: [M/F]: ")
      			leia(sx)
      			escreva("Salário: R$")
      			leia(salario)
      			
      			
      			
      			se(sx == "m" ou sx == "M"){
      				totm++
      				salariototalhomem+= salario
      				se(totm == 1){
      					nomeM = nome
      					maiorsalariohomem = salario
      				}senao{
      					se(salario > maiorsalariohomem){
      						maiorsalariohomem = salario
      					}
      				}
      			}senao{
      				se(sx == "f" ou sx == "F"){
      					totf++
      					se(totf == 1){
      						nomeF = nome
      						maiorquemil = salario
      					}senao{
      						se(salario > 1000){
      							maiorquemil = salario
      							qtdmaiorsalariof++
      						}
      					}
      				}
      			}
      			cp++
      			escreva("Quer continuar? [S/N]: ")
      			leia(resp)
      			se(resp=='n' ou resp == 'N'){
      				escreva("\n====== RESULTADOS ======")
      				pare 
      			}
      			
      		}
      		escreva("\nTotal de pessoas cadastradas: ",cp)
      		escreva("\nTotal de Homens: ",totm)
      		escreva("\nTotal de Mulheres: ",totf)
      		escreva("\nMédia Salaria dos homens: R$",(salariototalhomem/totm))
      		escreva("\nTotal de mulheres que ganham mais que Mil reais: ",qtdmaiorsalariof)
      		escreva("\nMaior salário entre os homens: R$",maiorsalariohomem)
      	}	
      }

      eu fiz, mas acredito q esteja certo, rodei apenas para homem, mas confio em mim, se tiver errado dps volto aq.

    • #106819
      Tutora Jessica
      Moderador

      Ola Matheus, para passar para o próximo exercício, seu código deve estar todo funcionando, o objetivo é aprender e principalmente corrigir os erros 🖖🏼

    • #108275
      Carol Protásio
      Participante

      Bom dia!!
      Estou no ex. 42, fui codando e verificando os resultados, mas estou sem saber onde estou errando ao calcular o numero de mulheres que ganham mais de mil, meu resultado está bem parecido com o do prof. mas o meu resultado está puxando o numero de homens e mulheres que ganham mais de mil. poderia verificar meu cod? muito obrigada

      programa
      {
      inclua biblioteca Matematica –> m
      inclua biblioteca Tipos –> t
      inclua biblioteca Texto –> txt
      funcao inicio()
      {
      inteiro c = 0, totM = 0, totF = 0, totMil = 0
      cadeia nome
      caracter sexo, res
      real sal, medSalM = 0.0, maiorSalM = 0.0, salM = 0.0

      enquanto(verdadeiro){
      escreva(“——————————“)
      escreva(“\n Cadastro de Funcionários\n”)
      escreva(“——————————\n”)
      escreva(“Nome: “)
      leia(nome)
      escreva(“Sexo [F/M]: “)
      leia(sexo)
      escreva(“Salário: R$”)
      leia(sal)

      c++

      se(sexo == ‘M’ ou sexo == ‘m’){
      totM++
      salM += sal
      se(totM == 1){
      maiorSalM = sal
      }senao{
      se(sal > maiorSalM){
      maiorSalM = sal
      }
      }
      }senao se(sexo == ‘F’ ou sexo == ‘f’){
      totF++
      }se (sal > 1000){
      totMil++
      }

      escreva(“Quer continuar? [S/N] “)
      leia(res)
      se(res == ‘N’ou res == ‘n’){
      pare
      }

      }
      medSalM = t.inteiro_para_real(salM)/totM
      escreva(“====== RESULTADOS ======\n”)
      escreva(“Total de pessoas cadastradas, “, c)
      escreva(“\nTotal de mulheres: “, totF)
      escreva(“\nTotal de homens: “, totM)
      escreva(“\nMédia salarial dos homens: “, m.arredondar(medSalM, 2))
      escreva(“\nTemos ” ,totMil, ” mulheres que ganham mais de Mil Reais: “)
      escreva(“\nMaior salário entre os homens: “, maiorSalM)

      }
      }

    • #108313
      Tutora Jessica
      Moderador

      Ola Carol, você só precisa inverter o fechamento do seu senao se.. dessa forma:

      }senao se(sexo == 'F' ou sexo == 'f'){
      	totF++
      se (sal > 1000){
      	totMil++
      }
      }

      o SE de (sal > 1000).. precisa estar dentro do SENAO SE, fechando a chave dele após o SE.

      • #108328
        Carol Protásio
        Participante

        Nossa Jessica, valeu pela correção 🙂 muito obrigada!!

    • #125774
      Filipe Mamud Oliveira
      Participante

      Ola Jéssica,
      No exercicio 42 meu codigo correu bem porém na resposta de quantas mulheres foram cadastradas ele deixou de mostrar um dos valores:
      1 – Eu coloquei para rodar um ‘f’ minusculo e um ‘F’ maiusculo e ele me ocntabilizou apenas uma das respostas, você poderia me ajudar a solucionar?
      2 – O portugol me diz que a variavel salario seria truncado, se eu a declarar como inteiro poderia resultar em um problema caso o usuario marque um salario com decimais, então o declarei real, porém a variavel supho (que representa o salario superior dentre os homens) eu declarei como inteiro e o portugol não o aceita como real, então ele diz que salario sera truncado, porém funciona do jeito correto, mas como eu resolveria o codigo para que o portugol não truncasse a variavel salario ?
      codigo :

      programa
      {

      inclua biblioteca Tipos –> t
      inclua biblioteca Matematica –> m
      funcao inicio()
      {
      escreva(” { EXERCICIO 042 – Cadastro de Funcionarios } “)
      escreva(“\n”)
      caracter r
      inteiro c = 1, homens = 0, mulheres = 0, supmu = 0, sho = 0, supho = 0
      real mediah, salario
      cadeia nome, sexo

      enquanto (verdadeiro) {
      escreva(“Nome: “)
      leia(nome)
      escreva(“Sexo [F/M]: “)
      leia(sexo)
      escreva(“Salario: R$”)
      leia(salario)

      escreva(“Quer continuar? “)
      leia(r)
      se (r == ‘n’ ou r == ‘N’) {
      pare
      }
      se (sexo == “m” ou sexo == “M”) {
      sho += salario
      homens++
      }
      se (sexo == “f” ou sexo == “F”) {
      mulheres++
      }
      se (sexo == “f” ou sexo == “F” e salario >= 1000) {
      supmu++
      }
      se (sexo == “m” ou sexo == “M” e c == 1) {
      supho = salario
      }
      se (sexo == “m” ou sexo == “M” e supho < salario) {
      supho = salario
      }
      c++
      }
      mediah = t.inteiro_para_real(sho) / homens

      escreva(“\n========= RESULTADOS =========”)
      escreva(“\nTotal de pessoas cadastradas: “, c)
      escreva(“\nTotal de Homens: “, homens)
      escreva(“\nTotal de Mulheres: “, mulheres)
      escreva(“\nMédia salarial dos Homens: “, m.arredondar(mediah, 2))
      escreva(“\nTotal de Mulheres que ganham mais de Mil Reais: “, supmu)
      escreva(“\nMaior salario entre os homens: “, supho)

      }
      }

    • #125778
      Tutora Jessica
      Moderador

      Olá Filipe, a intenção desse exercício é você começar a aprender novas formas, nesse por exemplo é usado o se/senao se…
      Dê uma olhada nas explicações acima e tente executar seu exercício usando novas formas, caso tenha dúvidas só retornar ao fórum que iremos lhe ajudar.

    • #125856
      Filipe Mamud Oliveira
      Participante

      Ola Jéssica,
      Eu entendi que minha estrutura estava errada pela tua resposta e vi a correção do exercicio. Porém ainda não entendi quando usar o “senao” e “senao se” dentro de varias formulas, por que para mim por enquanto o “senao” é definitivo, ou seja ele indica a condição final e acaba a variavel. Você poderia me explicar por favor?

    • #125857
      Tutora Jessica
      Moderador

      Ola Filipe, dê uma olhada nesse vídeo do curso em vídeo sobre estruturas condicionais , você precisa entender essas estruturas para continuar o curso com ótimo aproveito :

      href=”https://youtu.be/_g05aHdBAEY?si=f9kMxMOlzmRmsTsF”>https://youtu.be/_g05aHdBAEY?si=f9kMxMOlzmRmsTsF

      • #125860
        Filipe Mamud Oliveira
        Participante

        Ola Jéssica,
        Do que eu entendi dos videos foi que a variavel “senao se” introduz uma condicional suplementar e a “senao” termina o caso, ou seja “senao se” pode se repetir diversas vezes como no caso do IMC mas a “senao” é a definição da ultima possibilidade. Estaria este pensamento correto?

    • #125861
      Tutora Jessica
      Moderador

      Exatamente, você pode utilizar diversas vezes no código.
      O se/senao é usado como condições booleanas (verdadeiro ou falso).
      Exemplo:

    • Estou saindo de casa e esta chovendo (Levo o guarda chuva), senão estiver chovendo (não levo o guarda chuva).
    • Condição verdadeira (SE): esta chovendo – Leva o guarda chuva
      Condição Falsa (SENAO): não esta chovendo – Não leva o guarda chuva

      O único ponto a corrigir no exemplo que deu é que “senao se” não é uma variável e sim uma condição de escolha.

  • #125901
    Filipe Mamud Oliveira
    Participante

    Muito obrigado Jéssica

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