Jump to content
  • 0
Aschie4589

Calcolatrice - Help!

Question

Ciao a tutti,

sono nuovo su questo forum (nel senso che non avevo mai scritto niente prima d'ora), e ho un problema.

Da poco più di un anno mi sono lanciato nella "folle impresa" di costruire una calcolatrice in Minecraft. Dopo una prima bozza di addizione fino a 10+10, ho incominciato il progetto vero e proprio: fare una calcolatrice che sappia moltiplicare, addizionare, sottrarre e dividere numeri fino a 99. Non ho avuto particolari problemi nelle prime tre operazioni, in quanto il circuito richiedeva solo delle porte logiche abbastanza semplici da costruire e utilizzare.Tuttavia la divisione mi sta creando numerosi problemi, perchè ho dovuto utilizzare degli shift register, e di conseguenza fare un circuito più "dinamico", nel senso che il segnale non rimane immutato, ma viene aggiornato durante il calcolo. Per crearla, ho utilizzato il sitema descritto qui...

 

http://www.minecraftitalia.net/forum/topic/35147-divisione-come-fare/?hl=divisione

 

Tuttavia ho avuto molti problemi. Per questo ho creato numerosi sistemi di controllo, che evitassero di far sovrapporre il segnale, sbagliare sottrazioni ecc.

Resta il fatto che adesso riesce a fare alcune operazioni con una buona approssimazione (gli faccio fare 14 cicli, 7 per gli interi e 7 per i decimali), come 40/7, ma sbaglia altri calcoli altrettanto elementari, come 10/3.

Ho intuito che il problema (almeno per 10/3) è che una volta fatta la sottrazione 4-1, nel procedimento, sbaglia e scriver come risultato 3, e va in un loop continuo (infatti poi fa shift e ottiene 6, toglie 3 e ottiene 3, e così via...). Ma non riesco a capire dove ho sbagliato...

Vi do il download del mondo (non me lo faceva caricare direttamente...)

 

http://ufox.com/txrbe60nr539

 

Se mi riusciste a dare una mano ve ne sarei grato...

 

  • Like 1

Share this post


Link to post
Share on other sites

1 answer to this question

Recommended Posts

  • 0

quel disperato (e un po' niubbo) che chiedeva aiuto nella discussione che hai linkato ero io, quindi ti rispondo. Provando a costruire un divisore con quel metodo ho creato uno sgorbio abbastanza lento che dopo un po' si è clockato... dopo quel tentativo sono seguiti parecchi mesi di inattività con la redstone. ultimamente mi sono rimesso a costruire ma ho avuto altre priorità, tuttavia (anche se poco seriamente) ho pensato anche un po' alla divisione... ho fatto un altro mezzo tentativo fallimentare e poi mi sono messo a cercare sul web algoritmi diversi, magari migliori. Quel che ho trovato è stata questa pagina di wikipedia: https://en.wikipedia.org/wiki/Division_algorithm e questo documento word: https://www.google.it/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&ved=0CDEQFjAA&url=http%3A%2F%2Fwww-3.unipv.it%2Fvacchi%2FARCHITETTURE%2FArchitetture_backup%2FLezioniArchitetture%2FLezioniArchitetture_aa2008_2009%2FCapitolo4_Divisori%26C%2FCapitolo4.doc&ei=p87yUYj4EOa24ATC04GgAg&usg=AFQjCNH6kCJGKgmKAlNvBZV6OK5HMuQHIA&sig2=duMu_0gIU9fEDigClKBc7g&bvm=bv.49784469,d.bGE

 

ancora non ho messo in pratica nessuno degli algoritmi descritti e non so se mi andrà di farlo, penso che per ora mi dedicherò ad altro. comunque fra quelli potresti trovare valide alternative. 

 

volendo rimanere sul metodo proposto da Ian Maayrkas... io non la stavo costruendo con anche i decimali ma hai pensato che possa andare in loop perché il risultato di 10/3 è 3,3 periodico? e che per questo continui a restituirti continuamente 3? mi sembra normale che lo faccia... spero di non star dicendo qualcosa di scontato.

Share this post


Link to post
Share on other sites

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

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.