portugol

1. portugol

vinicius
tiuvi

(usa Outra)

Enviado em 27/09/2016 - 19:12h

Da uma ajuda ai galera estou tentando fazer e está dando erro

Escreva um algoritmo que leia o nome, idade e sexo de pessoas finalizando a digitação quando o nome for igual a espaço. Mostrar o total de pessoas digitadas, o percentual de homens e de mulheres.

Algoritmo " 3 "
var
nome , sexo : caractere
idade , qtd , totalh , totalm : inteiro
pctm , pcth : real
inicio
qtd <- 0
totalh <- 0
totalm <- 0
escreva( " Digite o nome, caso queira encerrar o algoritmo clique na barra de espaço " )
leia ( nome )
enquanto ( nome <> " " )faca
escreva ( " Digite o sexo " )
leia ( sexo )
escreva ( " Digite a idade " )
leia ( idade )
qtd <- qtd + 1
se ( sexo = " masculino " )entao
totalh <- totalh + 1
se ( sexo = " feminino " )entao
totalm <- totalm + 1
fimse
fimse
escreva( "Digite o nome " )
leia( nome )
fimenquanto
se ( totalm > 0 ) ou ( totalh > 0 )entao
pctm <- ( qtd - totalh ) * 100
pcth <- ( qtd - totalm ) * 100
escreva ( " O total de pessoas é " , qtd , ". O percentual de pessoas do sexo masculino é " , pcth ,". O percentual de pessoas do sexo feminino é " , pctm )
fimse
se ( totalm = 0 ) ou ( totalh = 0 ) entao
escreva ( " Não foram digitadas informações " )
fimse
fimalgoritmo


  


2. Re: portugol

Cristiano
sempreslack

(usa Slackware)

Enviado em 28/09/2016 - 08:59h

dando erro em aonde mais exatamente? qual linha? Qual erro que ele está apontando?
Que programa você está usando por falar nisso?



3. Re: portugol

Bruno Lima
Smolkyn

(usa openSUSE)

Enviado em 28/09/2016 - 11:41h

Acredito que o erro está aqui:

pctm <- ( qtd - totalh ) * 100
pcth <- ( qtd - totalm ) * 100 // Nesse caso aqui se "Qtd" for 200 e "totalm" for 180 então pcth <- 20 e 20 * 100 = 2.000 então o pcth estaria recebendo 2.000 e não a porcentagem de 20 em 200.

o correto seria:

pcth <- totalh * 100 / qtd
pctm <- totalm * 100 / qtd

ou assim:

pctm <- ( qtd - totalh ) * 100 / qtd
pcth <- ( qtd - totalm ) * 100 /qtd

Exemplo:

Se "Qtd" for 200 e desses 200 o total de homens for 20, já que no seu exemplo pede para especificar se é homem ou mulher se for verdadeiro está incrementando +1 em totalh então totalh <- 20 no final ficando assim
20 * 100 = 2000
2000 / 200 = 10
No caso 10%


Deu pra entender?? Olhei rapidamente o código e foi isso que observei testa aí e ver se dar certo.






Signed by brunnometal:
------------------------------------------------------------
- User: Bruno Lima
- Nasc: 25/04/1983
- Local: Recife/PE
- Distro Principal: Arch Linux (Plasma)
- Distro Experimental: Nenhuma



4. Re: portugol

Cristiano
sempreslack

(usa Slackware)

Enviado em 28/09/2016 - 11:48h

tiuvi escreveu:

Da uma ajuda ai galera estou tentando fazer e está dando erro

Escreva um algoritmo que leia o nome, idade e sexo de pessoas finalizando a digitação quando o nome for igual a espaço. Mostrar o total de pessoas digitadas, o percentual de homens e de mulheres.

Algoritmo " 3 "
var
nome , sexo : caractere
idade , qtd , totalh , totalm : inteiro
pctm , pcth : real
inicio
qtd <- 0
totalh <- 0
totalm <- 0
escreva( " Digite o nome, caso queira encerrar o algoritmo clique na barra de espaço " )
leia ( nome )
enquanto ( nome <> " " )faca
escreva ( " Digite o sexo " )
leia ( sexo )
escreva ( " Digite a idade " )
leia ( idade )
qtd <- qtd + 1
se ( sexo = " masculino " )entao
totalh <- totalh + 1
se ( sexo = " feminino " )entao
totalm <- totalm + 1
fimse
fimse
escreva( "Digite o nome " )
leia( nome )
fimenquanto
se ( totalm > 0 ) ou ( totalh > 0 )entao
pctm <- ( qtd - totalh ) * 100
pcth <- ( qtd - totalm ) * 100
escreva ( " O total de pessoas é " , qtd , ". O percentual de pessoas do sexo masculino é " , pcth ,". O percentual de pessoas do sexo feminino é " , pctm )
fimse
se ( totalm = 0 ) ou ( totalh = 0 ) entao
escreva ( " Não foram digitadas informações " )
fimse
fimalgoritmo


bem cara, pelo que eu to endo aqui tem 3 erros. O primeiro está aqui:

enquanto ( nome <> " " )faca
escreva ( " Digite o sexo " )
leia ( sexo )
escreva ( " Digite a idade " )
leia ( idade )
qtd <- qtd + 1
se ( sexo = " masculino " )entao
totalh <- totalh + 1
se ( sexo = " feminino " )entao
totalm <- totalm + 1
fimse
fimse
escreva( "Digite o nome " )
leia( nome )
fimenquanto
O erro está na colocação de um dos fimse. Da forma como você escreveu, a quantidade de mulheres depende da quantidade de homens, ou seja, se dentro de outro se. O correto aqui seria:
se ( sexo = " masculino " )entao
totalh <- totalh + 1
fimse
se ( sexo = " feminino " )entao
totalm <- totalm + 1
fimse

O segundo erro é mais simples, mas dificil de achar. Ele está aqui:
se ( sexo = " masculino " )entao
se ( sexo = " feminino " )entao
O correto seria assim:
se (sexo = "masculino")entao
se ( sexo = "feminino")entao
Pois é, o problema aqui é só questão de espaço. "masculino" é diferente de " masculino " e "feminino" é diferente de " feminino "
O terceiro erro é um erro de matemática
O correto, pelo que entendi que você quer seria:
pctm <- (totalh/qtd) * 100
pcth <- (totalm/qtd) * 100







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts