Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
ET Bilu

achar os 3 maiores números utilizando a estrutura enquanto

Recommended Posts

Estou tentando fazer um algoritmo que leia n números, e destes pegue os 3 maiores, somente utilizando a estutura enquanto. estou meio perdido nesse exercício, pois parece diferenciado

 

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro usuário,

 

Seja bem-vindo ao Fórum do Clube do Hardware.

 

No intuito de servir como fonte de pesquisa no caso de instituições de ensino, informamos que incorrer no resolvimento por completo de questões relacionadas a disciplinas escolares de cursos técnicos e faculdades podem ser revistas e removidas pela Equipe de Moderação do Clube do Hardware.

 

Para sanar dúvidas sobre esse tipo de problema, por gentileza, publique o passo a passo do desenvolvimento da questão, projeto, monografia ou conteúdo em dúvida para que possamos analisar se a resposta está correta ou não, ou para que possa ser auxiliado com a dúvida no desenvolvimento do exercício.

 

Infelizmente, não há como resolver os trabalhos pelos usuários. O objetivo do Fórum do Clube do Hardware é auxiliar seus usuários a encontrar soluções para que possam sanar suas dúvidas, e não de trazer soluções prontas para seus usuários.. Além disso, copiar e colar respostas que não são de autoria própria do qualquer usuário é considerado plágio, o que é ilegal.

 

Esperamos que compreenda.

 

Atenciosamente,

Equipe Clube do Hardware

adicionado 7 minutos depois

***

 

@ET Bilu, uma forma prática seria utilizando vetor... daí ordena ele e pega o 3 primeiros... mas tem outras formas, vai também depender do enunciado.

 

Se não puder usar vetores e/ou métodos de ordenação, algo como ter que ir recebendo e atualizando os 3 maiores, tente achar uma solução manual, ou seja, como se você tivesse que fazer o papel... alguém iria ditando números e você  precisando seguir uma lógica para ir atualizando...

 

Por favor, poste o enunciado completo, e depois qual(is) lógica(s) conseguiu imaginar e onde está com dificuldades.

 

 

No aguardo.

 

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Ismacayo2014     Mas você vai poder usar vetores ?    Se sim então coloque os números no vetor e organize o vetor em ordem crescente e pegue os 3 primeiros números do vetor .  Se não então você vai precisar fazer um código bem extenso pois se você quiser fazer com dez números, por exemplo, vai precisar de dez variáveis para pegar esses números e depois verificar quais são os três maiores, e para isso você precisará usar muito se .

Compartilhar este post


Link para o post
Compartilhar em outros sites
 

como eu disse, somente utilizando a estrutura enquanto, com a quantidade que o usuário especificar. na minha mente só veio alternativas com vetor, alguém aí me dá um pontapé inicial?

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@ET Bilu     com vetor você primeiro pega os números assim

escreva("digite a quantidade de números")
leia(num)
a:=1
enquanto num >= a faca
  escreva("Digite o ",a," numero") 
  leia(vetor[a])
  a := a+1
fimenquanto

depois use o método bublesort para organizar o vetor em ordem crescente, o bublesort é formado por dois loop um dentro do outro  que vai organizando os números no vetor, você pode ver um exemplo dele nesse post aqui :

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@ET Bilu, qual é exatamente o enunciado da questão? poste aqui, talvez facilite!

 

 

Alguns adendos:

18 horas atrás, devair1010 disse:

Se não então você vai precisar fazer um código bem extenso pois se você quiser fazer com dez números, por exemplo, vai precisar de dez variáveis para pegar esses números e depois verificar quais são os três maiores, e para isso você precisará usar muito se .

 

Nesse caso de não usar vetor, acho que não seria uma boa ideia usar essas X variáveis, pois seria inviável verificar elas (apesar de possível)... já que teria que ter uma infinidade de se para checá-las... Vejam, ao utilizar vetores, seria possível usar uma variável para acessar cada posição, o que possibilitaria usar laços de repetições, correto?; já com variáveis simples, cada variável deverá ser acessada especificamente, o que aumentaria exponencialmente a quantidade de se.

 

Uma técnica mais simples seria usar apenas uma variável, e a medida que iria lendo, iria atualizando os 3 maiores. Ai, a questão seria  imaginar, e implementar, algo que funcione sem usar vetores (que é a forma mais simples)

 

 

 

18 horas atrás, devair1010 disse:

Mas você vai poder usar vetores ?    Se sim então coloque os números no vetor e organize o vetor em ordem crescente e pegue os 3 primeiros números do vetor .

Na verdade deveria ser decrescente, para os maiores ficarem no início. Na crescente, teria que pegar os 3 últimos.

 

 

 

15 horas atrás, devair1010 disse:

depois use o método bublesort para organizar o vetor em ordem crescente, o bublesort é formado por dois loop um dentro do outro  que vai organizando os números no vetor, você pode ver um exemplo dele nesse post aqui :

 

18 horas atrás, ET Bilu disse:

como eu disse, somente utilizando a estrutura enquanto, com a quantidade que o usuário especificar. na minha mente só veio alternativas com vetor, alguém aí me dá um pontapé inicial?

 

Como essa regra "somente utilizando a estrutura enquanto" está muito limitadora (já que não poderia usar se, não poderia usar leia(), não poderia usar escreva() etc), imagino que esteja apenas limitando os laços de repetições, se for isso adianto: qualquer estrutura de repetição (repita, enquanto e para) pode ser substituída por outra delas, por exemplo: um laço que está com repita, pode ser "transformado" para enquanto ou para sem muitas dificuldade. O mesmo para outras respectivamente. RESUMIDAMENTE: tecnicamente falando, só precisamos de um tipo laço, existem 3 (ou mais) apenas para facilitar e organizar o código.... cada uma é mais pratica do que a outra a depender do contexto ("só isso").

 

Logo, poderá escreve o Bubble Sort utilizando enquanto (geralmente utilizam-se para). O que satisfaria a "regra". Mas como adiantei lá em cima, é preciso ter o enunciado para entender suas limitações. Se for apenas "não poder usar para ou repita, simplesmente use um enquanto para preencher o vetor, e outros enquanto para ordenar OU se não puder usar vetor, analisar o que já foi dito sobre isso.

 

No aguardo.

Editado por Simon Viegas
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
 

@ET Bilu.

 

Em 15/07/2017 às 09:11, ET Bilu disse:

de repetição somente "enquanto". pode usar "se" tranquilamente. @Simon Viegas

Isso eu tinha certeza absoluta! só estava sendo retórico...

 

Então, qual é o enunciado do problema?

 

 

Editado por Simon Viegas
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
 

@Simon Viegas

"Faça um programa que leia N números e ao final mostre os 3 maiores números digitados." 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
2 horas atrás, ET Bilu disse:

@Simon Viegas

"Faça um programa que leia N números e ao final mostre os 3 maiores números digitados." 

 

E onde entra:

Em 12/07/2017 às 22:47, ET Bilu disse:

somente utilizando a estutura enquanto

?

 

 

No aguardo.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
 
programa
{
	funcao inicio()
	{
		
inteiro n,c=0
		real maior,maior2,maior3,num
		leia(n,num)
		maior=num
		maior2=num
		enquanto(c<n-1){
			leia(num)
			se(num>maior){
				maior3=maior2
				maior2=maior
				maior=num
			}senao se(num>maior2){
					maior3=maior2
					maior2=num
				}senao{
					maior3=num
				}
			c=c++}
		
		escreva(maior,"     ",maior2,"     ",maior3)
	}
}

Foi o que conseguu

adicionado 50 minutos depois

 

Editado por ET Bilu
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
 

Consegui, dei uma pausa pra esfriar a mente e percebi o quanto sou problemático. Podem excluir se necessário

 

programa
{
	funcao inicio()
	{
		
inteiro n,c=0
		real num,maior,maior2,maior3
		leia(n,num)
		maior=num
		maior2=num
		enquanto(c<n-1){
			escolha(c){
				caso 0:
				leia(num)
				se(num>maior){
					maior3=maior2
					maior2=maior3
					maior=num
				}senao{
					maior3=maior2
					maior2=num
				}
				c=c++
				pare
				caso contrario:
				leia(num)
				se(num>maior){
					maior3=maior2
					maior2=maior
					maior=num
				}senao se((num>maior2)e(num>maior3)){
					maior3=maior2
					maior2=num
				}senao{
					maior3=num
				}
				c=c++
			}
		}
		escreva(maior,"    ",maior2,"     ",maior3)
	}
}

 

Editado por DiF
Retificar texto em caixa alta
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá @ET Bilu.

 

23 horas atrás, ET Bilu disse:

Consegui, dei uma pausa pra esfriar a mente e percebi o quanto sou problemático. Podem excluir se necessário

 

Testei seu código aqui no Portugol Studio, e meus testes aqui não deram certo... Ex.:

10
5
9
8
7
6
4
8
9
1
3
9.0    9.0     3.0
Programa finalizado. Tempo de execução: 6896 milissegundos

Teria que dar 9, 9 e 8.

 

Outro ponto é que você precisa interagir com o usuário, ou seja, ao executar o programa apenas fica um cursor piscando... tive que "adivinhar" o que era para fazer. Use "escreva()" para ir orientado o que o usuário deve fazer.

 

 

No aguardo.

Editado por DiF
Retificar citação, onde estava com o texto em caixa alta.
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
 

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×