Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Murillo costa

Maior e menor

Recommended Posts

Pessoal, fazendo um algoritmo que leia 3 numeros e apresente o maior e o menor. Me resta uma pequena duvida

 

segue o algoritmo

 

var

maior, menor, n, i : inteiro

inicio

maior <- 0

menor <- 0

i <- 0

para i de 1 ate 3 passo 1 faca

leia (n)

se n > maior entao

maior <- n

fimse

se n < maior entao

menor <- n

fimse

fimpara

fimalgoritmo

 

 

Se realizarmos uns teste com os numero 5, 4, 3. Ele vai me apresentar o numero maior e menor correto. Mais se o primeiro valor a ser digitado for o menor de todos os 3 (ex : 2,3,4 ), ele so me apresenta o maior como 3 e o menor é igual 0, pois ele verifica se n < maior para armazenar na variavel menor .

 

Minha duvida é em relaçao a isso, como consigo fazer ele verificar realmente o menor, nao importa a ordem de leitura.

 

Se eu modificar a condição para n < menor entao MENOR < n . ele nunca vai ser menor que 0, pois atribui o valor inicial igual 0.

 

Aguardo comentarios.

 

valeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nao assuma que o menor é 0.

 

for i:=1 to 3 do
begin
  read(N[i]);
  if i = 1 then
  begin
   maior := N[i];
   menor := N[i];
  end else
  begin
   if N[i] > maior then
	   maior := N[i];
   else if N[i] < menor then
	   menor := N[i];
  end;
end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

é verdade soh valores negativos serão menores q 0 :lol:

c considermos numeros inteiros positivos, no caso do maior sim pode ser 0, agora no do menor, um jeito meio "gambiarra" é deixar ele com 9999;

ow faça a leitura antes do loop e uma leitura dentro do loop, existem varias opções;

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

o certo mesmo é o primeiro ser ao mesmo tempo o maior e o menor

 

nao pode usar um numero que nao foi lido como parametro pois as outras entradas podem nao supera-lo dando erro

 

usando o seu algoritmo seria algo como

 

var
maior, menor, n, i : inteiro
inicio
leia (n)
maior <- n
menor <- n
para i de 1 ate 2 passo 1 faca
leia (n)
se n > maior entao
maior <- n
fimse
se n < menor entao
menor <- n
fimse
fimpara
fimalgoritmo

So corrigi esta linha se n < maior entao que tava errada pois era para ser menor ali

 

E confesso que nao vi necessidade desta linha i <- 0 e a retirei mas se precisar dela pode voltar lá

 

Acho que era isso que queria

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpa mas nao vejo a necessidade do uso de vectores nesse exercicio

que tal tentarmos assim:

 

leia(a,b,c);
	 se (a>b) e (b<c) entao
		 maior=a;
	 se nao 
		  se (b>a) e (a<c) entao
			   maior=b;
		 se nao
			   maior=c
		 fimse;
	 fimse;
	 .
	 .
	 .
//e assim em diante... tente seguir a mesma ideia pra calcular o menor....

flw

Compartilhar este post


Link para o post
Compartilhar em outros sites

que vetores?

Compartilhar este post


Link para o post
Compartilhar em outros sites

que vetores?

Viu a solção apresentada pela Isis, está correcta, mas só acho que não seria necessario o uso de vectores... Mas está tudo correcto!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi, tambem acho que a solucao ficou maior, correta porem com mais passos

 

Neste caso nao precisa mesmo

Compartilhar este post


Link para o post
Compartilhar em outros sites
leia(a,b,c);

se (a>B) e (b<c) entao

maior=a;

se nao

se (b>a) e (a<c) entao

maior=b;

se nao

maior=c

fimse;

fimse;

 

a = 7 , b = 5 , c = 8 => maior = 7 (errado)

 

 

Olhe o comportamento da estrutura e não a existência dela.

 

Todo conjunto com pelo menos um elemento possui um máximo e um mínimo. Um vetor representa um conjunto, que não está ordenado. Se você assume a existência de um máximo r num conjunto de n elementos você tem duas formas de procurar esse número:

 

1) indo na última posição se o conjunto estiver ordenado

2) percorrer cada elemento e verificar se ele é maior que o suposto máximo (que seria o primeiro número lido do conjunto)

 

P/ programar o (2) você pode ou não usar vetor, mas vai precisar de um loop do mesmo jeito, que é mais interessante do que ficar criando variáveis p/ ler tudo de uma vez e fazer o teste depois.

 

#include <stdio.h>
int main() {
  int T,maior,menor;
  for(int i = 0; i< 3;i++) {
   scanf("%d",&T);
   if (!i)
	   maior = menor = T;
   else {
	   if (T > maior) maior = T;
	   if (T < menor) menor = T;
   }
  }
  return 0;
}

 

A repetição do código #1 p/ se calcular o mínimo só torna o programa desnecessariamente complexo. Mais do que se o cara colocar um vetor porque ele vai se perder no meio dos testes.

 

EDIT: Um detalhe que deixei passar:

 

c considermos numeros inteiros positivos, no caso do maior sim pode ser 0, agora no do menor, um jeito meio "gambiarra" é deixar ele com 9999;

 

No conjunto dos inteiros positivos o maior inicial é 1 e não 0.

Compartilhar este post


Link para o post
Compartilhar em outros sites

hUFDHSAUFHAU nem me toquei...

num deixa passar nd você hein :lol:

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.