Jump to content

Recommended Posts

Posted

Pessoal surgiu-me uma dúvida um pouco confusa que é a seguinte:

- Quando a gente usa o ciclo FOR os arrays tem um indice : pascal[1] por exemplo

então FOR i := 1 to 3 aqui a variável pascal pode assumir vários valores mas por que tem lá o indíce[1] que vai aumentando até ao 3 mas nos records:

FOR I:= 1 TO QUANTOS DO
BEGIN
  WRITELN('NOME DO PRODUTO : ');
  READLN(NUMB.NOME);
  WRITELN('PRECO DO PRODUTO : ');
  READLN(NUMB.PREXO);
  WRITELN('QUANTIDADE DO PRODUTO : ');
  READLN(NUMB.QUANTIDADE);
END;

como é que o programa sabe qual o valor que ta em numb.nome quando o i é 2 ?se n tem numb.nome ?

Posted

Vamos lá a ver se eu percebi.

Tens um record definido que é qualquer coisa assim:

type
TProduto = record
nome:string;
prexo:Real;
quantidade:integer;
end;

E tens um array desse tipo não é?

var
 produtos : array[1..10] of TProduto;

O teu problema é conseguir aceder a cada posição do array?

Existem 2 formas de fazer isto.

A primeira é aceder directamente á posição do array :

   for i:=0 to quantos do
  begin
     WRITELN('NOME DO PRODUTO : ');
     READLN(produtos[i].NOME);
     WRITELN('PRECO DO PRODUTO : ');
     READLN(produtos[i].PREXO);
     WRITELN('QUANTIDADE DO PRODUTO : ');
     READLN(produtos[i].QUANTIDADE);
  end;

A segunda é declarando uma variavel temporaria, que creio que é aquilo que tas a tentar fazer.

Declaras a variavel :

var
numb:TProduto;

Depois em cada inicio do cliclo for associas a variavel á posicao do array:

   for i:=0 to quantos do
  begin
     numb:=produtos[i];
     WRITELN('NOME DO PRODUTO : ');
     READLN(NUMB.NOME);
     WRITELN('PRECO DO PRODUTO : ');
     READLN(NUMB.PREXO);
     WRITELN('QUANTIDADE DO PRODUTO : ');
     READLN(NUMB.QUANTIDADE);
  end;

Penso que é esse o teu problema, certo?

Posted

era mais a cena de num record

type numb = record

nome : string ;

end;

depois como é que posso por isto numa funçao for?

tenho que por tb assim ?

for i := 1 to 2 do

writeln('qual é o seu nome');

readln(nome);

só queria saber se uma variavel dentro de um record neste caso "nome" pode assumir mais que um vallor

Posted

Um record não é um array, nem sequer uma variavel.

Um record é um registo e neste caso é definido como sendo um tipo.

A unica maneira de aceder a um tipo é declarando uma variavel desse tipo.

Resumindo, não podes ler valores directamente para dentro de um record mas sim para uma variavel desse tipo, percebes?

Posted

então isto é "ilegal" ?

type vendas : record

nome : string;

end;

For i:= 1 to 3 do

begin

writeln('Qual é o nome do produto');

readln(nome);

end;

isto é ilegal ? por o em nome ?

Posted

Eu tou a tentar dizer que nunca podes aceder a uma variavel directamente no record. Tens que declarar uma variavel fora do record mas que seja do novo tipo de dados que definiste no record e então podes aceder a essa variavel.

Encontrei este manual no google que te deve dar alguma ajuda, porque acho que que não me tou a conseguir explicar.

http://www.lsd.ic.unicamp.br/projetos/e-lane/introPascal/aula8.html

O teu código deveria ser :

 type 
  TVenda = record
      nome : string;
  end;

var
vendas : array[1..3] of TVenda;

begin
 For i:= 1 to 3 do
   begin
     writeln('Qual é o nome do produto');
     readln(vendas[i].nome);
   end; 
end.

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
×
×
  • 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.