Ir ao conteúdo
  • Cadastre-se

Ajuda Vetor Pascal


igor3m

Posts recomendados

Opa galera

to com uma duvida aqui num programa

preciso que o programa leie os dados de um numero de cpf

e depois passar cada digito pra um vetor

gostaria de saber se é possivel ler cada caractere sem a necessidade de teclar enter apos cada numero

existe algum contador de caracteres numericos em pascal?

desde ja agradeço

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Opa galera

to com uma duvida aqui num programa

preciso que o programa leie os dados de um numero de cpf

e depois passar cada digito pra um vetor

gostaria de saber se é possivel ler cada caractere sem a necessidade de teclar enter apos cada numero

existe algum contador de caracteres numericos em pascal?

desde ja agradeço

Olá,

Vamos aos pontos:

1) Leitura de dados

preciso que o programa leie os dados de um numero de cpf

e depois passar cada digito pra um vetor

Apesar dos CPFs serem umas sequências numéricas, é mais apropriado fazer a leitura utilizando strings, já que este é de mais fácil manipulação.

Estruturalmente, as strings se comportam como um vetor de char, veja:

var
texto :string;

equivale a:

var
texto :array[1..255] of char;

O que muda é que ela pode ser lida de uma vez só e pode também ser acessado os caracteres individualmente, ex.:

texto:='Fórum do Clube do Hardware';
writeln(texto[5]); {imprime o 5º caractere ('m')}

Ou seja, a própria string já é por se só um vetor, que pode ser acessado cada posição da mesma forma que um array.

2) Leitura individual de caractere

gostaria de saber se é possivel ler cada caractere sem a necessidade de teclar enter apos cada numero

Sim, dá para ler. Na biblioteca CRT existe uma function (função) chamada ReadKey que tem a finalidade de "ler uma teclada do teclado e retornar o valor nela mesmo", ex.:

uses
CRT; {carrega alguns comandos, como ReadKey, ClrScr, TextColor() etc}
var
tecla :char;
BEGIN
tecla:=ReadKey; {retornar a tecla digitada}
writeln(tecla); {imprime a tecla}
END.

Desta forma, quando o ReadKey é chamado, ele fica aguardando uma tecla ser pressionada. Daí automaticamente ele a reconhece e joga em tecla.

OBS.: O ReadKey não exibe a tecla pressionada, ou seja, só faz reconhecer e retornar nela mesma. Outra coisa, ela ler praticamente todas as teclas, incluindo os "F"s (F1, F2, F2...), ENTER, ESC, Backspace etc.

Como observado, ela ler os caracteres como chars. Daí basta manipulá-los.

3) Contador de quantidade de caracteres

existe algum contador de caracteres numericos em pascal

Vou tentar responder e ao mesmo tempo explicar...

Infelizmente não, diferentemente dos caracteres, os números são estruturados em uma sequência de dados só, ou seja, para um integer (16 bits ou 2 bytes), por exemplo, independente do número que ela contenha, sempre ocupará esses 16 bits, ou seja, é uma questão da "arquitetura dos dados". Com esses 16 bits, o integer consegue armazenar 65535 possibilidades de valor numérico (metade menos 1 negativos, o zero e metade positivo).

O quê que isso tem haver?

Como é sabido, nos computadores, os dados são armazenados em "bits", ai para representar os número de 0 a 9 (cada casa decimal) precisam-se de sequências diferentes.

BASE 10 = BASE 2

0(10)=0000000000000000(2)

1(10)=0000000000000001(2)

2(10)=0000000000000010(2)

3(10)=0000000000000011(2)

4(10)=0000000000000100(2)

5(10)=0000000000000101(2)

6(10)=0000000000000110(2)

7(10)=0000000000000111(2)

8(10)=0000000000001000(2)

9(10)=0000000000001001(2)

Assim não tem como saber diretamente quantos dígitos (casas decimais) tem baseados na quantidade de bits representados... (são bases diferentes.) ^_^

Já com string sim, pois a quantidade de bits usados varia proporcionalmente de acordo com a quantidade de caracteres.

Para representar uma string, o Pascal usa "conjuntos de caracteres" (como visto no tópico 1). Da mesma forma que os integer são fixos (16 bits), um char também é (8 bits) (ou seja, 255 possibilidades), daí basta saber quantos conjuntos de 8 bits tem a string, entendeu??? Para isso podem-se usar a function Length(). Ex:

texto:='Pascal';
writeln(Length(texto)); {exibirá 5, já que tem 5 letras}

Ou seja, teoricamente essa string tem 40 bits (5x8)...

RESUMIDAMENTE

Para String usa-se Length();

Para Integer deve implementar um algoritmo que faça essa contagem. (por exemplo fazendo divisões sucessivas por 10)

***

RESUMO (em ordem crescente de complexidade)

-Ou você ler como string e manipula como array;

-Ou você ler como char utilizando ReadKey e armazenando em um array;

-Ou você ler como integer, usa algum método para separar as casas manualmente, e armazena em um array.

No aguardo

Abraços

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!