Ir ao conteúdo
  • Cadastre-se

Erro Algoritmo


Kiimberly

Posts recomendados

Olá pessoal, preciso de uma ajudinha aqui


Program binario_decimal;

Var
binario:string;
i, expoente, tam:integer;
decimal:real;

Begin
writeln('Digite um numero binario');
read(binario);
tam:= length(binario);
for i:=tam downto 1 do
Begin
if binario[i]='1' then
expoente:= 0;
decimal:= decimal+(exp (expoente*In (2)));
expoente:=expoente+1;
end;
writeln('O numero binario' ,binario, ' e igual a' ,decimal:0:0,'decimal');
end.

Está dando erro na expressão com o comando IN (exp (expoente*IN(2))); , se tiverem uma soulção ai, ou um algoritmo diferente postem pf ... valeu, agradeço desde já.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
Olá pessoal, preciso de uma ajudinha aqui


Program binario_decimal;

Var
binario:string;
i, expoente, tam:integer;
decimal:real;

Begin
writeln('Digite um numero binario');
read(binario);
tam:= length(binario);
for i:=tam downto 1 do
Begin
if binario[i]='1' then
expoente:= 0;
decimal:= decimal+(exp (expoente*In (2)));
expoente:=expoente+1;
end;
writeln('O numero binario' ,binario, ' e igual a' ,decimal:0:0,'decimal');
end.

Está dando erro na expressão com o comando IN (exp (expoente*IN(2))); , se tiverem uma soulção ai, ou um algoritmo diferente postem pf ... valeu, agradeço desde já.

Olá,

Kiimberly, seu código contêm alguns pequenos erros.

Abaixo tem seu código identado e com alguns ajustes (não mudei sua lógica).

PROGRAM binario_decimal;
uses
CRT; {carrega comando extras como ClrScr, ReadKey, TextColor etc}
var
binario :string;
i,
expoente,
{tam :integer;} {}
tam :byte;
decimal :real;

BEGIN
TextColor(15); {branco mais forte}
ClrScr; {limpa a tela}
writeln('Digite um numero binario');
{read(binario);}
readln(binario); {use somente readln, read é para casos especiais (pesquise no fórum)}
tam:=Length(binario);
for i:=tam downto 1 do
begin
if binario[i]='1' then
expoente:= 0;
decimal:= decimal+(exp(expoente*LN(2)));
expoente:=expoente+1;
end;
{writeln('O numero binario' ,binario, ' e igual a' ,decimal:0:0,'decimal');}
writeln('O numero binario ',binario,' e igual a ',decimal:0:0,' decimal');
ReadKey; {dá um pause antes de fechar}
END.

Veja que a identação é super importante... já que ajuda a analisar o código mais facilmente... vamos a alguns detalhes.

1) Por quê quando o número for "1" o <expoente> é zerado?

  if binario[i]='1' then
expoente:= 0;

Qual é a sua lógica em relação a isso? No caso o quê seria esse <expoente>? (eu tenho ideia do que seja, quero no caso que você exponha a sua visão)

2) Por quê o valor do decimal é somado independente se for "1" ou "0"?

  if binario[i]='1' then
expoente:= 0;
[COLOR="Red"] decimal:= decimal+(exp(expoente*LN(2)));[/COLOR]
expoente:=expoente+1;[

Mais uma vez, qual seria essa lógica. (creio que esteja relacionado com o tópico 1)

***

Antes de qualquer coisa queria entender a tua lógica. Veja que a identação está baseado nas regras de sintaxe do Pascal, e não na lógica que eu imaginei. Por exemplo, se as duas ou as três primeiras linhas depois do IF do FOR estiverem relacionadas com esse IF, no caso você teria que usar um begin/end para torná-las um bloco.

Tente corrigir (já que ainda não está pronto). Caso consiga, de qualquer modo, poste aqui seu código para analisarmos.

Só falta ajustar pouca coisa, eu só não quero contar, já que a ideia é vocês tentarem sozinhos. Daí é só vir aqui e tirar as dúvidas.

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!