ajuda [RESOLVIDO]

1. ajuda [RESOLVIDO]

Gustavo
sabing

(usa Ubuntu)

Enviado em 01/07/2011 - 20:38h

pessoal quando o programa volta para o menu ele esquece o cadastro do vetor por que??
quando volta para o menu e volta fazer de novo cadastro ele esqueçe o ultimo cadastro

Program lol;
uses crt;

var
sair,i,z,menu:integer;
nome:array[1..20] of string;

Begin

repeat;
writeln('AGENDA DE INFORMAÇÕES');
writeln('(1)Cadastro');
writeln('(2)Visualiza');
write('Escolha = ');
read(menu);

case menu of
1:
begin;
write('Quantidade de cadastro = ');
read(z);
For i:= 1 to z do //acho que o problema está aqui
begin;

write('Nome = ');
read(nome[i]);

end;
end;



2:

begin;
writeln(' MOSTRANDO CONTEUDO CADASTRADO ');
For i:=1 to z do
begin;
writeln('Nome = ',nome[i]);
end;
end;
end;
write('1 <- sai <- 2 continua ');
read(sair);
until sair=1;

End.


  


2. Re: ajuda [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 01/07/2011 - 21:57h

observe que todas as vezes que você vai armazenar um nome no vetor, é usado:

For i:= 1 to z do
nome[i] := nome;

ou seja, a cada novo cadastro, os nomes que foram armazenados anteriormente são apagados, pelo fato de i sempre começar com valor 1. Você também deve sempre armazenar quantos cadastros foram feitos, veja:

write('Quantidade de cadastro = ');
read(z);

a medida que novos cadastros são feitos, z muda de valor, e quando você for imprimir os dados:

For i:=1 to z do

z terá o nº de cadastros que o usuário fez anteriormente e não a quantidade total de cadastros relizados.

fazendo essas mudanças:


Program cadastro;

var
sair, i, j, z, menu, total : integer;
nome : array[1..20] of string[15];

Begin
i:=1;
total := 0;

repeat;
writeln('AGENDA DE INFORMAÇÕES');
writeln('(1)Cadastro');
writeln('(2)Visualiza');

write('Escolha = ');
readln(menu);

case menu of
1:
begin
write('Quantidade de cadastro = ');
readln(z);
for j:=1 to z do
begin
write('Nome = ');
readln(nome[i]);
i:=i+1;
end;
total := total + z;
end;

2:
begin
writeln('MOSTRANDO CONTEUDO CADASTRADO');

For z:=1 to total do
writeln('Nome = ',nome[z]);
end;

end;

write('1 <- sai <- 2 continua ');
readln(sair);

until sair=1;

End.







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts