Newsgroup: it.comp.lang.pascal
Titolo: Conversioni queste bipbipbipbip

Ok Ok  no non sono imbecille, su carta le conversioni da binario a decimale
e viceversa le so fare :) ora il problema sorge quando la proffe ha chiesto
un programma che a scelta dell'utente converta un numero da bin a dec e
viceversa il numero ovviamente viene dato dall'utente...da buon studente
(modestamente :PPP ehehehe skerzo) inizio a pensare e tiro fuori subito come
convertire un decimale a binario (in pascal) in questo modo:
---------------Ometto La parte dichiarativa e l'intestazione---------
writeln('Inserisci un numero');
readln(n);
repeat
r:= n mod 2;
n:= n div 2;
str(r,s);
t:=concat(s,t);
until n=0;
writeln(t);
--------------------------------------------------------
Ok ok, provo, inserisco 10 risultato 1010, inserisco 25 = 11001
ok....ora da binario a decimale....ma qui mi sorgono tantissimi dubbi in
quanto
1010= 2^0x0 + 2^1x1 + 2^2x0 + 2^3x1 = 10 ora, come posso fare in pascal?!
Ovvero a scuola ho fatto tremila tentativi ma mi sono bloccato, se non
chiedo troppo qualcuno potrebbe darmi qualche dritta per mettermi sulla
retta via col pascal?
Grazie e un saluto a tutti!
--
=Omega======================
"Hands On"
============================

sul mio sito 
http://web.tiscali.it/licciardi
 cerca gli aggionamenti nel
download +
recenti, il file altro.zip, cerca in altro.pas le funzioni fromTo e le 2
successive
forse e' cio' che ti serve
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 writeln(t);
ottimizza ottimizza ! :-)
la str serve per convertire numeri lunghi, ma tu hai solo due
cifre possibili quindi basta un if; mod 2  e  div 2 possono
essere sostituiti con and 1 (un numero dispari ha il primo
bit settato) e shr 1 (shift a destra)  e diventa
t := ''; { due apici singoli }
repeat
 if (n and 1) = 0 then t := '0' + t
  else t := '1' + t;
 n := n shr 1;
until n = 0;
per il contrario devi mangiar la stringa carattere per carattere,
inserire la cifra e shiftare a sinistra:
a.e.  '1001'
n := 0; { inizio }
shifti a sinistra ( = moltiplichi per 2 )
leggi 1 e lo sommi { n := 1}
shifti a sx { n := 2 }
leggi 0 e lo sommi { n := 2 }
shl { n := 4 }
leggi 0 e lo sommi { n := 4 }
shl { n := 8 }
leggi 1 e lo sommi { n := 9 }
che come algortimo diventa (assumendo che s sia una stringa
che contiene solo un  numero binario corretto )
len := length (s);
n := 0;
for i := 1 to len do
 begin
  n := n shl 1;
  if s[i] = '1' then inc(n);
 end;
-- 
Dreadnaut
(Life would be easier if I had the source code)

Teng you! :)
Dread il problema sta nel fatto che devo seguire la proffe e quindi non
posso creare
un programma con procedure o funzioni che non ha spiegato (es: shl ) :"(
il mio storpiamento mentale č questo!!!!
Cmq grazie dell'aiuto! A chi ha risposto e non :)


 un programma con procedure o funzioni che non ha spiegato (es: shl ) :"(
beh un "shl 1" e "shr 1" corrispondono rispettivamente a *2 e /2, quindi
sostituendo questi due non dovrebbe esserci piu' nulla di strano :-)
-- 
Dreadnaut
(life _is_ easier with a little of reversing)

 strano :-)
Ho 2 cose da dirti:
1) Ti amo!
2) Certo che son scemo :)
ehhehe Grazie Dread
Cmq pensa che ho dovuto cambiare anche l'inc...con n:=n+1 .... bhè
devo dire alla proffe se  può spiegare queste funzioni perchè semplificano
la vita :)
Ciao a tutti


> 1) Ti amo!
lasciamo perdere questa parte magari :-)
