Ir ao conteúdo
  • Cadastre-se

equações novamente


guilhermerayol

Posts recomendados

  • Membro VIP

Alo , como faço para dados 10 valores possiveis, escolher aleatoriamente 6 valores nao repetidos

case equ of

1:

2:

3:

4:

5:

6:

7:

8:

9:

10:

end;

obrigado pela atençao:D

Olá,

guilhermerayol, vou te passar duas informações que podem ser úteis:

1) Como gerar números aleatórios

Você pode usar o comando Random() (da unit CRT);

randomize; {serve para iniciar o random (evitar que gere números repetidos)}
sorteado:=Random(10); {gera um número aleatório de 0 a 9}

2) Você precisa de uma estrutura que marque os números já saídos

Neste caso deixo sua imaginação trabalhar.

***

A lógica é mais ou menos assim:

-Até que se escolha 6 números... gera um número aleatório, se o número na posição gerada ainda não tiver saído, então a escolhe ele.

No aguardo.

Abraços

Link para o comentário
Compartilhar em outros sites

Este programa testado no PascalZim gera uma matrix de 10 elementos, de 1 a 10, para servir de exemplo. Eles são armazenados na variável DataMatrix. Na variável ResultMatrix está a resposta procurada, tendo 6 números escolhidos aleatoriamento e sendo mostrado com o comando writeln. Dentro do laço wlhile a variável TestMatrix serve para avaliar se um elemento já foi escolhido. O comando random serve para gerar um número aleatório entre 0 e 9.

O comando randomize serve para que o programa nao comece com as mesmas variáveis quando for iniciado.

Program DataSearch ;

var

N, Position: Integer;
DataMatrix: array [1..10] of Integer;
ResultMatrix: array [1..6] of Integer;
TestMatrix: array [1..10] of Boolean;

Begin

randomize;

// Exemple (Cria um exemplo)

for N := 1 to 10 do
begin

DataMatrix [N] := N;
TestMatrix [N] := False;

end;

Position := 0;

while Position < 6 do
begin

// Random (Gera um numero aleatorio)

N := random (10);
Inc (N);

// Search (Faz a procura)

if TestMatrix [N] = False then

begin

TestMatrix [N] := True;
inc (Position);
ResultMatrix [Position] := DataMatrix [N];

end;

end;

// View (Mostra o resultado)

for N := 1 to 6 do
writeln (ResultMatrix [N]);

End.

Espero ter te ajudado.

Link para o comentário
Compartilhar em outros sites

É a minha primeira vez como membro desse site e acho que não entendi direito a dúvida e não fui muito claro na ajuda.

Tentarei novamente.

Criei um novo código que serve para Free Pascal e Pascal ZIM.

Utilizei essas variáveis:


var

N, Controle: Integer;
Elemento: array [1..10] of Boolean;

O código a seguir mostra o resultado procurado.


for N := 1 to 10 do
Elemento [N] := False;

Controle := 0;

repeat

(coloque seu código de equ)

if Not Elemento [equ] then
begin

Elemento [equ] := True;
inc (Controle);

Case equ of

1: SeuPrograma1;
2: SeuPrograma2;
3: SeuPrograma3;
4: SeuPrograma4;
5: SeuPrograma5;
6: SeuPrograma6;
7: SeuPrograma7;
8: SeuPrograma8;
9: SeuPrograma9;
10: SeuPrograma10;

end;

end;

until Controle = 6;

Explicação do código:

No lugar de SeuPrograma coloque o seu código.

Esse código só funcionará se 'equ' gerar um número de 1 a 10 cada vez que for executado.

O código 'equ' será executado eternamente até que ele gere 6 números diferentes.

A variável 'Elemento' começa com False e é alterada para True quanto é escolhida (exite 10 elementos).

A variável 'Controle' não permite que o programa saia do laço 'repeat' enquanto 6 elementos não forem escolhidos.

A linha 'if Not Elemento [equ] then' testa se um elemento ainda não foi escolhido. Caso afirmativo esse elemento se torna True e a linha 'inc (Controle)' soma 1 a variável 'Controle'.

Espero ter ajudado!

Agradeço ao moderador Mog.Lucas pela dica da tags e pela correção da postagem.

Link para o comentário
Compartilhar em outros sites

Encontrei o seu primeiro post (equações), pensei então em modificar o programa.

Troquei a variável do tipo inteira R por Equ e coloquei o comando random.

Esse programa fica preso dentro do laço 'repeat' até que se execute 6 equações sem repetir nenhuma. Acho que é isso que você quer.

Utilize as variáveis:

var 

Equ, N, Controle: integer;
Elemento: array [1..10] of boolean;

Coloque o comando 'randomize' no início do programa e execute-o apenas uma vez (pode ser no evento onCreate do Free Pascal);

Utilize o algoritmo abaixo:

for N := 1 to 10 do
Elemento [N] := False;

Controle := 0;

repeat

Equ := random (10);
inc (Equ);
if Equ > 10 then Equ := 10;

if Not Elemento [Equ] then
begin

Elemento [Equ] := True;
inc (Controle);

Case Equ of

1: Equacao1;
2: Equacao2;
3: Equacao3;
4: Equacao4;
5: Equacao5;
6: Equacao6;
7: Equacao7;
8: Equacao8;
9: Equacao9;
10: Equacao10;

end;

end;

until Controle = 6;

Espero que seja isso.

Link para o comentário
Compartilhar em outros sites

Arquivado

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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...