Ir ao conteúdo
  • Cadastre-se

Pascal/Delphi Solução de um pequeno problema


Ir à solução Resolvido por Simon Viegas,

Posts recomendados

Boa tarde amigos! Estou com um pequeno problema... este software, conversor de decimal para hexadecimal, ao atribuir o comando de repeat, ele está repetindo as reposta anteriores... alguem sabe como resolver esse problema ou resetar a memoria da variavel ''s''? meio urgente, desde já agradeço. 

 

Segue o programa:

program Dextohex;
uses crt;
Var
deci,x,r:integer;
c:Char;
s:string;
Begin
repeat
ClrScr;
write('Digite o número em decimal: ');
readln(deci);
x:=deci;
repeat
r:=x mod 16;
x:=x div 16;
case r of
10: c:='A';
11: c:='B';
12: c:='C';
13: c:='D';
14: c:='E';
15: c:='F';
else
c:=Chr(48+r);
end;
s:=c+s;
 
Until x=0;
write(s);
readln;
until deci=0;

end.

 

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

  • Membro VIP
  • Solução
1 hora atrás, Nazshue disse:

Boa tarde amigos! Estou com um pequeno problema... este software, conversor de decimal para hexadecimal, ao atribuir o comando de repeat, ele está repetindo as reposta anteriores... alguem sabe como resolver esse problema ou resetar a memoria da variavel ''s''? meio urgente, desde já agradeço. 

 

Basicamente precisar "reinicializar" a variável s a cada loop.

 

Algo assim:

//program Dextohex;
program DecToHex;
uses 
  CRT;
var
  deci,x,r:integer;
  c :char;
  s:string;
begin
repeat
  ClrScr;
  write  ('Digite o número em decimal: ');
  readln(deci);
  x := deci;
  s := ''; //zera a variável
  repeat
    r := x mod 16;
    x := x div 16;
    case r of
      10: c := 'A';
      11: c := 'B';
      12: c := 'C';
      13: c := 'D';
      14: c := 'E';
      15: c := 'F';
    else
      c := chr(48+r);
    end; //fim case
    s := c+s;
  until x=0;
write(s);
readln;
until deci=0;
end.

 

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

  • Membro VIP
26 minutos atrás, Nazshue disse:

@Simon Viegas Muito obrigado amigo! Era exatamente isso que eu queria, eu não sabia a função pra zerar a string, valeu!

 

Só um detalhe: não chamaria de "função". Acho que poderia dizer algo como: "eu não sabia uma forma pra zerar a string". Chamaria de "uma função para zerar", se fosse usado algo assim:

ZeraString(s); //obs.: essa função não existe como padrão, mas é possível criar se quiser

Entende?

 

 

O termo "função" e "procedimento" no Pascal são relacionados a esses recursos que "fazem algo", ou seja, esses "comandos".

 

Exemplo de comandos no Pascal: chr() e ReadKey(), writeln(), readln(), ClrScr() etc

 

Existem 2 tipos: Function e Procedure.

 

Quando o "comando" retorna algo em si mesmo, é chamado de function (função). Quando não retorna algo, é chamado Procedure. Ex.: chr() e ReadKey() são function, pois "fazem algo e trazem um valor neles mesmos". Tanto que você fez:

c := chr(48+r); //a function recebe um paramentro, faz algo
                //lá e retorna um valor em si mesmo. Daí pode
                //"jogar" esse valor em c

 

Repare que você utilizou uma variável para receber o "comando" como valor e funciona.

 

Já os comandos do tipo procedure não retorna nada em si mesmo. Tente fazer algo assim para você ver:
 

c := writeln("Olá mundo");

Não vai funcionar!

 

RESUMINDO:

Function e Procedure são basicamente a mesma coisa, apenas um retorna algo em si, a outra não.

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

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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!