Newsgroup: it.comp.lang.pascal
Titolo: sistema ottale

il mio problema è il seguente:
devo fare un programma in pascal che esegua le 4 operazioni nel sistema
ottal senza usare la conversione in decimale.
Come posso fare?
In caso dove posso trovare informazioni sui sistemi numerici posizionali?

 il mio problema č il seguente:

Il problema č piů complesso di quanto sembra, purtroppo il pascal (Turbo
Pascal) non ha nessuna libreria per gestire le 4 operazioni in basi
differenti.
Cmq penso che questo ti possa essere di aiuto :
Prima di tutto non puoi gestire le cifre come interi ma ti conviene gestirle
con le stringhe in modo da poter operare su una cifra alla volta, e
controllare anche immissione dei valori che non devono presentare cifre
superiori a 7
diciamo che devi eseguire l'addizione
                  127(oct)
                    23(oct)
               ------------
                   152(oct)
avendo messo le cifre in una stringa puoi considerare una cifra alla volta :
var sAdd1, sAdd2, risultato : string;
          j,i, add1,add2,resto : integer;
         sAdd1='127';
         sAdd2='23';
         pareggiacifre(sAdd1,sAdd2); <<< deve trasformare 23 in 023 in modo
da non eliminare qualche controllo
         j:=length(sAdd1); resto:=0; risultato:='';
         while j>0 do
         begin
             add1:=ord(sAdd1[j])-48;
             add2:=ord(sAdd2[j])-48   <<<<< cosi ottieni trasformi il
carattere 3 nel intero 3
            add2=add2+resto ; resto:=0;
             if add2 >7 then
                begin
                    add2:=0
                    resto:=1;
                end;
             for i:=1 to add2
             begin
                  add1:=add1+1;
                  if add1 >7 then
                    begin
                        resto:=1;
                        add1:=0;
                    end;
             end;
             risultato:=chr(add1)+risultato;
            j:=j+1;
       end;
       if resto=1 then risultato:=chr(resto)+risultato;
Penso che dovrebbe funzionare non ho provato      !!!!
Ciao ReDiCuori
----------------------------------------------------
Pascal sul web 
http://www.pascalonline.f2s.com/
Pascal su irc   #turbopascal
-----------------------------------------------------

In caso dove posso trovare informazioni sui sistemi numerici posizionali?
I sistemi numerici posizionali [quelli + frequesnti sono : Binario
(0->1), Ottale (0->7), Decimale (0->9) ed esadecimale (0->F) ] e hanno
tutti la stessa "filosofia" cioè il numero
1010b ,  1010d, 1010h 
sono rapresentati come:
numero moltiplicato la base elevata per la posizione
numero* (base^posizione)
Cioè
1010d = 1*10^3+0*10^2+1*10^1+0*10^0 = 1010 (ma guarda un po')
infatti ogni posizione ha un peso diverso...
---
Il Razziatore,
The Only Good Windows in an uninstalled Windows
-----------------------------------------------
E-MAIL: 
razzi...@usa.net
WEB   : 
razziatore.dsx.org
ICQ   : 67552596

Come posso fare?
In realta' la cosa non ha molto senso, a meno che tu non debba fare le
somme a mano.  
I numeri, in relazione alle diverse basi, sono solo "rappresentati"
dal computer.  
Il calcolatore lavora sui numeri COMUNQUE in binario.
Supponi di avere i due numeri a 8 cifre binarie :
10100100
00111010
Se li vuoi sommare in ottale, non ti serve altro che isolare i gruppi
di 3 cifre :
010 100 100  = (244)8 
sommato a :
000 111 010  = (072)8 
e' uguale a :
 
011 011 110  = (336)8 
Non che la cosa abbia molto senso, appunto, perche' eseguire la somma
come "decimali" equivale a farla eseguire come "binari" dal sistema.
010100100 +
000111010 = 
---------
011011110
Sommarli in ottale, equivale a fare manualmente le seguenti somme
parziali :
4 + 2 = 6 (prima cifra)
7 + 4 = 8 + 3 -> 3 (seconda cifra)
2 + 1 (rip.) = 3 -> (terza cifra)
--
Andrea Laforgia (ICQ 87230455)
http://www.geocities.com/AndreaLaforgia
"ci sono tre tipi di persone nel mondo : quelli che
 sono bravi in matematica e quelli che non lo sono."