Gurzi Posted June 18, 2005 at 09:37 PM Report #1137 Posted June 18, 2005 at 09:37 PM 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 ?
satanuke Posted June 19, 2005 at 04:57 PM Report #1191 Posted June 19, 2005 at 04:57 PM 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? tek.readers blog
Gurzi Posted June 19, 2005 at 07:30 PM Author Report #1217 Posted June 19, 2005 at 07:30 PM 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
satanuke Posted June 19, 2005 at 08:54 PM Report #1224 Posted June 19, 2005 at 08:54 PM 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? tek.readers blog
Gurzi Posted June 20, 2005 at 08:29 PM Author Report #1248 Posted June 20, 2005 at 08:29 PM 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 ?
satanuke Posted June 20, 2005 at 11:59 PM Report #1262 Posted June 20, 2005 at 11:59 PM 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. tek.readers blog
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