allancarlos123 Posted March 22, 2014 Report Share Posted March 22, 2014 Olá. Estou no meu primeiro período de lógica por enquanto não aprendi nada de arrays ou vetor ainda, então peguem leve 😄 Como posso fazer para um programa mostrar o maior número de 10 que foi gerado entre 0 e 1000. obs: gerado e não escrito pelo usuário Link to comment Share on other sites More sharing options...
thoga31 Posted March 22, 2014 Report Share Posted March 22, 2014 Primeiro que nada, o que já tentaste fazer e quais são as tuas dúvidas concretas? Não precisas de arrays para esse propósito. Knowledge is free! Link to comment Share on other sites More sharing options...
allancarlos123 Posted March 22, 2014 Author Report Share Posted March 22, 2014 Fiz isso. Não consigo de forma alguma fazer com que ele identifique o maior número gerado e jogue na tela. Program Gerador1000numeros ; var r,n:Integer; Begin n:=1001; For r:=1 to 10 do Begin Writeln(random(n)); End; End. Link to comment Share on other sites More sharing options...
nunopicado Posted March 22, 2014 Report Share Posted March 22, 2014 Se o programa está a gerar 10 números, estará a fazê-lo dentro de um ciclo. Assim, simples: - Declaras uma variável Integer: Ex.: Maior - Inicializas a variável: Ex.: Maior:=0; - Dentro do ciclo que gera os números, e logo após cada um ser gerado, verificas se o número geral é maior do que "Maior". Se for, Maior passa a ser = a esse número No fim do ciclo, a variável Maior terá o maior número gerado. O que fizeste aí foi por uma variável = a um número maior que qualquer um dos possíveis gerados, o que daria que nunca na vida ela ia ser alterada, e portanto, nunca descobririas o maior. Além, é claro, que não estás a fazer sequer a comparação! "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum. Link to comment Share on other sites More sharing options...
thoga31 Posted March 22, 2014 Report Share Posted March 22, 2014 Fiz isso. Não consigo de forma alguma fazer com que ele identifique o maior número gerado e jogue na tela. Program Gerador1000numeros ; var r,n:Integer; Begin n:=1001; For r:=1 to 10 do Begin Writeln(random(n)); End; End. Indica-me em que parte do teu código controlas a situação do maior número, e onde o atribuis. Knowledge is free! Link to comment Share on other sites More sharing options...
allancarlos123 Posted March 22, 2014 Author Report Share Posted March 22, 2014 Estou ciente de que não fiz a comparação, já tentei de várias formas e não tinha conseguido então postei até onde cheguei. Vou testar esse método, jaja retorno. Link to comment Share on other sites More sharing options...
allancarlos123 Posted March 22, 2014 Author Report Share Posted March 22, 2014 Fiz desse jeito, o final está sempre dando 1001. Program Gerador1000numeros ; var r,n,maior:Integer; Begin n:=1001; maior:=0; For r:=1 to 5 do Begin Writeln(random(n)); If (n > maior) Then maior:=n; End; Begin Writeln(maior); End; End. Link to comment Share on other sites More sharing options...
thoga31 Posted March 22, 2014 Report Share Posted March 22, 2014 Falta-te iniciar o sistema que cria números pseudo-aleatórios (dito de uma forma simples). Coloca randomize; antes do ciclo. 1 Report Knowledge is free! Link to comment Share on other sites More sharing options...
nunopicado Posted March 22, 2014 Report Share Posted March 22, 2014 Independentemente do randomize, que deves usar sempre que usares o random, o que estás a fazer é: - Escrevo um numero aleatorio para o ecrã - Comparo 1001 com 0, e se 1001 for maior, então 0 passa a ser 1001 Não é bem isso que queres, pois não? Tens de meter o número aleatório numa variável, e é essa variável que vais comparar com a que guarda o maior. Tira de lá o n:=1001, que não serve de absolutamente nada, e mete o random a ir para uma variável, e não para o writeln (depois até podes fazer writeln à variável se quiseres). "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum. Link to comment Share on other sites More sharing options...
thoga31 Posted March 22, 2014 Report Share Posted March 22, 2014 Nem reparei bem naquele writeln, lol 😛 Knowledge is free! Link to comment Share on other sites More sharing options...
allancarlos123 Posted March 22, 2014 Author Report Share Posted March 22, 2014 Aeeeewwwww 😄 :D 😄 :D Valeu amo vcs Program Gerador1000numeros ; var r,n,maior:Integer; Begin maior:=0; For r:=1 to 5 do Begin n:=random(1001); If (n > maior) Then maior:=n; Writeln(n); End; Begin Writeln(maior); End; End. Link to comment Share on other sites More sharing options...
nunopicado Posted March 22, 2014 Report Share Posted March 22, 2014 Só não precisas do Begin e End antes e depois de escreveres o maior! 😉 1 Report "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum. Link to comment Share on other sites More sharing options...
allancarlos123 Posted March 22, 2014 Author Report Share Posted March 22, 2014 Ok 👍 Link to comment Share on other sites More sharing options...
nunopicado Posted March 22, 2014 Report Share Posted March 22, 2014 E já agora, mete o randomize que o Thoga te falou antes de iniciar o ciclo. "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum. Link to comment Share on other sites More sharing options...
thoga31 Posted March 22, 2014 Report Share Posted March 22, 2014 E a indentação não está bem feita (parece que só estamos a "reclamar", mas são boas dicas). 😄 Knowledge is free! Link to comment Share on other sites More sharing options...
allancarlos123 Posted March 22, 2014 Author Report Share Posted March 22, 2014 Eu sei que são boas dicas. Achei que estava bem indentado kkkkk 😕 Pode me dar um exemplo de como ficaria ele bem indentado? Link to comment Share on other sites More sharing options...
nunopicado Posted March 22, 2014 Report Share Posted March 22, 2014 Program Gerador1000numeros; var r,n,maior:Integer; Begin maior:=0; For r:=1 to 5 do Begin n:=random(1001); If (n > maior) Then maior:=n; Writeln(n); End; Begin Writeln(maior); End; End. Não há uma regra certa para indentar, além desta: Manter a coerência. Cada bloco de código deve estar alinhado com outros do mesmo nível. Por exemplo, o Writeln(n) está ao mesmo nível do If e da linha do random, pois as 3 instruções fazem parte do ciclo FOR, logo, estão umas por baixo de outras na mesma coluna. Já o then maior:=n; pertence ao IF, e não directamente ao for, logo, fica um pouco à frente das demais. E por aí fora. Torna-se mais fácil de ler, e de perceber que código pertence onde. Quanto ao número de espaços, e certos detalhes, vai depender do teu gosto, logo que sejas coerente. Por exemplo, este código muitos indentariam assim: Program Gerador1000numeros; var r,n,maior:Integer; Begin maior:=0; For r:=1 to 5 do Begin n:=random(1001); If (n > maior) Then maior:=n; Writeln(n); End; Begin Writeln(maior); End; End. Está bem na mesma, é uma questão de gosto. É diferente da anterior, mas mantém a coerência. "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum. Link to comment Share on other sites More sharing options...
allancarlos123 Posted March 22, 2014 Author Report Share Posted March 22, 2014 Quando eu acho que sei de tudo, não sei é nada 😁 A cada dia aprendo coisas novas aqui, apesar de o thoga já ter passado milhares de vezes, na prática me perco. Link to comment Share on other sites More sharing options...
epolozero Posted April 6, 2014 Report Share Posted April 6, 2014 (edited) Simplificação, em que maior é uma função que retorna o maior valor de 2 numeros funtion maior(a,b:integer):integer; .... maior_gerado:=0; for i:=1 to 10 do maior_gerado:=maior(random(1001),maior_gerado); write(maior_gerado); Edited April 7, 2014 by epolozero GeShi Link to comment Share on other sites More sharing options...
eric Posted April 24, 2014 Report Share Posted April 24, 2014 e em um vetor? Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now