XmX - www.xmx.it

Reply

Calcolatrice con numeri romani, tipo XX - IX = XI

« Older   Newer »
icon13  view post Posted on 6/12/2010, 22:08 Quote
Avatar

Advanced Member

Group:
Member
Posts:
1,078
Location:
Sedna

Status:


Ho iniziato da poco a programmare una calcolatrice con numeri romani, perchè con numeri romani? perche sarà divertente. Per ora programmo in microsoft Visual Basic express 2010 ( sperando di capirci qualcosa, in quanto è molto cambiato dalle versioni vb4-5 e 6) al massimo ritornerò sui miei passi o con python o vb6.
Ma come prima cosa, dopo essermi informato su wiki sulla numerazione romana non ho trovato come i nostri predecessori facessero le divisioni!!! :woot:

Chi ne sa qualcosa? :B):

The native american ten cammandments

1) - the earth is our mother. care for here.
2) - honor all your relations .
3) - open your heart and soul to the great spirit.
4) - all life is sacred; treat all beings with respect.
5) - take from the heart what is needed and nothing more.
6) - do what needs to be done for the good for all.
7) - give constant thanks great spirit for each new day.
8) - speak the truth; but only of the good in other.
9) - follow the rhythms of nature. rise and retire with the sun.
10) - enjoy life's journey, but leave no tracks.
 
PM Email  Top
view post Posted on 6/12/2010, 23:17 Quote
Avatar

Orso Mannaro

Group:
Administrator
Posts:
7,335

Status:


Le moltiplicazioni e le divisioni con i numeri romani sono molto complesse in quanto non è una numerazione di tipo posizionale.
Infatti erano in pochi a saperle fare, il motivo per cui la numerazione di tipo romana è stata soppiantata da quella araba è principalmente questo.


-------------------------------------------
Tratto dallo Hobbit, J.R.R. Tolkien :

Ma, nonostante l'intervento delle aquile, essi restavano ancora inferiori di numero. Ma all'ultima ora era apparso Beorn in persona nessuno sapeva come o da dove. Venne da solo, e in forma d'orso; e nella sua furia pareva che fosse diventato grande come un gigante.
Il rombo della sua voce era pari a quello di armi e tamburi; egli spazzò via dalla sua strada lupi e orchi come fossero piume e pagliuzze; piombò alle loro spalle, e irruppe come uno scoppio di tuono in mezzo all'accerchiamento. I nani tenevano ancora la posizione attorno ai loro signori, su una bassa collina accerchiata. Beorn si fermò e sollevò Thorin, che era caduto trafitto dalle lance, e lo trasse fuori dalla mischia.
Subito ritornò, la sua furia raddoppiata, così che nulla gli si poteva frapporre, e sembrava che nessun'arma gli facesse del male. Egli sbaragliò le guardie del corpo, afferrò Bolg e lo fece a pezzi. Allora il terrore piombò nel cuore degli orchi, ed essi fuggirono in tutte le direzioni.

-----------------------------------------------

Animalia
Blog : I pensieri di un orso mannaro
 
PM Email  Top
view post Posted on 7/12/2010, 00:26 Quote
Avatar

Advanced Member

Group:
Member
Posts:
1,078
Location:
Sedna

Status:


<_< Ti pareva...

Allora fino a che non avrò resuscitato un'esperto in divisioni in stile romano credo che ne farò una versione ridotta.
tipo:

image

Ma i romani non conoscevano lo zero? e i decimali come erano?? :wacko: :wacko:

O_o ho dimenticato il pulsante (=) :unsure: :D

The native american ten cammandments

1) - the earth is our mother. care for here.
2) - honor all your relations .
3) - open your heart and soul to the great spirit.
4) - all life is sacred; treat all beings with respect.
5) - take from the heart what is needed and nothing more.
6) - do what needs to be done for the good for all.
7) - give constant thanks great spirit for each new day.
8) - speak the truth; but only of the good in other.
9) - follow the rhythms of nature. rise and retire with the sun.
10) - enjoy life's journey, but leave no tracks.
 
PM Email  Top
view post Posted on 9/12/2010, 14:51 Quote
Avatar

Advanced Member

Group:
Member
Posts:
1,078
Location:
Sedna

Status:


In arrivo una funzione in python per convertire numeri decimali in romani.

La correggerò da una scaricata dal web non lo nomino non per spam ma per non fargli fare la figura da peracottaro :lol:
Es. faceva xx = 6 oppure IV X = 61 :lol:

Nel frattempo ne stò preparando una in vb6 convertitore, Decimale, Romano & viceversa + calcolatrice.

The native american ten cammandments

1) - the earth is our mother. care for here.
2) - honor all your relations .
3) - open your heart and soul to the great spirit.
4) - all life is sacred; treat all beings with respect.
5) - take from the heart what is needed and nothing more.
6) - do what needs to be done for the good for all.
7) - give constant thanks great spirit for each new day.
8) - speak the truth; but only of the good in other.
9) - follow the rhythms of nature. rise and retire with the sun.
10) - enjoy life's journey, but leave no tracks.
 
PM Email  Top
view post Posted on 10/12/2010, 01:40 Quote
Avatar

Advanced Member

Group:
Member
Posts:
1,078
Location:
Sedna

Status:


Arieccomi!!!! :alienff: :alienff: :ph34r:

Come funziona la funzione, O_o forse suona meglio come funza la funzione dei numeri romani. :B):
Il tutto si basa su 3 parametri principali.
1) - Operare sul numero immesso ricavandone il resto (operazione MOD) numero da convertire.
2) - Trasformare in un intero (senza decimali) prossimo numero da convertire.
3) - con i 2 parametri sopra eseguire un loop per la cnversione in numero romano.

Non sono mai stato bravo a spiegarmi, forse un'esempio rende meglio l'idea.

Esempio pratico:

Numero da convertire -> Num = 253
Estraggo il resto con MOD da Num -> 253 mod 10 = 3
Trasformo in un'intero e divido per 10 il prossimo numero da convertire 253 -> 253 \ 10 = 25

A questo punto abbiamo 3 e 25, dove 3 è il primo numero da convertire e 25 il prossimo da estrapolare.

Infatti dopo il primo loop si avrà il 3 trasformato in III
e si procede come sopra:

Numero da convertire -> Num = 25
Estraggo il resto con MOD da Num -> 25 mod 10 = 5
Trasformo in un'intero e divido per 10 il prossimo numero da convertire 25 -> 25 \ 10 = 2

E la storia si ripete.
Abbiamo 5 e 2, dove 5 è il secondo numero da convertire e 2 il prossimo da estrapolare.

dopo il secondo loop si avrà il 5 trasformato in L + III -> LIII

Per concludere.
Numero da convertire -> Num = 2
Estraggo il resto con MOD da Num -> 2 mod 10 = 2
Trasformo in un'intero e divido per 10 il prossimo numero da convertire 2 -> 2 \ 10 = 0 Esce dal Loop.

dopo il terzo loop si avrà il 2 trasformato in CC + L + III -> LIII -> CCLIII Alias 253

Perchè il 5 è diventato 50 e il 2 è ora 200, semplicemente per i tre passaggi
il primo era 3 = III, il secondo era 5 + 0 = L (secondo loop) il terzo era 2 + 0 + 0 = CC (terzo loop)

Spero di essere stato chiaro, cosa rara... :lol:

Ecco il listato in Python.
CODICE
#*** RomanCalc.py scritta con Pyton ver. 2.7 per windows 64bit
#*** programma testato unicamente su win seven 64bit.
#*** Funzione che trasforma numeri decimali in numeri romani
#*** Questa però presenta un limite numerico massimo che è 3999
#*** Numeri superiori non possono essere convertiti in quanto
#*** la numerazione romana comprende cifre fino alle migliaia simbolo (M)
#*** cifre superiori per poterle sommare, sotrarre, moltiplicarle etc.
#*** necessitano di caratteri non compresi nei 255 codici ASCII
#*** ATTENZIONE: oltre il 3999 il programma da i numeri nel vero senso
#*** della parola, es. digitate 5656 e vi esce XX.
import sys    #*** header di programma.
#*** Funzione di conversione
def ConvertNum(Num):
   dgt = "IVXLCDM"       #*** Costante dei numeri romani.
   x = 0
   t = ""
   while Num > 0:       #*** esegue un ciclo fino a che il numero delle cifre è finito
       dg = Num % 10    #*** trova il resto della divisione num / 10, o meglio è la funzione MOD di python
       Num = int(Num / 10) #*** divide e trasforma Num in un'intero
       #*** Procedura per la conversione in numero romano.
       if dg == 1:
           t = dgt[x:x+1] + t
       elif dg == 2:
           t = dgt[x:x+1] + dgt[x:x+1] + t
       elif dg == 3:
           t = dgt[x:x+1] + dgt[x:x+1] + dgt[x:x+1] + t
       elif dg == 4:
           t = dgt[x:x+2] + t
       elif dg == 5:
           t = dgt[x + 1:x+2] + t
       elif dg == 6:
           t = dgt[x + 1:x+2] + dgt[x:x+1] + t
       elif dg == 7:
           t = dgt[x + 1:x+2] + dgt[x:x+1] + dgt[x:x+1] + t
       elif dg == 8:
           t = dgt[x + 1:x+2] + dgt[x:x+1] + dgt[x:x+1] + dgt[x:x+1] + t
       elif dg == 9:
           t = dgt[x:x+1] + dgt[x + 2:x+3] + t
       x += 2
   return t
# Programma principale, esegue un ciclo infinito richiamando se stesso fino a che non viene
# immesso (0) o si preme invio senza alcun numero. Procedura errori non implementata.
while 1:
   Num = input("Inserire un numero decimale inferiore a 4000 (0) per uscire: ")
   if Num == 0:
       break
   print "numero romano = ",ConvertNum(Num)   # Stampa il numero romano.

The native american ten cammandments

1) - the earth is our mother. care for here.
2) - honor all your relations .
3) - open your heart and soul to the great spirit.
4) - all life is sacred; treat all beings with respect.
5) - take from the heart what is needed and nothing more.
6) - do what needs to be done for the good for all.
7) - give constant thanks great spirit for each new day.
8) - speak the truth; but only of the good in other.
9) - follow the rhythms of nature. rise and retire with the sun.
10) - enjoy life's journey, but leave no tracks.
 
PM Email  Top
view post Posted on 12/12/2010, 15:21 Quote
Avatar

Advanced Member

Group:
Member
Posts:
1,078
Location:
Sedna

Status:


Ecco il secondo tassello. Converte i numeri romani in numeri arabi o se preferite decimali. :B):
Ho cercato in rete ma nisba nulla NULL, di codici a parte quella miseria che convertiva i romani in decimali
ma solo fino a 1000 ed il codice è lungo una settimana, e oltretutto sbaglia.
Se non trovate codice simile in rete lo rilascio sotto GPL Cercate. cercate.... prima che mi monto la testa. :lol:

Sorgente scritto da yxzangelo@gmail.com Rilasciato sotto GPL www.gnu.org/licenses/gpl.html

Source code:
CODICE
#*** RomaToDec.py scritta con Pyton ver. 2.7 per windows 64bit
#*** programma testato unicamente su win seven 64bit.
#*** Funzione che trasforma numeri romani in numeri decimali.
#*********************************************************************
#*** Bla... Bla... Bla!!! come listato conversione decimale a romano.
#*********************************************************************
#*** Questa però presenta un limite numerico massimo che è MMMCMXCIX (3999)
#*** Numeri superiori non possono essere convertiti in quanto
#*** la numerazione romana comprende cifre fino alle migliaia simbolo (M)
#*** cifre superiori per poterle sommare, sotrarre, moltiplicarle etc.
#*** necessitano di caratteri non compresi nei 255 codici ASCII
#*********************************************************************
#*** ATTENZIONE: oltre il MMMCMXCIX (3999) il programma da errore
#*********************************************************************
import sys    #*** header di programma.
#*** Funzione per dichiarare e sostituire i numeri arabi o decimali a quelli romani
def RomToDec(t):
   Y = 0
   #*** Costanti dei numeri romani.
   I = 1
   V = 5
   X = 10
   L = 50
   C = 100
   D = 500
   M = 1000
   #*** Assegnazione dei numeri decimali
   if t == "I":
       Y = I
   elif t == "V":
       Y = V
   elif t == "X":
       Y = X
   elif t == "L":
       Y = L
   elif t == "C":
       Y = C
   elif t == "D":
       Y = D
   elif t == "M":
       Y = M
   #print Y
   return Y
   
#*** Funzione di conversione
def ConvRomToDec(Rom):
   x = 0
   x1 = 1
   t = ""
   dc = 0
   dc1 = 0
   dec = 0
   z = 0
   for z in range(len(Rom)):       #*** esegue un ciclo fino a che il numero delle cifre romane è finito
       #*** Procedura per la conversione in numero decimale.
       #*** Prende ogni carattere o numero romano, e verifica che non sia inferiore al successivo
       #*** con uno shift da sinistra verso destra.
       #*** Se il carattere o 'numero romano' è maggiore del successivo lo somma,
       #*** altrimenti lo sotrae, con segno negativo per suplire la somma precedente.
       #*****************************************************************************************
       #*** Come prima cosa per sapere se un numero romano è inferiore al successivo, trasformo
       #*** i numeri romani in decimali.
       t = Rom[x:x1]
       dc = RomToDec(t)
       t = Rom[x1:x1 + 1]
       dc1 = RomToDec(t)
       if dc >= dc1:      #**** Converte i positivi tipo ( XXVIII ) = 28
           dec += (dc + dc1) - dc1 # lo sottrae per evitare somme doppie incrementali
       elif dc < dc1:     #**** Converte i negativi tipo (MCMXXX) = 1930 o (IV) = 4
           dec +=  (-dc * 2 + dc1) + dc - dc1
       x += 1
       x1 += 1
   return dec
# Programma principale, esegue un ciclo infinito richiamando se stesso fino a che non viene
# immesso (q) o si preme invio senza alcun carattere romano e non. Procedura errori non implementata.
print "Premere e lasciare premuto (Caps Lock) per comodita."
print "ATTENZIONE: non sbagliare ad immettere i numeri romani. Pena errore nella conversione."
print
while 1:
   Rom = raw_input("Inserire un numero romano non superiore a MMMCMXCIX (3999) (q) per uscire: ")
   if Rom == "q" or Rom == "Q":
       print "FINE. Grazie per aver usato RomaToDec.py"
       break
   print
   print "Premere e lasciare premuto (Caps Lock) per comodita."
   print "ATTENZIONE: non sbagliare ad immettere i numeri romani. Pena errore nella conversione."
   print
   print "numero decimale = ",ConvRomToDec(Rom)   # Stampa il numero decimale.


E Python quindi occhio all'identazione. :gatto6kb5.jpg:

The native american ten cammandments

1) - the earth is our mother. care for here.
2) - honor all your relations .
3) - open your heart and soul to the great spirit.
4) - all life is sacred; treat all beings with respect.
5) - take from the heart what is needed and nothing more.
6) - do what needs to be done for the good for all.
7) - give constant thanks great spirit for each new day.
8) - speak the truth; but only of the good in other.
9) - follow the rhythms of nature. rise and retire with the sun.
10) - enjoy life's journey, but leave no tracks.
 
PM Email  Top
view post Posted on 13/12/2010, 14:41 Quote
Avatar

Advanced Member

Group:
Moderator
Posts:
2,028

Status:


Converte i numeri romani in testo (è sempre in python):

http://adomas.org/pynumwords/


Attento con i desideri: si potrebbero realizzare!
 
PM Email  Top
view post Posted on 13/12/2010, 20:57 Quote
Avatar

Advanced Member

Group:
Member
Posts:
1,078
Location:
Sedna

Status:


CITAZIONE (bymax @ 13/12/2010, 13:41) 
Converte i numeri romani in testo (è sempre in python):

http://adomas.org/pynumwords/

Semmai converte decimali in romani, che è tutta un'altra cosa.

Visto... funza anche se piu complesso del mio, non per vantarmi ma il 'compito' o obby di un'hacker è fare anche programmi che a parità di prestazioni siano più corti e comprensibili nota che parlo solo della funzione di conv. decimale romana . Ho anche notato che ha il mio stesso limite 3999, oppure non sa che MMMM (4000) non è un numero Romano regolare.
Per ovviare l'incoveniente dei codici ASCII inesistenti basta utilizzare altre lettere.
es: aggiungendo al codice di conversione romano decimale questa piccola modifica nella funzione

def RomToDec(t):
.....
......
.......
B = 5000
P = 10000

e

elif t == "B":
Y = B
elif t == "P":
Y = P

Il numero massimo convertibile da romano a decimale diventa:
PPPMPCMXCIX -> 39999

I simboli B e P non erano contemplati nella matematica romana, ma almeno si rispetta la loro logica.

Ps: dove stà il convertitore da Romano a Decimale nel programma http://adomas.org/pynumwords/
Che è quello che cercavo! sorgenti da decimale a romano il web è pieno in tutte le salse.

The native american ten cammandments

1) - the earth is our mother. care for here.
2) - honor all your relations .
3) - open your heart and soul to the great spirit.
4) - all life is sacred; treat all beings with respect.
5) - take from the heart what is needed and nothing more.
6) - do what needs to be done for the good for all.
7) - give constant thanks great spirit for each new day.
8) - speak the truth; but only of the good in other.
9) - follow the rhythms of nature. rise and retire with the sun.
10) - enjoy life's journey, but leave no tracks.
 
PM Email  Top
view post Posted on 16/12/2010, 00:51 Quote
Avatar

Advanced Member

Group:
Member
Posts:
1,078
Location:
Sedna

Status:


:) Finita o quasi c'è solo qualche dettaglio da rivedere, ma nella versione in Vb6 sono certo che funzionerà perfettamente.
Per ora c'è solo questa in Python.
Esegue conversioni da Decimali a numeri romani
Da numeri romani a decimali
Esegue calcoli esclusivamente con numeri romani tipo XX + III = XXIII
fa somme, sottrazioni, moltiplicazioni, divisioni.
I limiti penso che siano noti niente numeri negativi, ne numeri che se convertiti o sommati diano un risultato superiore a 3999.
Le divisioni restituiscono solo interi.

Questo il codice di cui le funzioni di conversione sono gia state postate.
CODICE
#************* RomanCalc.py ver 1.00 *************
#************ Scritto in Python ver 2.7  *********
#*** Converte numeri decimali in numeri romani e viceversa ***

#*** 14/12/2010 RomanCalc.py is licenced under LGPL. ***
#*** http://www.gnu.org/licenses/lgpl.html ***

#*** I'd be happy to hear if you use this in your software. ***
# Copyright (C) 2010 xyzangelo@gmail.com
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
#
#*** programma testato unicamente su win seven 64bit.
#*** Funzione che trasforma numeri decimali in numeri romani
#*** Questa però presenta un limite numerico massimo che è 3999
#*** Numeri superiori non possono essere convertiti in quanto
#*** la numerazione romana comprende cifre fino alle migliaia simbolo (M)
#*** cifre superiori per poterle sommare, sotrarre, moltiplicarle etc.
#*** necessitano di caratteri non compresi nei 255 codici ASCII
#*** ATTENZIONE: oltre il 3999 il programma da i numeri nel vero senso
#*** della parola, es. digitate 5656 e vi esce XX.
import sys    #*** header di programma.
def ConvertNum(Num):
   dgt = "IVXLCDM"       #*** Costante dei numeri romani.
   x = 0
   t = ""
   while Num > 0:       #*** esegue un ciclo fino a che il numero delle cifre è finito
       dg = Num % 10    #*** trova il resto della divisione num / 10, o meglio è la funzione MOD di python
       Num = int(Num / 10) #*** divide e trasforma Num in un'intero
       #*** Procedura per la conversione in numero romano.
       if dg == 1:
           t = dgt[x:x+1] + t
       elif dg == 2:
           t = dgt[x:x+1] + dgt[x:x+1] + t
       elif dg == 3:
           t = dgt[x:x+1] + dgt[x:x+1] + dgt[x:x+1] + t
       elif dg == 4:
           t = dgt[x:x+2] + t
       elif dg == 5:
           t = dgt[x + 1:x+2] + t
       elif dg == 6:
           t = dgt[x + 1:x+2] + dgt[x:x+1] + t
       elif dg == 7:
           t = dgt[x + 1:x+2] + dgt[x:x+1] + dgt[x:x+1] + t
       elif dg == 8:
           t = dgt[x + 1:x+2] + dgt[x:x+1] + dgt[x:x+1] + dgt[x:x+1] + t
       elif dg == 9:
           t = dgt[x:x+1] + dgt[x + 2:x+3] + t
       x += 2
   return t
#*** Funzione che trasforma numeri romani in numeri decimali.
#*********************************************************************
#*** Bla... Bla... Bla!!! come listato conversione decimale a romano.
#*********************************************************************
#*** Questa però presenta un limite numerico massimo che è MMMCMXCIX (3999)
#*** Numeri superiori non possono essere convertiti in quanto
#*** la numerazione romana comprende cifre fino alle migliaia simbolo (M)
#*** cifre superiori per poterle sommare, sotrarre, moltiplicarle etc.
#*** necessitano di caratteri non compresi nei 255 codici ASCII
#*********************************************************************
#*** ATTENZIONE: oltre il MMMCMXCIX (3999) il programma da errore
#*********************************************************************
#*** Funzione per dichiarare e sostituire i numeri arabi o decimali a quelli romani
def RomToDec(t):
   Y = 0
   #*** Costanti dei numeri romani.
   I = 1
   V = 5
   X = 10
   L = 50
   C = 100
   D = 500
   M = 1000
   #*** Assegnazione dei numeri decimali
   if t == "I":
       Y = I
   elif t == "V":
       Y = V
   elif t == "X":
       Y = X
   elif t == "L":
       Y = L
   elif t == "C":
       Y = C
   elif t == "D":
       Y = D
   elif t == "M":
       Y = M
   return Y
   
#*** Funzione di conversione
def ConvRomToDec(Rom):
   x = 0
   x1 = 1
   t = ""
   dc = 0
   dc1 = 0
   dec = 0
   z = 0
   for z in range(len(Rom)):       #*** esegue un ciclo fino a che il numero delle cifre romane è finito
       #*** Procedura per la conversione in numero decimale.
       #*** Prende ogni carattere o numero romano, e verifica che non sia inferiore al successivo
       #*** con uno shift da sinistra verso destra.
       #*** Se il carattere o 'numero romano' è maggiore del successivo lo somma,
       #*** altrimenti lo sotrae, con segno negativo per suplire la somma precedente.
       #*****************************************************************************************
       #*** Come prima cosa per sapere se un numero romano è inferiore al successivo, trasformo
       #*** i numeri romani in decimali.
       t = Rom[x:x1]
       dc = RomToDec(t)
       t = Rom[x1:x1 + 1]
       dc1 = RomToDec(t)
       if dc >= dc1:      #**** Converte i positivi tipo ( XXVIII ) = 28
           dec += (dc + dc1) - dc1 # lo sottrae per evitare somme doppie incrementali
       elif dc < dc1:     #**** Converte i negativi tipo (MCMXXX) = 1930 o (IV) = 4
           dec +=  (-dc * 2 + dc1) + dc - dc1
       x += 1
       x1 += 1
   return dec
while 1:
   print "Calcolatrice romana... ver 1.00"
   print
   print "1) = Convertitore Decimale Romano..."
   print "2) = Convertitore Romano Decimale..."
   print "3) = Calcolatrice Romana............"
   print "4) = Uscita dal programma..........."
   print
   Qst = input("Sciegliere un numero tra 1 e 4: ")
   if Qst == 1:
       Num = input("Inserire un numero decimale inferiore a 4000: ")
       if Num == 0:
           break
       print "numero romano = ",ConvertNum(Num)   # Stampa il numero romano.
   if Qst == 2:
       print "Premere e lasciare premuto (Caps Lock) per comodita."
       print "ATTENZIONE: non sbagliare ad immettere i numeri romani. Pena errore nella conversione."
       print
       #ERRORE o COSA? Se si seleziona dal menu la calcolatrice, il progr non dovrebbe dopo il calcolo saltare QUI!!! HELP ME PLEASE
           Rom = raw_input("Inserire un numero romano non superiore a MMMCMXCIX (3999): ")
           print "numero decimale = ",ConvRomToDec(Rom)   # Stampa il numero decimale.
   if Qst == 3:
       print
       print "immettere i numeri romani da sommare, sotrarre, moltiplicare,o dividere max(MMMCMXCIX 3999)."
       print "Il primo numero deve essere seguito dall'operatore."
       print "(Es: XXV+ e premere invio quindi Immettere XX e premere invio)"
       print "Risultato = XLV"
       N1 = raw_input("Primo numero Romano -> ")
       N2 = raw_input("Secondo numero Romano -> ")
       if N1 == "" or N2 == "":
           break
       #*** Estrapola dalla stringa il primo numero, l'operatore
       z = 0
       Nx = 0
       Ny = 0
       Risult = 0
       p1 = N1[z:len(N1)-1] #* Estrae il primo numero
       op = N1[len(N1)-1:]  #* Estrae l'operatore
       Nx = ConvRomToDec(p1)
       Ny = ConvRomToDec(N2)
       if op == '+':
           Risult = Nx + Ny
       elif op == '-':
           Risult = Nx - Ny
       elif op == '*':
           Risult = Nx * Ny
       elif op == '/':
           Risult = int(Nx / Ny)
       print "Risultato operazione = ",ConvertNum(Risult)   # Stampa il risultato in numero romano.3
   if Qst == 4:
       print "FINE. Grazie per aver usato CalcRoman.py"
       break
   Rom = raw_input("Inserire un numero romano non superiore a MMMCMXCIX (3999) (q) per uscire: ")
   
   print
   print "Premere e lasciare premuto (Caps Lock) per comodita."
   print "ATTENZIONE: non sbagliare ad immettere i numeri romani. Pena errore nella conversione."
   print
   print "numero decimale = ",ConvRomToDec(Rom)   # Stampa il numero decimale.


Ora in Vb6 sarà uno scherzo... :D :P

The native american ten cammandments

1) - the earth is our mother. care for here.
2) - honor all your relations .
3) - open your heart and soul to the great spirit.
4) - all life is sacred; treat all beings with respect.
5) - take from the heart what is needed and nothing more.
6) - do what needs to be done for the good for all.
7) - give constant thanks great spirit for each new day.
8) - speak the truth; but only of the good in other.
9) - follow the rhythms of nature. rise and retire with the sun.
10) - enjoy life's journey, but leave no tracks.
 
PM Email  Top
view post Posted on 16/12/2010, 22:30 Quote
Avatar

Advanced Member

Group:
Member
Posts:
1,078
Location:
Sedna

Status:


RomanCalc Ver 1.01 - Versione in Python finale

1) - Semplificazione del listato sorgente
2) - Possibilità di eseguire un'operazione Romana in un'unico input
3) - BUG FIX che richiamava in loop la funzione di conversione Romano Decimale

CODICE
#************* RomanCalc.py ver 1.01 *************
#************ Scritto in Python ver 2.7  *********
#*** Calcolatrice e convertitore numeri decimali in numeri romani e viceversa ***

#*** 17/12/2010 RomanCalc.py is licenced under LGPL. ***
#*** http://www.gnu.org/licenses/lgpl.html ***

#*** I'd be happy to hear if you use this in your software. ***
# Copyright (C) 2010 xyzangelo@gmail.com
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
#
# Le funzioni del programma sono illustrate nel primo listato
#
#**************************** MODIFICHE DELLA VER. 1.01 ********************************
# 1) Semplificazione del listato sorgente
# 2) Possibilità di eseguire un'operazione Romana in un'unico input
# 3) Coretto il BUG che richiamava a loop la funzione di conversione Romano Decimale
#****************************************************************************************
#*** ATTENZIONE: oltre il 3999 il programma da i numeri nel vero senso
#*** della parola, es. digitate 5656 e vi esce XX.
import sys    
def SelezUno():
   Num = input("Inserire un numero decimale inferiore a 4000: ")
   print "numero romano = ",ConvertNum(Num)  
def SelezDue():
   print "Premere e lasciare premuto (Caps Lock) per comodita."
   print "ATTENZIONE: non sbagliare ad immettere i numeri romani. Pena errore nella conversione."
   print
   Rom = raw_input("Inserire un numero romano non superiore a MMMCMXCIX (3999): ")
   print "numero decimale = ",ConvRomToDec(Rom)  
def SelezTre():
   print
   print "immettere i numeri romani da sommare, sotrarre, moltiplicare,o dividere max(MMMCMXCIX 3999)."
   print "Immettere l'espressione senza spazi."
   print "(Es: XXV+V e premere invio)"
   print "Risultato = XXX"
   N1 = raw_input("Immettere l'operazione Romana da eseguire -> ")
   #*** Estrapola dalla stringa  primo secondo numero e l'operatore
   z = 0
   Nx = 0
   Ny = 0
   Risult = 0
   for z in range(len(N1)):
       if N1[z:z+1] == '+' or N1[z:z+1] == '-' or N1[z:z+1] == '*' or N1[z:z+1] == '/':
           p1 = N1[:z]     #* Estrae il primo numero
           op = N1[z:z+1]  #* Estrae l'operatore
           N2 = N1[z+1:]   #Estrae il secondo numero
   Nx = ConvRomToDec(p1)
   Ny = ConvRomToDec(N2)
   if op == '+':
       Risult = Nx + Ny
   elif op == '-':
       Risult = Nx - Ny
   elif op == '*':
       Risult = Nx * Ny
   elif op == '/':
       Risult = int(Nx / Ny)
   print
   print "Risultato operazione = ",ConvertNum(Risult)    
def ConvRomToDec(Rom):
   x = 0
   x1 = 1
   t = ""
   dc = 0
   dc1 = 0
   dec = 0
   z = 0
   for z in range(len(Rom)):
       t = Rom[x:x1]
       dc = RomToDec(t)
       t = Rom[x1:x1 + 1]
       dc1 = RomToDec(t)
       if dc >= dc1:      
           dec += (dc + dc1) - dc1
       elif dc < dc1:    
           dec +=  (-dc * 2 + dc1) + dc - dc1
       x += 1
       x1 += 1
   return dec
def ConvertNum(Num):
   dgt = "IVXLCDM"      
   x = 0
   t = ""
   while Num > 0:      
       dg = Num % 10  
       Num = int(Num / 10)
       if dg == 1:
           t = dgt[x:x+1] + t
       elif dg == 2:
           t = dgt[x:x+1] + dgt[x:x+1] + t
       elif dg == 3:
           t = dgt[x:x+1] + dgt[x:x+1] + dgt[x:x+1] + t
       elif dg == 4:
           t = dgt[x:x+2] + t
       elif dg == 5:
           t = dgt[x + 1:x+2] + t
       elif dg == 6:
           t = dgt[x + 1:x+2] + dgt[x:x+1] + t
       elif dg == 7:
           t = dgt[x + 1:x+2] + dgt[x:x+1] + dgt[x:x+1] + t
       elif dg == 8:
           t = dgt[x + 1:x+2] + dgt[x:x+1] + dgt[x:x+1] + dgt[x:x+1] + t
       elif dg == 9:
           t = dgt[x:x+1] + dgt[x + 2:x+3] + t
       x += 2
   return t
def RomToDec(t):
   Y = 0
   I = 1
   V = 5
   X = 10
   L = 50
   C = 100
   D = 500
   M = 1000
   if t == "I":
       Y = I
   elif t == "V":
       Y = V
   elif t == "X":
       Y = X
   elif t == "L":
       Y = L
   elif t == "C":
       Y = C
   elif t == "D":
       Y = D
   elif t == "M":
       Y = M
   return Y
while 1:
   print
   print "Calcolatrice romana... ver 1.01"
   print "-------------------------------"
   print "1) = Convertitore Decimale Romano..."
   print "2) = Convertitore Romano Decimale..."
   print "3) = Calcolatrice Romana............"
   print "4) = Uscita dal programma..........."
   print
   Qst = input("Sciegliere un numero tra 1 e 4: ")
   if Qst == 1:
       SelezUno()
   elif Qst == 2:
       SelezDue()
   elif Qst == 3:
       SelezTre()
   elif Qst == 4:
       print "FINE. Grazie per aver usato CalcRoman.py"
       break


Ora funza benissimo... ^_^

Edited by gigio^ne - 17/12/2010, 00:40

The native american ten cammandments

1) - the earth is our mother. care for here.
2) - honor all your relations .
3) - open your heart and soul to the great spirit.
4) - all life is sacred; treat all beings with respect.
5) - take from the heart what is needed and nothing more.
6) - do what needs to be done for the good for all.
7) - give constant thanks great spirit for each new day.
8) - speak the truth; but only of the good in other.
9) - follow the rhythms of nature. rise and retire with the sun.
10) - enjoy life's journey, but leave no tracks.
 
PM Email  Top
view post Posted on 20/12/2010, 23:55 Quote
Avatar

Advanced Member

Group:
Member
Posts:
1,078
Location:
Sedna

Status:


Ecco fatto in VB6 :)
Codice in Visual Basic 6 il funzionamento è uguale a quella in python c'è solo qualche modifica per via dell'interfaccia grafica.
Per chi volesse programmarla anche senza VB6 può usare visual basic for application in Office 2003 o precedenti, le modifiche al linguaggio
in office 2007 o 2010 non le conosco (non ancora almeno).
Per l'interfaccia grafica vi i numeri romani sono separati da quelli decimali, quindi dovrete creare dei controlli o Button Control a parte.
il resto è visibile sotto.
Se riesco metto l'eseguibile su rapidshare ovviamente vi serviranno le librerie Vb6. ^_^

Esempio Calcolatrice romana
image

Converte in Romano:
image

Convertitore in Decimale:
image

L'immagine della calcolatrice decimale non serve l'avete tutti su win, linux, mac, solaris, etc. etc

Ed ovviamente il codice sorgente:
CODICE
Option Explicit
Dim CRoman  As Boolean ' Valore boleano per determinare se si usano mumeri romai o decimali
Dim Operaz As Boolean ' Valore boleano per determinare se si stà eseuendo un'operazione
Dim Operator As String, Result As Integer
Dim I As String
Dim V As String
Dim X As String
Dim L As String
Dim C As String
Dim D As String
Dim M As String

Function RomDec(q As String) As Integer
Dim Y As Integer
   Y = 0
   I = 1
   V = 5
   X = 10
   L = 50
   C = 100
   D = 500
   M = 1000
   If q = "I" Then
       Y = I
   ElseIf q = "V" Then
       Y = V
   ElseIf q = "X" Then
       Y = X
   ElseIf q = "L" Then
       Y = L
   ElseIf q = "C" Then
       Y = C
   ElseIf q = "D" Then
       Y = D
   ElseIf q = "M" Then
       Y = M
   End If
   RomDec = Y
End Function

Function RomanToDec(ByVal N1 As String) As Integer
'Funzione di conversione da romano a decimale
'Riceve in entrata per valore un nstringa (ByVal N)
'E restituisce una intero, o numero decimale. [ RomanToDec(xxx) ]
Dim X As Integer, Decim As Integer, t As String, dc As Integer, dc1 As Integer, z As Integer

X = 2
t = ""
dc = 0
dc1 = 0
Decim = 0
For z = 1 To (Len(N1))
   t = Mid(N1, z, 1)
   dc = RomDec(t)
       t = Mid(N1, X, 1)
   dc1 = RomDec(t)
       If dc >= dc1 Then
           Decim = Decim + (dc + dc1) - dc1
       ElseIf dc < dc1 Then
           Decim = Decim + (-dc * 2 + dc1) + dc - dc1
       End If
   X = X + 1
Next z
   RomanToDec = Decim
End Function

Private Sub SMSD()
On Error GoTo ERRHANDLER
'Legge e separa i numeri dall'operatore.
Dim r As Integer, NFirst, NSecond, X As Integer, N1 As Integer, N2 As Integer
X = 0: N1 = 0: N2 = 0
For r = 1 To Len(lblVisual.Caption)
If Mid(lblVisual.Caption, r, 1) = "+" Or Mid(lblVisual.Caption, r, 1) = "-" _
Or Mid(lblVisual.Caption, r, 1) = "*" Or Mid(lblVisual.Caption, r, 1) = "/" Then
X = r - 1
Operator = Mid(lblVisual.Caption, r, 1) 'Operatore
End If
Next r
NFirst = Mid(lblVisual.Caption, 1, X)  'Primo numero
NSecond = Mid(lblVisual.Caption, X + 2, Len(lblVisual.Caption)) 'Secondo numero
If CRoman = True Then ' converte romano in decimale
N1 = RomanToDec(NFirst)
N2 = RomanToDec(NSecond)
Else
N1 = Int(NFirst)
N2 = Int(NSecond)
End If
Select Case Operator
Case "+"
   Result = N1 + N2
Case "-"
   Result = N1 - N2
Case "*"
   Result = N1 * N2
Case "/"
   Result = N1 \ N2
End Select
If CRoman = True Then ' converte romano in decimale
lblConv.Caption = "Risultato = " & NumRoman(Result)
Else
lblConv.Caption = "Risultato = " & Result
End If
Exit Sub
ERRHANDLER:
MsgBox ("Errore durante il calcolo..."), vbOKOnly + vbExclamation, "Err."
Call cmdCanc_Click
End Sub

Private Sub cmdCanc_Click()
lblVisual.Caption = Empty
lblConv.Caption = Empty
cmdConvRomDec.Enabled = True
cmdConvDecRom.Enabled = True
Operaz = False
Operator = Empty
End Sub

Private Sub cmdConvDecRom_Click()
FDecimal.Move 120, 840
FRoman.Visible = False
FDecimal.Visible = True
CRoman = False
Call cmdCanc_Click
End Sub

Private Sub cmdConvRomDec_Click()
FRoman.Move 120, 840
FRoman.Visible = True
FDecimal.Visible = False
CRoman = True
Call cmdCanc_Click
End Sub


Private Sub cmdResult_Click()
If Operaz = True Then
Call SMSD 'Chiama la routine che (S)omma, (M)oltiplica, (S)ottrae, (D)ivide.
Exit Sub
End If
If CRoman = False Then     '*** Visualizza la decodifica da decimale a romano
lblConv.Caption = NumRoman(lblVisual.Caption)
ElseIf CRoman = True Then '*** Visualizza la decodifica da romano a decimale
lblConv.Caption = RomanToDec(lblVisual.Caption)
End If
End Sub

Private Sub Form_Load()
FrmMain.Caption = App.Title
lblVisual.Caption = Empty
CRoman = True
End Sub

Private Sub ErrNumOver()
MsgBox ("Numero tropo grande, max(3999)!!!"), vbOKOnly + vbInformation, "Sorry:"
Call cmdCanc_Click
End Sub

Function NumRoman(ByVal N As Integer) As String
'Funzione di conversione da decimale a romano
'Riceve in entrata per valore un num decimale intero (ByVal N)
'E restituisce una stringa, o numero romano. [ NumRoman(xxx) ]
     If N > 3999 Then
     Call ErrNumOver
     Exit Function
     End If
     Const NRomani = "IVXLCDM"    '*** Dichiaro la costante con i numeri romani
     Dim nr As Integer, Resto As Integer, t As String   '*** Variabili locali di funzione
       nr = 1
       t = ""
       Do While N > 0
         Resto = N Mod 10
         N = N \ 10
         Select Case Resto
           Case 1
             t = Mid(NRomani, nr, 1) & t
           Case 2
             t = Mid(NRomani, nr, 1) & Mid(NRomani, nr, 1) & t
           Case 3
             t = Mid(NRomani, nr, 1) & Mid(NRomani, nr, 1) & Mid(NRomani, nr, 1) & t
           Case 4
             t = Mid(NRomani, nr, 2) & t
           Case 5
             t = Mid(NRomani, nr + 1, 1) & t
           Case 6
             t = Mid(NRomani, nr + 1, 1) & Mid(NRomani, nr, 1) & t
           Case 7
             t = Mid(NRomani, nr + 1, 1) & Mid(NRomani, nr, 1) & Mid(NRomani, nr, 1) & t
           Case 8
             t = Mid(NRomani, nr + 1, 1) & Mid(NRomani, nr, 1) & Mid(NRomani, nr, 1) & Mid(NRomani, nr, 1) & t
           Case 9
             t = Mid(NRomani, nr, 1) & Mid(NRomani, nr + 2, 1) & t
         End Select
         nr = nr + 2
       Loop
       NumRoman = t
End Function


Private Sub NumD_Click(Index As Integer)
Select Case Index
Case Index
cmdConvRomDec.Enabled = False
cmdConvDecRom.Enabled = False
lblVisual.Caption = lblVisual.Caption & NumD(Index).Caption
End Select
End Sub

Private Sub NumR_Click(Index As Integer)
Select Case Index
Case Index
cmdConvRomDec.Enabled = False
cmdConvDecRom.Enabled = False
lblVisual.Caption = lblVisual.Caption & NumR(Index).Caption
End Select

End Sub


Private Sub Oper_Click(Index As Integer)
Select Case Index
Case Index
lblVisual.Caption = lblVisual.Caption & Oper(Index).Caption
End Select
Operaz = True
End Sub


La prossima in C ??? può darsi....

Edited by gigio^ne - 20/12/2010, 23:55

The native american ten cammandments

1) - the earth is our mother. care for here.
2) - honor all your relations .
3) - open your heart and soul to the great spirit.
4) - all life is sacred; treat all beings with respect.
5) - take from the heart what is needed and nothing more.
6) - do what needs to be done for the good for all.
7) - give constant thanks great spirit for each new day.
8) - speak the truth; but only of the good in other.
9) - follow the rhythms of nature. rise and retire with the sun.
10) - enjoy life's journey, but leave no tracks.
 
PM Email  Top
view post Posted on 24/12/2010, 15:52 Quote
Avatar

Non importa quanto è buio il cammino, guarda solo la Luce di fronte a te.

Group:
Member
Posts:
3,351
Location:
Appennino Modenese

Status:


Sarebbe una buona idea ;)

www.muzu.tv/simonecristicchi/ti-reg...sic-video/53287


"<< ...Odiarti? No Behlial, io non ti odio, non è odio quello che vedi nei miei occhi. Io ti guardo con gli stessi occhi con cui si guarda un vitello che avanza inconsapevole verso il mattatoio. >>
<< Ma che dici? La miseria ti ha reso pazzo! Io ora sono un Re, i miei piedi affondano nell'oro e nell'argento, possiedo eserciti di schiavi pronti a combattere per me e a morire, se necessario. Vivo in una reggia e il mio impero è grande e potente! O forse oltre alla ragione hai perso anche la vista? >>
<< Oh no fratello mio. Io sono povero nel corpo, ma il mio Spirito gioisce, ora sono guarito! I miei occhi erano ciechi ma ora vedono meglio dei tuoi, perchè vedono ciò che tu non puoi vedere. Possiedi grandi ricchezze ma alla tua morte verranno smembrate e consumate, come si smembra e si consuma un animale grasso in un dì di festa, e quel tuo grande monumento verrà spezzato e col bronzo suo verrà innalzata una statua al tuo nemico!
Ciò che io ho costruito non può venir nè consumato nè distrutto in alcuna misura, non verrà dimenticato e il tempo non ha potere su di esso, perchè sopravvive nel cuore della mia gente e nelle genti delle genti per infinite generazioni. Nè monumenti nè statue verranno innalzate in suo nome, saranno la gloria e l'amore che testimonieranno il suo valore, e le mie opere vivranno per sempre. >>"


"Gli umani sono delle facili prede!"
H. P. Lovecraft, "From beyond".

Un tempo per ogni cosa e ogni cosa a suo tempo, un posto per ogni cosa e ogni cosa al suo posto.

<< ...tu mi chiedi di indicarti un libro ove leggere di Dio? Amico mio, nessun libro può descrivere Dio. Se la vita di una persona potesse essere resa immortale dalle parole scritte, Dio si leggerebbe sempre tra le righe. >>

<< Questo è il colmo! Ho fatto un viaggio lunghissimo per venire qui e ora che sono finalmente arrivato non ricordo più il motivo per cui sono partito! >>

Quello che non accade in cinquant'anni può succedere in cinquanta minuti e quasi sempre sono cose brutte.

"La vita è un gioco in cui le regole si imparano solo giocando"
Arthur Grafemberg

Estremismi:
- Molto americano... ...molto stupido! -
- Non esistono donne furbe, esistono uomini ingenui! -
-I cinesi trattano le persone come animali, gli animali come oggetti, gli oggetti come persone.
 
PM Email  Top
view post Posted on 24/12/2010, 21:58 Quote
Avatar

Advanced Member

Group:
Member
Posts:
1,078
Location:
Sedna

Status:


CITAZIONE (yareol @ 24/12/2010, 14:52) 
Sarebbe una buona idea ;)

Arriverà tra un'acettata e l'altra ci penso. Poi chi lo sà!!!

The native american ten cammandments

1) - the earth is our mother. care for here.
2) - honor all your relations .
3) - open your heart and soul to the great spirit.
4) - all life is sacred; treat all beings with respect.
5) - take from the heart what is needed and nothing more.
6) - do what needs to be done for the good for all.
7) - give constant thanks great spirit for each new day.
8) - speak the truth; but only of the good in other.
9) - follow the rhythms of nature. rise and retire with the sun.
10) - enjoy life's journey, but leave no tracks.
 
PM Email  Top
view post Posted on 24/12/2010, 22:09 Quote
Avatar

Non importa quanto è buio il cammino, guarda solo la Luce di fronte a te.

Group:
Member
Posts:
3,351
Location:
Appennino Modenese

Status:


Un modo sottile per dire che accetti la sfida? :lol:

www.muzu.tv/simonecristicchi/ti-reg...sic-video/53287


"<< ...Odiarti? No Behlial, io non ti odio, non è odio quello che vedi nei miei occhi. Io ti guardo con gli stessi occhi con cui si guarda un vitello che avanza inconsapevole verso il mattatoio. >>
<< Ma che dici? La miseria ti ha reso pazzo! Io ora sono un Re, i miei piedi affondano nell'oro e nell'argento, possiedo eserciti di schiavi pronti a combattere per me e a morire, se necessario. Vivo in una reggia e il mio impero è grande e potente! O forse oltre alla ragione hai perso anche la vista? >>
<< Oh no fratello mio. Io sono povero nel corpo, ma il mio Spirito gioisce, ora sono guarito! I miei occhi erano ciechi ma ora vedono meglio dei tuoi, perchè vedono ciò che tu non puoi vedere. Possiedi grandi ricchezze ma alla tua morte verranno smembrate e consumate, come si smembra e si consuma un animale grasso in un dì di festa, e quel tuo grande monumento verrà spezzato e col bronzo suo verrà innalzata una statua al tuo nemico!
Ciò che io ho costruito non può venir nè consumato nè distrutto in alcuna misura, non verrà dimenticato e il tempo non ha potere su di esso, perchè sopravvive nel cuore della mia gente e nelle genti delle genti per infinite generazioni. Nè monumenti nè statue verranno innalzate in suo nome, saranno la gloria e l'amore che testimonieranno il suo valore, e le mie opere vivranno per sempre. >>"


"Gli umani sono delle facili prede!"
H. P. Lovecraft, "From beyond".

Un tempo per ogni cosa e ogni cosa a suo tempo, un posto per ogni cosa e ogni cosa al suo posto.

<< ...tu mi chiedi di indicarti un libro ove leggere di Dio? Amico mio, nessun libro può descrivere Dio. Se la vita di una persona potesse essere resa immortale dalle parole scritte, Dio si leggerebbe sempre tra le righe. >>

<< Questo è il colmo! Ho fatto un viaggio lunghissimo per venire qui e ora che sono finalmente arrivato non ricordo più il motivo per cui sono partito! >>

Quello che non accade in cinquant'anni può succedere in cinquanta minuti e quasi sempre sono cose brutte.

"La vita è un gioco in cui le regole si imparano solo giocando"
Arthur Grafemberg

Estremismi:
- Molto americano... ...molto stupido! -
- Non esistono donne furbe, esistono uomini ingenui! -
-I cinesi trattano le persone come animali, gli animali come oggetti, gli oggetti come persone.
 
PM Email  Top
view post Posted on 25/12/2010, 11:38 Quote
Avatar

Advanced Member

Group:
Member
Posts:
1,078
Location:
Sedna

Status:


CITAZIONE (yareol @ 24/12/2010, 21:09) 
Un modo sottile per dire che accetti la sfida? :lol:

Quale sfida??? :huh: :huh: :huh:

The native american ten cammandments

1) - the earth is our mother. care for here.
2) - honor all your relations .
3) - open your heart and soul to the great spirit.
4) - all life is sacred; treat all beings with respect.
5) - take from the heart what is needed and nothing more.
6) - do what needs to be done for the good for all.
7) - give constant thanks great spirit for each new day.
8) - speak the truth; but only of the good in other.
9) - follow the rhythms of nature. rise and retire with the sun.
10) - enjoy life's journey, but leave no tracks.
 
PM Email  Top
18 replies since 6/12/2010, 22:08
 
Reply