• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Kriptosgeek

Preciso de Ajuda com o In

6 mensagens neste tópico

Hi!

Eu estava a estudar uma apostila de lógica de programação e reparei que falava no in, e eu nunca o tinha utilizado e resolvi utilizar só mesmo pelo conhecimento.

E depois de ter usado o Google escrevi o seguinte codigo:

Programa P1;
Variáveis a:vetor[1..200] de inteiro;
    n:inteiro;
início
  Para n:=1 até 200 faça
  início
  Randomize;
  a[n]:=Random (200);
  Fim;
n:=15;
Se (n in [1..200])
então Write ('O 15 foi gerado');

  Leia;
Fim.

Ou se quiserem já em Pascal:

Program P1;
var a:array[1..200] of integer;
    n:integer;
begin
  for n:=1 To 200 do
  begin
  Randomize;
  a[n]:=Random (200);
  end;
n:=15;
if (n in [1..200])
then Write ('O 15 foi gerado');

  Readln;
end.

A minha duvida é: no parte do IF eu coloquei n in [i..200] , e se eu tivesse dois vectores que tivessem o mesmo comprimento?

Ja exprimentei criar 2 vectores e no if tentei distinguilos mas não consegui!

E pior ainda! atribuir a todos os elementos do vector o valor zero (0) e o programa escreve a mensagem que so devia escrever se o vecto a tivesse o valor de n que é 15.

Nota:Espero que esta duvida não seja fruto de alguma distracção minha!  :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
A minha duvida é: no parte do IF eu coloquei n in [i..200] , e se eu tivesse dois vectores que tivessem o mesmo comprimento?

Ja exprimentei criar 2 vectores e no if tentei distinguilos mas não consegui!

Eu não sei se é isto que pretendes mas aqui vai:

if (n in [0..100]) and (n in [100..200]) then

.

.

E pior ainda! atribuir a todos os elementos do vector o valor zero (0) e o programa escreve a mensagem que so devia escrever se o vecto a tivesse o valor de n que é 15.

Pois é obvio se tu no teu codigo dizes que o n=15 logo quando vais testar mostra sempre a mensagem pois está realmento o 15 entre 0 e 200.

Referente ao teu programa tens dois erros!

1.referente a Identação

2.random

1. e 2.

 

Program P1;
var a:array[1..200] of integer;
      n:integer;
begin

  Randomize;  

  for n:=1 To 200 do
    a[n]:=Random (200);
  n:=15;
  
  if (n in [1..200]) then
    Write ('O 15 foi gerado');

  Readln;
end.

Como podes ver é assim a identação correcta, na estrutura for não é necessário o begin e o end, pois só existe uma instrução a ser executada.

O random é simplesmete para o pontador de numeros aleatório não começar sempre no mesmo sitio! ou seja sempre no mesmo numero inicial! (para isso o random faz uma contas com o relogio do sistema, reduzindo assim a probabilidade de acertar num igual numero inicial!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pelo que percebi desta parte

E pior ainda! atribuir a todos os elementos do vector o valor zero (0) e o programa escreve a mensagem que so devia escrever se o vecto a tivesse o valor de n que é 15.

só tens que trocar a linha
if (n in [1..200])

por

if (i[n] in [1..200])

que é a diferença entre perguntares "o valor de n está entre 1 e 200?" e "o valor que está no índice n de i está entre 1 e 200?". Desculpa se estou a tentar explicar demais, mas é só para ilustrar o que está a acontecer.

Pois é obvio se tu no teu codigo dizes que o n=15 logo quando vais testar mostra sempre a mensagem pois está realmento o 15 entre 0 e 200.

O que é óbvio para ti pode não ser para os outros.

Referente ao teu programa tens dois erros!

1.referente a Identação

Não é um erro, é uma falha de desenho ;)

O random é simplesmete para o pontador de numeros aleatório não começar sempre no mesmo sitio! ou seja sempre no mesmo numero inicial! (para isso o random faz uma contas com o relogio do sistema, reduzindo assim a probabilidade de acertar num igual numero inicial!

Suponho que querias dizer o randomize...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Suponho que querias dizer o randomize...

Não é um erro, é uma falha de desenho

y exacto uma pequena lacuna  :-[ ...

não é um erro ??? não consegues interpretar que a nivel de ciclos quer de raciocio, quer dizer consegues até consegues só que demoras mais tempo  :D

não é um erro , isso é verdade mas tambem vais dizer que eu não tenho razão, quando aprendes "bem" aprendes com identação  senão não existia a palavra identação no mundo da programação, vou te dar um exemplo no visual c++ porque é que existe a ferramenta para a identação ???? 

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim, tens razão que com indentação a leitura do código é muito mais fácil e agradável, mas a falta dela não cria erros, nem de sintaxe nem de lógica. A não ser que estejas a programar em python... ::thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

exacto tu se quizeres até podes por tudo numa única linha! Que não fica nada legivel.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora