ex-42 – módulo 03

Home Fóruns Programação Básica ex-42 – módulo 03

Visualizando 12 respostas da discussão
  • Autor
    Posts
    • #155179

      Boa noite! Esse meu código tá dando erro, mas não consigo identificar qual seria. Pode me ajudar?

      inclua biblioteca Tipos –> ti
      inclua biblioteca Texto –> t
      funcao inicio()
      {
      cadeia nome
      caracter sexo
      caracter resp
      real sal = 0, total = 0.0, totalM = 0.0, totalF = 0.0, mediasalM = 0.0, maiorsalM = 0.0, totalF1000 = 0.0
      inteiro maiorM = 0, menorM = 0
      real somasM = 0.0, somasF = 0.0
      enquanto (verdadeiro) {
      escreva(“\nNOME: “)
      leia(nome)
      escreva(“SEXO [M/F]: “)
      leia(sexo)
      se (sexo == ‘M’ ou sexo == ‘m’) {
      totalM = totalM + 1//homens
      somasM = somasM + sal
      se (totalM == 1) {
      maiorM = sal
      menorM = sal
      } senao {
      se (sal > maiorM) {
      maiorM = sal
      }
      }
      }
      se (sexo == ‘F’ ou sexo == ‘f’) {
      totalF = totalF + 1//mulheres
      somasF = somasF + sal
      } se (sal > 1000) {
      totalF1000 = totalF1000 + 1
      }
      escreva(“SALÁRIO: R$ “)
      leia(sal)
      escreva(“Quer continuar? [S/N] “)//pergunta se quer prosseguir
      leia(resp)
      escreva(“—————————-“)
      total = total+ 1//total de funcionário //
      se (resp == ‘N’ ou resp == ‘n’) {
      pare
      }
      }//fim do enquanto
      escreva(“\n========== RESULTADOS ==========”)
      escreva(“\nTotal de Funcionários: “, total)
      escreva(“\nTotal de Homens: “, totalM)
      escreva(“\nTotal de Mulheres: “, totalF)
      escreva(“\nA média salarial dos Homens é “, (somasM/totalM)
      escreva(“\nTemos “, totalF1000, ” mulheres ganhando mais de R$1000.”)
      escreva(“\nO maior salário entre os Homens é de R$”, maiorM)

      }
      }

    • #155187
      Tutora Jessica
      Moderador

      Ola Isabela, qual erro aparece para você?

    • #155199

      Aparece essa mensagem: linha 63 : a expressão não foi finalizada corretamente. Insira o caracter ‘(‘ para corrigir o problema. Não faz sentido para mim :((( não encontro o erro.`
      funcao inicio()
      {
      cadeia nome
      caracter sexo
      caracter resp
      real salario = 0.0, total = 0.0, totalM = 0.0, totalF = 0.0, mediasalM = 0.0, maiorsalM = 0.0, totalF1000 = 0.0
      inteiro maiorM = 0, menorM = 0
      real somasM = 0.0

      enquanto (verdadeiro) {
      escreva(“\nNOME: “)
      leia(nome)
      escreva(“SEXO [M/F]: “)
      leia(sexo)
      escreva(“SALÁRIO: R$ “)
      leia(salario)
      total = total+ 1//total de funcionário //
      se (sexo == ‘M’ ou sexo == ‘m’) {
      totalM = totalM + 1//homens
      somasM = somasM + salario
      se (totalM == 1) {
      maiorM = salario
      menorM = salario
      } senao {
      se (salario > maiorM) {
      maiorM = salario
      }
      }
      }
      se (sexo == ‘F’ ou sexo == ‘f’) {
      se (salario > 1000) {
      totalF1000 = totalF1000 + 1

      }
      totalF = totalF + 1//mulheres
      somasF = somasF + salario
      }

      escreva(“Quer continuar? [S/N] “)
      leia(resp)
      escreva(“—————————-“)

      se (resp == ‘N’ ou resp == ‘n’) {
      pare
      }

      }

      escreva(“\n========== RESULTADOS ==========”)
      escreva(“\nTotal de Funcionários: “, total)
      escreva(“\nTotal de Homens: “, totalM)
      escreva(“\nTotal de Mulheres: “, totalF)
      escreva(“\nA média salarial dos Homens é “, (somasM/totalM)
      escreva(“\nTemos ” + totalF1000 + ” mulheres ganhando mais de R$1000.”)
      escreva(“\nO maior salário entre os Homens é de R$”, maiorM)

      }

      }

    • #155203
      Tutora Jessica
      Moderador

      Olá Isabela, observe linha a linha do seu código e observe se todo ele esta fechado ou aberto corretamente com ).

    • #155204

      Ele tá correto :((” não sei mesmo qual é o erro

      • #155207
        Tutora Jessica
        Moderador

        Onde esta correto?
        Observe com mais atenção todo fechamento e abertura dos parênteses.

    • #155209

      Eu olhei todos os fechamentos e aberturas de parênteses e chaves e ainda não encontrei mesmo

    • #155212
      Tutora Jessica
      Moderador

      Isabela você precisa observar com mais atenção, observe os seus escrevas, veja se todos estão fechados corretamente.
      Caso não esteja conseguindo encontrar, dê uma pausa e depois retorne e observe linha a linha novamente do seu código.

    • #155221

      Você não consegue me ajudar? Eu refiz o código e continua dando o mesmo erro, não estou conseguindo encontrar o erro sozinha

    • #155293
      Tutora Jessica
      Moderador

      Olá Isabela, posso ajudar sim mas é claro.. eu estou tentando da melhor forma, eu só não posso dar a resposta, você precisa tentar, se eu der a resposta eu vou estar atrapalhando seu aprendizado .
      Vamos juntas linha a linha, pode ser ?

      Testa essa linha somente: abre o portugol com uma aba somente para os testes e coloca essa parte do codigo e ve se aparece algum erro :

      escreva(“\n========== RESULTADOS ==========”)

    • #155298

      Consegui descobrir onde estava o erro. Haviam 2. Obrigada!

    • #155305
      Tutora Jessica
      Moderador

      Olá Isabela , que maravilha!!

      Compartilha conosco quais foram os erros que encontrou, assim você estará ajudando outros alunos com a mesma dúvida que a sua .
      Bons estudos 🖖🏼

    • #155316

      Boa tarde! Tenho uma dúvida nessa questão. Ao colocar o “total = total + 1” ali ao final do código o total fica errado, mas ao colocar antes, como logo antes da pergunta se deseja continuar fica correto e eu queria entender o porquê disso.


      funcao inicio()
      {
      cadeia nome
      caracter sexo
      caracter resp
      real salario = 0.0, total = 0.0, totalM = 0.0, totalF = 0.0, mediasalM = 0.0, maiorsalM = 0.0, totalF1000 = 0.0
      inteiro maiorM = 0, menorM = 0
      real somasM = 0.0, somasF = 0.0

      enquanto (verdadeiro) {
      escreva(“\nNOME: “)
      leia(nome)
      escreva(“SEXO [M/F]: “)
      leia(sexo)
      escreva(“SALÁRIO: R$ “)
      leia(salario)
      se (sexo == ‘M’ ou sexo == ‘m’) {
      totalM = totalM + 1//homens
      somasM = somasM + salario
      se (totalM == 1) {
      maiorM = salario
      menorM = salario
      } senao {
      se (salario > maiorM) {
      maiorM = salario
      }
      }
      }
      se (sexo == ‘F’ ou sexo == ‘f’) {
      se (salario > 1000) {
      totalF1000 = totalF1000 + 1

      }
      totalF = totalF + 1//mulheres
      somasF = somasF + salario
      }

      escreva(“Quer continuar? [S/N] “)//pergunta se quer prosseguir
      leia(resp)
      escreva(“—————————-“)

      se (resp == ‘N’ ou resp == ‘n’) {
      pare
      }

      total = total+ 1//total de funcionário ———-> ao colocar nessa posição o numero de funcionários fica com um a menos
      }

      escreva(“\n========== RESULTADOS ==========”)
      escreva(“\nTotal de Funcionários: “, total)
      escreva(“\nTotal de Homens: “, totalM)
      escreva(“\nTotal de Mulheres: “, totalF)
      escreva(“\nA média salarial dos Homens é “, (somasM/totalM))
      escreva(“\nTemos ” + totalF1000 + ” mulheres ganhando mais de R$1000.”)
      escreva(“\nO maior salário entre os Homens é de R$”, maiorM)

      }

    • #155328
      Tutora Jessica
      Moderador

      Olá Isabela , trouxe sua dúvida para uma ja existente no fórum, peço para que quando for compartilhar alguma duvida observe se no fórum já não há uma dúvida para esse mesmo exercício, caso tenha peço para que coloque sua dúvida no mesmo tópico, assim conseguimos deixar nosso fórum mais organizado e com isso ajudamos mais alunos.

      Sobre sua dúvida, o problema é a ordem da lógica do seu programa, o programa ele lê linha a linha e por isso precisa ter uma ordem para que as instruções sejam executadas com as devidas informações que você quer passar para seu usuário.

      Quando você coloca total = total + 1` após a pergunta “Quer continuar?”, o programa só incrementa o total de funcionários após a resposta ser dada, porém se o usuário escolher não continuar, o programa sai do loop sem incrementar o total de funcionários para a última pessoa cadastrada.

      Já quando você coloca antes da pergunta o programa incrementa o total de funcionários para cada pessoa cadastrada, independente do usuário escolher continuar ou não, sendo essa a opção correta pois assim você garante que o total de funcionários seja atualizado corretamente para cada pessoa cadastrada.

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