Triple Posted October 22, 2006 at 04:12 PM Report #59430 Posted October 22, 2006 at 04:12 PM 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
DURO Posted October 24, 2006 at 10:58 PM Report #59907 Posted October 24, 2006 at 10:58 PM o teu programa ta um bocado confuso :S
TheDark Posted October 25, 2006 at 07:24 PM Report #60062 Posted October 25, 2006 at 07:24 PM 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.
Triple Posted October 25, 2006 at 07:49 PM Author Report #60078 Posted October 25, 2006 at 07:49 PM 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
Swimmer Posted October 26, 2006 at 04:10 PM Report #60225 Posted October 26, 2006 at 04:10 PM 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...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now