Jump to content

Recommended Posts

Posted

Boas,

Eu estou a criar um programa em pascal que converte binários em decimais e etc, mas surgiu um problema, vou deixar aqui o procedimento:

Procedure BINDEC;
var N,R,D,Q,Z,P1,P2,i:integer;
T:real;
begin
Writeln('Escreve um numero');
Readln(N);
Q:=0;
Repeat
Q:=Q+1;
if EXP(LN(10)*Q)>N
Then Z:=1
Else
Z:=0;
Until Z=1;
Repeat
Q:=Q-1;
P1:=1;
P2:=1;
For i:=1 To Q Do
P1:=P1*10;
For i:=0 to Q do
P2:=P2*2;
D:=N DIV P1*P2;
R:=N MOD P1;
N:=R;
T:=T+D;
Until Q=1;
Writeln(T);
end;

Eu insiro 10 e em vez de devolver o resultado 2 diz que estou a dividir por 0 na linha D:=N DIV P1*P2;

Alguem me diz o que estou a fazer mal?

Cumps

Posted

Também não percebi porque é que te deu esse erro. Mas realmente esse código está um pouco confuso:

- há alguma razão em especial para usares EXP(LN(10)*Q) em vez de POWER(10,Q); ?

- naquele primeiro bloco

Repeat
Q:=Q+1;
if EXP(LN(10)*Q)>N
Then Z:=1
Else
	Z:=0;
Until Z=1;

porque não fazes directamente

Repeat
Q:=Q+1;
until POWER(10,Q)>N;

- porque não substituir

For i:=1 To Q Do
P1:=P1*10;

por

P1 = POWER(10,Q);

e

For i:=0 to Q do
P2:=P2*2;

por

P2 = POWER(2,Q+1);

- e finalmente, cá em baixo, porque não substituis

D:=N DIV P1*P2;
R:=N MOD P1;
N:=R;
T:=T+D;

directamente com

T:=T+(N DIV (P1*P2);
N:=N MOD P1;

Vou testar o teu código para ver se apanho o erro. Estás a utilizar que compilador/IDE?

Desaparecido.

Posted

Boas,

Já arranjei outro método mas gostava de saber porque raio me dá este erro...

isso do power n funciona eu testei mesmo agr e deu "Unknow identifier", estou a usar o turbo pascal.

Cumps

Posted

Penso que o unknown identifier é falta de iniciação de variáveis!

Conselho, não uses letras, uma nomes! Hoje percebes o programa, amanhã já não, sem contar que se torna super confuso!

N=Numero

Q=ConversaoBinario

etc...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.