Murillo costa 0 Denunciar post Postado Setembro 28, 2008 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
_Isis_ 202 Denunciar post Postado Setembro 28, 2008 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
quitZAUMMM 18 Denunciar post Postado Outubro 2, 2008 é 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
Mário Monteiro 179 Denunciar post Postado Outubro 2, 2008 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
Giovanni Ritchie 0 Denunciar post Postado Outubro 11, 2008 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
Mário Monteiro 179 Denunciar post Postado Outubro 11, 2008 que vetores? Compartilhar este post Link para o post Compartilhar em outros sites
Giovanni Ritchie 0 Denunciar post Postado Outubro 11, 2008 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
Mário Monteiro 179 Denunciar post Postado Outubro 11, 2008 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
_Isis_ 202 Denunciar post Postado Outubro 12, 2008 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
quitZAUMMM 18 Denunciar post Postado Outubro 13, 2008 hUFDHSAUFHAU nem me toquei... num deixa passar nd você hein :lol: Compartilhar este post Link para o post Compartilhar em outros sites