Ir ao conteúdo
  • Cadastre-se

Dúvida em Pascal


lucasvg

Posts recomendados

Oi galera, estou com o seguinte problema:

tenho que desenvolver um algoritimo que crie uma lista telefônica com as seguintes funções:

incluir registros;

excluir;

editar;

e pesquisar;

obs:ele tem que salvar todos registros em um arquivo.text

estou fazendo do seguinte modo:

primeiro pego uma lista de registros (ja criada) e passo os registros para um vetor, para edita-lo durante as funções....e depois salva-lo por cima do anterior.

Meu problema esta na parte que o programa abre o arquivo de texto e passa pros vetores.

As informações do arquivo estariao dispostas assim:

nome(espaço)telefone

exemplo:

lucas 74561213

obs: o telefone so possui 8 numeros, e sem DDD....

a function que eu criei foi esta:

procedure abrirarquivo;
begin
assign(lista,'listphones.text');
reset(lista);
readln(lista,linha);
posicao:=1;
while linha<>'' do
begin
aux:=1;
letra:=linha[aux];
while letra<>' ' do
begin
aux:=aux+1;
letra:=linha[aux];
end;
agenda[posicao].nome:=copy(linha,1,aux-1);
agenda[posicao].telefone:=copy(linha,aux+1,aux+8);
posicao:=posicao+1;
end;
close(lista);
end;

o problema dela é que, ao dividir a linha (que seria um registro da minha lista telefonica, eu tento passar um "pedaço" da linha para o telefone, porém a linha é string e o telefone integer;

como posso resolver isso?

por gentileza expliquem detalhadamente como eu posso dividir uma linha com

dois tipos de caracteres( letras e numeros ) em duas variaveis (uma string e outra integer.....)

obrigado

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Oi galera, estou com o seguinte problema:

tenho que desenvolver um algoritimo que crie uma lista telefônica com as seguintes funções:

incluir registros;

excluir;

editar;

e pesquisar;

obs:ele tem que salvar todos registros em um arquivo.text

estou fazendo do seguinte modo:

primeiro pego uma lista de registros (ja criada) e passo os registros para um vetor, para edita-lo durante as funções....e depois salva-lo por cima do anterior.

Meu problema esta na parte que o programa abre o arquivo de texto e passa pros vetores.

As informações do arquivo estariao dispostas assim:

nome(espaço)telefone

exemplo:

lucas 74561213

obs: o telefone so possui 8 numeros, e sem DDD....

a function que eu criei foi esta:

procedure abrirarquivo;

begin

assign(lista,'listphones.text');

reset(lista);

readln(lista,linha);

posicao:=1;

while linha<>'' do

begin

aux:=1;

letra:=linha[aux];

while letra<>' ' do

begin

aux:=aux+1;

letra:=linha[aux];

end;

agenda[posicao].nome:=copy(linha,1,aux-1);

agenda[posicao].telefone:=copy(linha,aux+1,aux+8);

posicao:=posicao+1;

end;

close(lista);

end;

o problema dela é que, ao dividir a linha (que seria um registro da minha lista telefonica, eu tento passar um "pedaço" da linha para o telefone, porém a linha é string e o telefone integer;

como posso resolver isso?

por gentileza expliquem detalhadamente como eu posso dividir uma linha com

dois tipos de caracteres( letras e numeros ) em duas variaveis (uma string e outra integer.....)

obrigado

Olá,

1) Converter string para integer

Você pode usar o comando Val() ou StrToInt()

2) Percorrer todo o arquivo

Você pode usar o EOF() para auxiliar a leitura dos dados do arquivo de texto. Ele tem a função de retornar se o arquivo chegou ao fim ou não. Poderia ficar mais ou menos assim:

while not EOF(lista) do //enquanto não for o fim do arquivo
begin

end;

3) Manipulação de caracteres

Sobre esse trecho

    letra:=linha[aux];
while letra<>' ' do
begin
aux:=aux+1;
letra:=linha[aux];
end;

No Pascal já existe um comando que localiza a posição de determinado caractere numa String. No caso você pode usar o POS().

PS: Você também pode reduzir o seu código, ex.:

    aux:=1;
{while letra[aux]<>' ' do} //corrigindo a variável
while linha[aux]<>' ' do}
aux:=aux+1;

OBS.: Veja que nestes while, você tem que ter certeza que "a linha" está com a formatação correta, pois, se não tiver espaço, o programa ficará num loop infinito.

4) Leitura das linhas no arquivo

Como você irá observar, a leitura das linhas no arquivo de texto deve ficar dentro do laço, ou seja, "enquanto tiver linhas, leia o próximo, separe as partes e jogue no vetor".

***

Tente fazer as modificações...

No aguardo

Abraços

Link para o comentário
Compartilhar em outros sites

100% simplesmente,

sinceramente não esperava que fosse obter uma resposta estão ampla e completa, muito obrigado cara, ajudou muito mesmo valeu

Obs: No seu terceiro topico, manipulacao de caracteres, ha um pequeno erro na sua redução do algoritimo,

aux:=1;

while letra[aux]<>' ' do

aux:=aux+1;

para

aux:=1;

while linha[aux]<>' ' do

aux:=aux+1;

mais uma vez obrigado.

att,

Lucas Vieira

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!