Ajuda para concluir um exercicio

1. Ajuda para concluir um exercicio

Leonardo Guidolin
Galeto

(usa Outra)

Enviado em 15/04/2019 - 21:02h

Sou iniciante na programaçao em C, estou com duvidad de como realizar um exercicio, sendo q podemos usar somente WHILE ou FOR. Alguem pode me ajudar.
Exercicio:
Realizou-se uma pesquisa e os seguintes dados foram solicitados para os
entrevistados: sexo, idade, quantidade de livros que leu no ano de 2018.
Escreva um programa que leia os dados informados pelo usuário. Os dados
devem ser solicitados até que a idade digitada seja um valor negativo.
Calcular e imprimir as seguintes informações:
a) O total de livros lidos pelos entrevistados menores de 12 anos;
b) Quantidade de mulheres que leram 5 livros ou mais;
c) O total de pessoas que leram 0 livros;
d) A média de idade dos homens que leram menos que 5 livros.


  


2. Re: Ajuda para concluir um exercicio

Berghetti
berghetti

(usa Debian)

Enviado em 15/04/2019 - 23:03h

Ola, boa noite, segue mais o menos a ideia,
só traduzir para o C

  
livrosId12 <- 0
qtMulheres <- 0
p <- 0

1 enquanto idade > 0
2 sexo <- leia sexo
3 idade <- leia idade
4 qtLivros <- leia qtLivros
5
6 se idade < 12
7 livrosId12 <- livrosId12 + qtlivros
8
9 se sexo = 'F' e qtlivros >= 5
10 qtMulheres <- qtMulheres + 1
11
12 se qtlivros = 0
13 p <- p + 1
14
15 fim enquanto
16
17 imprime livrosId12
18
19 imprime qtMulheres
20
21 imprime p



3. Re: Ajuda para concluir um exercicio

Leonardo Guidolin
Galeto

(usa Outra)

Enviado em 15/04/2019 - 23:10h

Fantastico. Muito obrigado pela ajuda meu amigo.


4. Re: Ajuda para concluir um exercicio

Paulo
paulo1205

(usa Ubuntu)

Enviado em 16/04/2019 - 12:23h

berghetti escreveu:

Ola, boa noite, segue mais o menos a ideia,
só traduzir para o C

  
livrosId12 <- 0
qtMulheres <- 0
p <- 0

1 enquanto idade > 0


Qual o valor da idade na primeira iteração? Como saber se esse teste vai funcionar ou não?

Lembre que nem sempre uma variável que não tenha sido explicitamente definida pode ser usada de modo seguro em comparações ou para produzir valores válidos em outras operações. Esse cuidado é necessário não apenas em C, mas também em muitas outras linguagens.

  2     sexo <- leia sexo
3 idade <- leia idade
4 qtLivros <- leia qtLivros
5
6 se idade < 12
7 livrosId12 <- livrosId12 + qtlivros
8
9 se sexo = 'F' e qtlivros >= 5
10 qtMulheres <- qtMulheres + 1
11
12 se qtlivros = 0
13 p <- p + 1
14
15 fim enquanto
16
17 imprime livrosId12
18
19 imprime qtMulheres
20
21 imprime p


O enunciado original induz a algo que me parece um erro: ele sugere ler primeiro o sexo, depois a idade e depois o resto, mas toma a decisão de interromper a leitura em função da idade. Sendo assim, ao decidir parar, o usuário teria de criar um sexo aleatório antes de poder dizer que quer terminar. Eu acho muito deselegante essa ideia de o usuário ter de criar dados “lixo” para compensar uma especificação de algoritmo mal feita.

Portanto, se você tiver a liberdade de alterar a ordem em que os dados são lidos, sugiro ler primeiro a idade, e depois os demais dados. Assim, você terá um único marcador de fim dos dados, sem ter de gerar um valor inválido qualquer para as demais informações que, de outra forma, teriam de ser lidas antes de se chegar ao marcador.


... “Principium sapientiae timor Domini, et scientia sanctorum prudentia.” (Proverbia 9:10)


5. Re: Ajuda para concluir um exercicio

Berghetti
berghetti

(usa Debian)

Enviado em 16/04/2019 - 17:02h


Boa tarde,
obrigado pelas observações Paulo,
sempre aprendo, mesmo que não interagindo, com suas repostas em outros tópicos.

  livrosId12 <- 0
qtMulheres <- 0
p <- 0

enquanto

idade <- leia idade
se idade <= 0
saia

sexo <- leia sexo
qtLivros <- leia qtLivros

se idade < 12
livrosId12 <- livrosId12 + qtlivros

se sexo = 'F' e qtlivros >= 5
qtMulheres <- qtMulheres + 1

se qtlivros = 0
p <- p + 1

fim enquanto

imprime livrosId12

imprime qtMulheres

imprime p







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts