Home › Fóruns › Programação Básica › ex-42 – módulo 03
- Este tópico contém 13 respostas, 2 vozes e foi atualizado pela última vez 1 mês, 1 semana atrás por
Tutora Jessica.
-
AutorPosts
-
-
13 de março de 2025 às 19:49 #155179
Isabela Ferreira de Miranda
ParticipanteBoa 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)}
}
-
14 de março de 2025 às 10:06 #155187
Tutora Jessica
ModeradorOla Isabela, qual erro aparece para você?
-
14 de março de 2025 às 15:27 #155199
Isabela Ferreira de Miranda
ParticipanteAparece 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.0enquanto (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)}
}
-
14 de março de 2025 às 16:17 #155203
Tutora Jessica
ModeradorOlá Isabela, observe linha a linha do seu código e observe se todo ele esta fechado ou aberto corretamente com
)
. -
14 de março de 2025 às 16:43 #155204
Isabela Ferreira de Miranda
ParticipanteEle tá correto :((” não sei mesmo qual é o erro
-
14 de março de 2025 às 17:00 #155207
Tutora Jessica
ModeradorOnde esta correto?
Observe com mais atenção todo fechamento e abertura dos parênteses.
-
-
14 de março de 2025 às 17:05 #155209
Isabela Ferreira de Miranda
ParticipanteEu olhei todos os fechamentos e aberturas de parênteses e chaves e ainda não encontrei mesmo
-
14 de março de 2025 às 17:36 #155212
Tutora Jessica
ModeradorIsabela 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. -
14 de março de 2025 às 21:54 #155221
Isabela Ferreira de Miranda
ParticipanteVocê não consegue me ajudar? Eu refiz o código e continua dando o mesmo erro, não estou conseguindo encontrar o erro sozinha
-
17 de março de 2025 às 10:04 #155293
Tutora Jessica
ModeradorOlá 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 ==========”)
-
17 de março de 2025 às 10:57 #155298
Isabela Ferreira de Miranda
ParticipanteConsegui descobrir onde estava o erro. Haviam 2. Obrigada!
-
17 de março de 2025 às 11:19 #155305
Tutora Jessica
ModeradorOlá 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 🖖🏼 -
17 de março de 2025 às 15:29 #155316
Isabela Ferreira de Miranda
ParticipanteBoa 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.0enquanto (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)}
-
17 de março de 2025 às 18:16 #155328
Tutora Jessica
ModeradorOlá 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.
-
-
AutorPosts
- Você deve fazer login para responder a este tópico.