Ir ao conteúdo
  • Cadastre-se

Trabalhando com integer


Posts recomendados

Preciso que o código leia numeros de um arquivo de texto e mostre os dois últimos algarismos desses números, até o fim do arquivo. Mas o código precisa ler fielmente como está no arquivo. O arquivo N1N2 tem os seguintes numeros:

7199
5087
3209

 

A saída do código tá sendo:

99

87

  9

Ele está desconsiderando o zero do 09, afinal zero à esquerda se despreza, mas nesse caso, preciso do zero ali. Tem alguma forma de fazer com que ele apresente os 2 últimos algarismos do numero, incluindo o zero?

O código:

Program ULTIMOS;
Uses CRT;
Var
  N2: integer;
  d: string[10];
  N1N2: Text;
Begin
  ClrScr;
  assign(N1N2, 'N1N2.txt'); reset(N1N2);
  While Not eof(N1N2) Do
   Begin
    readln(N1N2, d);
     Begin
          N2 := (ord(d[3])-Ord('0'))*10 + ord(d[4])-Ord('0');
                     writeln(N2);
     End;
   End;
  close(N1N2);
  readln;
End.

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá.

 

Analisando superficialmente imagino duas formas:
1-Trata o número como string mesmo;

2-Criando uma "estrutura de seleção" (if). Algo como "se número menor que 10, imprimir um zero 0 antes"


PS: 

Dá para explicar mais ou menos como funcionar essa estrutura?

N2 := (ord(d[3])-Ord('0'))*10 + ord(d[4])-Ord('0');

Por quê tem que fazer esse -Ord('0') ?

 

 

No aguardo.

Link para o comentário
Compartilhar em outros sites

29 minutos atrás, Simon Viegas disse:

Olá.

 

Analisando superficialmente imagino duas formas:
1-Trata o número como string mesmo;

2-Criando uma "estrutura de seleção" (if). Algo como "se número menor que 10, imprimir um zero 0 antes"


PS: 

Dá para explicar mais ou menos como funcionar essa estrutura?


N2 := (ord(d[3])-Ord('0'))*10 + ord(d[4])-Ord('0');

Por quê tem que fazer esse -Ord('0') ?

 

 

No aguardo.

Olá,

1)Mas se eu for tratar o numero como string como faria para separar apenas dois algarismos dos demais? Qual função faz isso

2)Escrever o zero antes funciona a principio, mas depois vou fazer algumas comparações entre valores, não sei se funcionaria. O legal seria ter uma forma de trabalhar como string mesmo.

3) Esses calculos com Ord usam o valor ordinal do caracter pelo código ASCII. Veja a explicação nesse tópico: 

http://forum.clubedohardware.com.br/forums/topic/1061675-codigo-em-pascal-para-ler-caracteres-em-linha/

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá

 

1 hora atrás, SuperBond disse:

Olá,

1)Mas se eu for tratar o numero como string como faria para separar apenas dois algarismos dos demais? Qual função faz isso

No próprio cálculo você faz isso... um dígito está em d[3] e ou no d[4].

writeln(d[3],d[4]);

obs.: As string se comportam mais ou menos como uma "array[1..255] of char". Cada caractere é como se fosse uma posição do vetor.

 

***

 

1 hora atrás, SuperBond disse:

2)Escrever o zero antes funciona a principio, mas depois vou fazer algumas comparações entre valores, não sei se funcionaria. O legal seria ter uma forma de trabalhar como string mesmo.

Como funcionaria a comparação? qual diferença tem em ter o zero o não?

 

 

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber 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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!