Jump to content

[Resolvido] Como posso gerar um número entre 0 e 1000 e mostrar qual o maior


allancarlos123
 Share

Recommended Posts

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

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

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

Só não precisas do Begin e End antes e depois de escreveres o maior! 😉

  • Vote 1

"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

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

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

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 by epolozero
GeShi
Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.