Sistemas númericos
Publicado por Luiz Henrique Rapatão 26/10/2006
[ Hits: 7.407 ]
Programa feito em Pascal que verifica e converte os números em todas as suas bases (decimal, hexadecimal, octal e binário).
//= SOBRE ==================================================
//= FEITO POR: Luiz Henrique Rapatão (xpy/curumo)
//= E-MAIL: rapatao@gmail.com
//= SITE: http://www.rapatao.cjb.net
//==========================================================
program numeros;
uses crt;
var menu,base : char;
numero : string;
i : integer;
//= FUNCAO VERIFICA BINARIO ================================
function verbin(numero:string):boolean;
begin
for i:=0 to length(numero) do begin
if (numero[i]='0') or (numero[i]='1') then verbin:=true
else verbin:=false;
end;
end;
//= FUNCAO VERIFICA OCTAL ==================================
function veroct(numero:string):boolean;
begin
for i:=0 to length (numero) do begin
if (numero[i]='1') OR (numero[i]='2') OR (numero[i]='3') OR (numero[i]='4') OR (numero[i]='5') OR
(numero[i]='6') OR (numero[i]='7') OR (numero[i]='0') then veroct:=true
else veroct:=false;
end;
end;
//= FUNCAO VERIFICA HEXADECIMAL ============================
function verhex(numero:string):boolean;
begin
for i:=0 to length(numero) do begin
if (numero[i]='1') OR (numero[i]='2') OR (numero[i]='3') OR (numero[i]='4') OR (numero[i]='5') OR
(numero[i]='6') OR (numero[i]='7') OR (numero[i]='8') OR (numero[i]='9') OR (numero[i]='0') OR
(numero[i]='A') OR (numero[i]='B') OR (numero[i]='C') OR (numero[i]='D') OR (numero[i]='E') OR
(numero[i]='F') then verhex:=true
else verhex:=false;
end;
end;
//= FUNCAO VERIFICA DECIMAL ================================
function verdec(numero:string):boolean;
begin
for i:=0 to length (numero) do begin
if (numero[i]='1') OR (numero[i]='2') OR (numero[i]='3') OR (numero[i]='4') OR (numero[i]='5') OR (numero[i]='6') OR
(numero[i]='7') OR (numero[i]='8') OR (numero[i]='9') OR (numero[i]='0') then verdec:=true
else verdec:=false;
end;
end;
//= VERIFICAR ==============================================
procedure verificar;
begin
clrscr;
write('Entre com o número: ');
readln(numero);
numero:=upcase(numero);
writeln;
writeln('1) Binario');
writeln('2) Octal');
writeln('3) Hexadecimal');
writeln('4) Decimal');
write('Opção: '); base:=readkey; writeln(base);
writeln;
case base of
'1': if ((verbin(numero))=true) then writeln('Número binario!') else writeln('Número não é binario!');
'2': if (veroct(numero) = true) then writeln('Número Octal!') else writeln('Número não é octal!');
'3': if (verhex(numero) = true) then writeln('Número Hexadecimal!') else writeln('Número não é hexadecimal!');
'4': if (verdec(numero) = true) then writeln('Número decimal!') else writeln('Número não é decimal!');
end;
readkey;
end;
//= CONVERTE PARA DECIMAL ==================================
function todec(numero:string;base:string):string;
var posicao,digito:integer;
soma:real;
begin
soma:=0;
posicao:=length(numero);
for i:=1 to length(numero) do begin
case numero[i] of
'A': digito:=10;
'B': digito:=11;
'C': digito:=12;
'D': digito:=13;
'E': digito:=14;
'F': digito:=15;
else val(numero[i],digito);
end;
posicao:=posicao-1;
if (base='1') then soma:=soma + (digito * exp(ln(2) * posicao));
if (base='2') then soma:=soma + (digito * exp(ln(8) * posicao));
if (base='3') then soma:=soma + (digito * exp(ln(16) * posicao));
if (base='4') then soma:=soma + (digito * exp(ln(10) * posicao));
end;
str(soma:0:0,numero);
todec:=numero;
end;
//= CONVERTE PARA OCTAL ====================================
function tooct(numero:string;base:string):string;
var valor,resultado,resto,soma,posicao:real;
begin
numero:=todec(numero,base);
val(numero,valor);
posicao:=0;
soma:=0;
while valor>=8 do begin
resultado:=valor / 8;
resultado:=int(resultado);
resto:=valor-resultado*8;
soma:=soma + resto * exp(ln(10)*posicao);
valor:=resultado;
posicao:=posicao+1
end;
soma:=soma + (valor * exp(ln(10)*posicao));
str(soma:0:0,tooct);
end;
//= CONVERTE PARA HEXADECIMAL ==============================
function tohex(numero:string;base:string):string;
var valor,resultado,resto:integer;
resto_str,soma_str:string;
begin
numero:=todec(numero,base);
val(numero,valor);
soma_str:='';
while valor>=16 do begin
resultado:=valor div 16;
resto:=valor-resultado*16;
str(resto,resto_str);
if resto_str='10' then resto_str:='A'
else if resto_str='11' then resto_str:='B'
else if resto_str='12' then resto_str:='C'
else if resto_str='13' then resto_str:='D'
else if resto_str='14' then resto_str:='E'
else if resto_str='15' then resto_str:='F';
insert(resto_str,soma_str,1);
valor:=resultado;
end;
str(valor,resto_str);
if resto_str='10' then resto_str:='A'
else if resto_str='11' then resto_str:='B'
else if resto_str='12' then resto_str:='C'
else if resto_str='13' then resto_str:='D'
else if resto_str='14' then resto_str:='E'
else if resto_str='15' then resto_str:='F';
insert(resto_str,soma_str,1);
tohex:=soma_str;
end;
//= CONVERTE PARA BINARIO ==================================
function tobin(numero:string;base:string):string;
var valor,resto:integer;
soma_str:string;
begin
numero:=todec(numero,base);
val(numero,valor);
soma_str:='';
while valor>=2 do begin
resto:=valor mod 2;
if resto = 0 then insert('0',soma_str,1)
else insert('1',soma_str,1);
valor:=valor div 2;
end;
resto:=valor mod 2;
if resto = 0 then insert('0',soma_str,1)
else insert('1',soma_str,1);
tobin:=soma_str;
end;
//= CONVERTER ==============================================
procedure converter;
var de,para : char;
begin
clrscr;
writeln('Converter de: ');
writeln('1) Binario');
writeln('2) Octal');
writeln('3) Hexadecimal');
writeln('4) Decimal');
de:=readkey;
writeln;
write('Entre com o número: '); readln(numero);
numero:=upcase(numero);
writeln;
writeln('Para: ');
writeln('1) Binario');
writeln('2) Octal');
writeln('3) Hexadecimal');
writeln('4) Decimal');
para:=readkey;
writeln;
case de of
'1': begin
case para of
'1': if (verbin(numero)=false) then writeln('Erro na conversão') else writeln(numero,' já é um número binario!');
'2': if (verbin(numero)=false) then writeln('Erro na conversão') else writeln(numero,' em octal é ',tooct(numero,de));
'3': if (verbin(numero)=false) then writeln('Erro na conversão') else writeln(numero,' em hexadecimal é ',tohex(numero,de));
'4': if (verbin(numero)=false) then writeln('Erro na conversão') else writeln(numero,' em binario é ',todec(numero,de),' em decimal.');
end;
end;
'2': begin
case para of
'1': if (veroct(numero)=false) then writeln('Erro na conversão') else writeln(numero,' em binario é ',tobin(numero,de));
'2': if (veroct(numero)=false) then writeln('Erro na conversão') else writeln(numero,' já é um número octal!');
'3': if (veroct(numero)=false) then writeln('Erro na conversão') else writeln(numero,' em hexadecimal é ',tohex(numero,de));
'4': if (veroct(numero)=false) then writeln('Erro na conversão') else writeln(numero,' em octal é ',todec(numero,de),' em decimal.');
end;
end;
'3': begin
case para of
'1': if (verhex(numero)=false) then writeln('Erro na conversão') else writeln(numero,' em binario é ',tobin(numero,de));
'2': if (verhex(numero)=false) then writeln('Erro na conversão') else writeln(numero,' em octal é ',tooct(numero,de));
'3': if (verhex(numero)=false) then writeln('Erro na conversão') else writeln(numero,' já é um número hexadecimal!');
'4': if (verhex(numero)=false) then writeln('Erro na conversão') else writeln(numero,' em hexadecimal é ',todec(numero,de),' em decimal.');
end;
end;
'4': begin
case para of
'1': if (verdec(numero)=false) then writeln('Erro na conversão') else writeln(numero,' em binario é ',tobin(numero,de));
'2': if (verdec(numero)=false) then writeln('Erro na conversão') else writeln(numero,' em octal é ',tooct(numero,de));
'3': if (verdec(numero)=false) then writeln('Erro na conversão') else writeln(numero,' em hexadecimal é ',tohex(numero,de));
'4': if (verdec(numero)=false) then writeln('Erro na conversão') else writeln(numero,' já é um número decimal!');
end;
end;
end;
readkey;
end;
//= BLOCO PRINCIPAL ========================================
Begin
repeat
clrscr;
writeln('Menu');
writeln('1) Verificar');
writeln('2) Converter');
writeln('3) Sair');
writeln('Entre com a opção: '); menu:=readkey; writeln(menu);
case menu of
'1': verificar;
'2': converter;
end;
until(menu='3');
End.
Método de eliminação de Gauss com pivotamento parcial
Nenhum comentário foi encontrado.
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Jogar games da Battle.net no Linux com Faugus Launcher
Como fazer a Instalação de aplicativos para acesso remoto ao Linux
Como fazer a instalação do Samba
Como fazer a conversão binária e aplicar as restrições no Linux
Duas Pasta Pessoal Aparecendo no Ubuntu 24.04.3 LTS (19)
Formas seguras de instalar Debian Sid (13)
Malware encontrado em extensões do Firefox. (0)
Fiz uma pergunta no fórum mas não consigo localizar [RESOLVIDO] (21)









