Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Calcolatrice ecco un problema di cifre..

    Salve a tutti!
    a parte il grande aiuto che trovo nel forum per cui ringrazio tutti...
    vorrei sottoporvi una questione che le già presenti discussioni non sono riuscite da sole a risolvere..
    Vorrei creare una calcolatrice semplice con le quattro operazioni e un tasto che permetta di cancellare il testo contenuto nel "display"
    ed ecco qui cosa è venuto fuori dalle mie prove..
    codice:
    <head>
     <title>Calcolatrice</title>
     <script type="text/javascript">
     var n1=0;
     var n2=0;
     var op;
     var k=0;
     var primo1=0;
     var primo2=0;
    	function canc(){
    	  document.Calcolatrice.stringa.value=' ';
    	  n1=0;
    	  n2=0;
    	  k=0;
    }
    	function scrivi(str)
    {
    	 document.Calcolatrice.stringa.value=	  
    
    document.Calcolatrice.stringa.value+str;
    	if((str!='+')&&(str!='-')&&(str!='*')&&(str!='/'))
    	 {
    	   if(n1<10)
    	    {
    	      if(k==0)
    	       {
    	           if(primo1==0)
    		{n1=str;
    		primo1=1;}
    	                 else
    		{n1=n1*10+1*str;}
    	      }
    	     else
      	     {
    	              if(primo2==0)
    		{n2=str;
    		primo2=1;}
    	                 else
    		{n2=n2*10+1*str;}}
    	     }
    	  }
    	   else
    	     {op=str;
    	     k=1;}
    }
    	function calcola(){
    	  var ris;
    	  switch (op) {
    	     case '+': 
    	       ris= 1*n1 + 1*n2;
    	       document.Calcolatrice.stringa.value=ris;
    	    break;
    	     case '-': 
    	       ris= n1-n2;
    	       document.Calcolatrice.stringa.value=ris;
    	    break;
    	     case '*':
    	       ris= n1*n2;
    	       document.Calcolatrice.stringa.value=ris;
    	    break;
    	      case '/':
    	       ris= n1/n2;
    	       document.Calcolatrice.stringa.value=ris;
    	    break;
    	}
    	valore();
    }
    	function valore(){
    	  switch (op) {
    	     case '+': document.Calcolatrice.valorevariabili.value= n1+op+n2;
    	    break;
    	      case '-': document.Calcolatrice.valorevariabili.value= n1+op+n2;
    	    break;
    	     case '*': document.Calcolatrice.valorevariabili.value= n1+op+n2;
    	    break;
    	      case '/': document.Calcolatrice.valorevariabili.value= n1+op+n2;
    	    break;
    	}
    }
     </script>
    </head>
    <body>
     <div align="center" valign="top">
       <big><big>CALCOLATRICE
    
     <form name="Calcolatrice">
     	<input type="text" name="stringa" readonly="true" />
    
    	<input type="button" value="1" onclick="scrivi('1')" />
    	<input type="button" value="2" onclick="scrivi('2')" />
    	<input type="button" value="3" onclick="scrivi('3')" />
    	<input type="button" value="+" onclick="scrivi('+')" />
    
    	<input type="button" value="4" onclick="scrivi('4')" />
    	<input type="button" value="5" onclick="scrivi('5')" />
    	<input type="button" value="6" onclick="scrivi('6')" />
    	<input type="button" value="-" onclick="scrivi('-')" />
    
    	<input type="button" value="7" onclick="scrivi('7')" />
    	<input type="button" value="8" onclick="scrivi('8')" />
    	<input type="button" value="9" onclick="scrivi('9')" />
    	<input type="button" value="*" onclick="scrivi('*')" />
    
    	<input type="button" value="C" onclick="canc()" />
    	<input type="button" value="0" onclick="scrivi('0')" />
    	<input type="button" value="=" onclick="calcola()" />
    	<input type="button" value="/" onclick="scrivi('/')" />
    
    	<input type="button" value="mostra valore variabili" onclick="valore()" />
    	<input type="text" name="valorevariabili">
     </form>
      </div>
    </body>
    veniamo ora alla spiegazione
    l'idea è di conservare il valore del primo elemento dell'operatore e del secondo elemento in 3 variabili rispettivamente n1 op e n2.
    tutti quegli infiniti if sono messi li per controllare che il carattere inserito non sia un operatore (e quindi un numero) una volta entrato nell'if se la variabile K è zero si va alla conservazione dei numeri.
    NOTA: il valore di K varia solo una volta inserito un operatore, quindi si andrà nell'else solo se l'operatore è stato inserito, ossia si entrerà per salvare il secondo elemento
    Per salvare il valore dei due elementi procedo in questo modo: se il numero sarà composto da una cifra salverò il valore della stringa passata al textbox direttamente nella variabile dell'elemento e cambiando il valore di primo1/2.
    NOTArimo1/2 varia una volta inserita la prima cifra del numero, si andrà quindi nell'else solo se la cifra inserita non è la prima(da destra a sinistra) del numero.
    quindi quando si entrerà nell'else per salvare la seconda cifra ho seguito questo ragionamento.
    supponiamo di voer inserire 15.
    ineriamo e salviamo 1.
    inseriamo il 5 e con questo algoritmo otteniamo 15-> 1*10+5=15 che andremo a salvare nella variabile dell'elemento.
    bene.
    una volta salvati i due elementi e l'operatore attraverso lo switch effettuiamo l'operazione interessata et voilà.
    ma il problema che sorge è il seguente.
    se si inserisce come primo elemento una numero a più cifre, il secondo elemento varrà sempre 0. mentre se il primo elemento è di una singola cifra tutto andrà come previsto.
    qualcuno sa dirmi perchè?

    p.s. c'è anche una funzione che mostra il valore delle variabili dopo l'inserimento che ho inserito per pura praticità, ma che non c'entra nulla con l'ipotetica calcolatrice finale.

    spero di esser stato abbastaza chiaro.. e grazie mille in anticipo per l'aiuto! (:

  2. #2
    <head>
    <title>Calcolatrice</title>
    <script type="text/javascript">
    var n1=0;
    var n2=0;
    var op;
    var k=0;
    var primo1=0;
    var primo2=0;
    function canc(){
    document.Calcolatrice.stringa.value=' ';
    n1=0;
    n2=0;
    k=0;
    }
    function scrivi(str)
    {
    document.Calcolatrice.stringa.value=

    document.Calcolatrice.stringa.value+str;
    if((str!='+')&&(str!='-')&&(str!='*')&&(str!='/'))
    {
    // if(n1<10)
    // {
    if(k==0)
    {
    if(primo1==0)
    {n1=str;
    primo1=1;}
    else
    {n1=n1*10+1*str;}
    }
    else
    {
    if(primo2==0)
    {n2=str;
    primo2=1;}
    else
    {n2=n2*10+1*str;}}
    // }
    }
    else
    {op=str;
    k=1;}
    }
    function calcola(){
    var ris;
    switch (op) {
    case '+':
    ris= 1*n1 + 1*n2;
    document.Calcolatrice.stringa.value=ris;
    break;
    case '-':
    ris= n1-n2;
    document.Calcolatrice.stringa.value=ris;
    break;
    case '*':
    ris= n1*n2;
    document.Calcolatrice.stringa.value=ris;
    break;
    case '/':
    ris= n1/n2;
    document.Calcolatrice.stringa.value=ris;
    break;
    }
    valore();
    }
    function valore(){
    switch (op) {
    case '+': document.Calcolatrice.valorevariabili.value= n1+op+n2;
    break;
    case '-': document.Calcolatrice.valorevariabili.value= n1+op+n2;
    break;
    case '*': document.Calcolatrice.valorevariabili.value= n1+op+n2;
    break;
    case '/': document.Calcolatrice.valorevariabili.value= n1+op+n2;
    break;
    }
    }
    </script>
    </head>
    <body>
    <div align="center" valign="top">
    <big><big>CALCOLATRICE

    <form name="Calcolatrice">
    <input type="text" name="stringa" readonly="true" />

    <input type="button" value="1" onclick="scrivi('1')" />
    <input type="button" value="2" onclick="scrivi('2')" />
    <input type="button" value="3" onclick="scrivi('3')" />
    <input type="button" value="+" onclick="scrivi('+')" />

    <input type="button" value="4" onclick="scrivi('4')" />
    <input type="button" value="5" onclick="scrivi('5')" />
    <input type="button" value="6" onclick="scrivi('6')" />
    <input type="button" value="-" onclick="scrivi('-')" />

    <input type="button" value="7" onclick="scrivi('7')" />
    <input type="button" value="8" onclick="scrivi('8')" />
    <input type="button" value="9" onclick="scrivi('9')" />
    <input type="button" value="*" onclick="scrivi('*')" />

    <input type="button" value="C" onclick="canc()" />
    <input type="button" value="0" onclick="scrivi('0')" />
    <input type="button" value="=" onclick="calcola()" />
    <input type="button" value="/" onclick="scrivi('/')" />

    <input type="button" value="mostra valore variabili" onclick="valore()" />
    <input type="text" name="valorevariabili">
    </form>
    </div>
    </body>


    quel controllo if(n1<10) creava il problema, adesso mi sembra ok
    Ciao.

  3. #3
    Originariamente inviato da Fabioweb76
    <head>
    <title>Calcolatrice</title>
    <script type="text/javascript">
    var n1=0;
    var n2=0;
    var op;
    var k=0;
    var primo1=0;
    var primo2=0;
    function canc(){
    document.Calcolatrice.stringa.value=' ';
    n1=0;
    n2=0;
    k=0;
    }
    function scrivi(str)
    {
    document.Calcolatrice.stringa.value=

    document.Calcolatrice.stringa.value+str;
    if((str!='+')&&(str!='-')&&(str!='*')&&(str!='/'))
    {
    // if(n1<10)
    // {
    if(k==0)
    {
    if(primo1==0)
    {n1=str;
    primo1=1;}
    else
    {n1=n1*10+1*str;}
    }
    else
    {
    if(primo2==0)
    {n2=str;
    primo2=1;}
    else
    {n2=n2*10+1*str;}}
    // }
    }
    else
    {op=str;
    k=1;}
    }
    function calcola(){
    var ris;
    switch (op) {
    case '+':
    ris= 1*n1 + 1*n2;
    document.Calcolatrice.stringa.value=ris;
    break;
    case '-':
    ris= n1-n2;
    document.Calcolatrice.stringa.value=ris;
    break;
    case '*':
    ris= n1*n2;
    document.Calcolatrice.stringa.value=ris;
    break;
    case '/':
    ris= n1/n2;
    document.Calcolatrice.stringa.value=ris;
    break;
    }
    valore();
    }
    function valore(){
    switch (op) {
    case '+': document.Calcolatrice.valorevariabili.value= n1+op+n2;
    break;
    case '-': document.Calcolatrice.valorevariabili.value= n1+op+n2;
    break;
    case '*': document.Calcolatrice.valorevariabili.value= n1+op+n2;
    break;
    case '/': document.Calcolatrice.valorevariabili.value= n1+op+n2;
    break;
    }
    }
    </script>
    </head>
    <body>
    <div align="center" valign="top">
    <big><big>CALCOLATRICE

    <form name="Calcolatrice">
    <input type="text" name="stringa" readonly="true" />

    <input type="button" value="1" onclick="scrivi('1')" />
    <input type="button" value="2" onclick="scrivi('2')" />
    <input type="button" value="3" onclick="scrivi('3')" />
    <input type="button" value="+" onclick="scrivi('+')" />

    <input type="button" value="4" onclick="scrivi('4')" />
    <input type="button" value="5" onclick="scrivi('5')" />
    <input type="button" value="6" onclick="scrivi('6')" />
    <input type="button" value="-" onclick="scrivi('-')" />

    <input type="button" value="7" onclick="scrivi('7')" />
    <input type="button" value="8" onclick="scrivi('8')" />
    <input type="button" value="9" onclick="scrivi('9')" />
    <input type="button" value="*" onclick="scrivi('*')" />

    <input type="button" value="C" onclick="canc()" />
    <input type="button" value="0" onclick="scrivi('0')" />
    <input type="button" value="=" onclick="calcola()" />
    <input type="button" value="/" onclick="scrivi('/')" />

    <input type="button" value="mostra valore variabili" onclick="valore()" />
    <input type="text" name="valorevariabili">
    </form>
    </div>
    </body>


    quel controllo if(n1<10) creava il problema, adesso mi sembra ok
    Ciao.
    si adesso non da problemi *_*
    grazie mille! comunque avevo provato a dare un aggiustatina da solo e ho ottenuto questo
    codice:
    <head>
     <title>Calcolatrice</title>
     <script type="text/javascript">
     var n1=0;
     var n2=0;
     var op;
     var k=0;
     var primo1=0;
     var primo2=0;
    	function canc(){
    	  document.Calcolatrice.stringa.value=' ';
    	  n1=0;
    	  n2=0;
    	  k=0;
    }
    	function scrivi(str)
    {
    	 document.Calcolatrice.stringa.value=	  document.Calcolatrice.stringa.value+str;
    	if((str!='+')&&(str!='-')&&(str!='*')&&(str!='/'))
    	 {
    	   if(n1<10)
    	    {
    	      if(k==0)
    	       {
    	           if(primo1==0)
    		{n2=str;
    		primo1=1;}
    	                 else
    		{n2=n2*10+1*str;}
    	      }
    	     else
      	     {
    	              if(primo2==0)
    		{n1=str;
    		primo2=1;}
    	                 else
    		{n1=n1*10+1*str;}}
    	     }
    	  }
    	   else
    	     {op=str;
    	     k=1;}
    }
    	function calcola(){
    	  var ris;
    	  switch (op) {
    	     case '+': 
    	       ris= 1*n2 + 1*n1;
    	       document.Calcolatrice.stringa.value=ris;
    	    break;
    	     case '-': 
    	       ris= n2-n1;
    	       document.Calcolatrice.stringa.value=ris;
    	    break;
    	     case '*':
    	       ris= n2*n1;
    	       document.Calcolatrice.stringa.value=ris;
    	    break;
    	      case '/':
    	       ris= n2/n1;
    	       document.Calcolatrice.stringa.value=ris;
    	    break;
    	}
    	valore();
    }
    	function valore(){
    	  switch (op) {
    	     case '+': document.Calcolatrice.valorevariabili.value= n2+op+n1;
    	    break;
    	      case '-': document.Calcolatrice.valorevariabili.value= n2+op+n1;
    	    break;
    	     case '*': document.Calcolatrice.valorevariabili.value= n2+op+n1;
    	    break;
    	      case '/': document.Calcolatrice.valorevariabili.value= n2+op+n1;
    	    break;
    	}
    }
     </script>
    </head>
    <body>
     <div align="center" valign="top">
       <big><big>CALCOLATRICE</big></big> semplice
    
     <form name="Calcolatrice">
     	<input type="text" name="stringa" readonly="true">
    
    	<input type="button" value="1" onclick="scrivi('1')">
    	<input type="button" value="2" onclick="scrivi('2')">
    	<input type="button" value="3" onclick="scrivi('3')">
    	<input type="button" value="+" onclick="scrivi('+')">
    
    	<input type="button" value="4" onclick="scrivi('4')">
    	<input type="button" value="5" onclick="scrivi('5')">
    	<input type="button" value="6" onclick="scrivi('6')">
    	<input type="button" value="-" onclick="scrivi('-')">
    
    	<input type="button" value="7" onclick="scrivi('7')">
    	<input type="button" value="8" onclick="scrivi('8')">
    	<input type="button" value="9" onclick="scrivi('9')">
    	<input type="button" value="*" onclick="scrivi('*')">
    
    	<input type="button" value="C" onclick="canc()">
    	<input type="button" value="0" onclick="scrivi('0')">
    	<input type="button" value="=" onclick="calcola()">
    	<input type="button" value="/" onclick="scrivi('/')">
    
    	<input type="button" value="mostra valore variabili" onclick="valore()">
    	<input type="text" name="valorevariabili">
     </form>
      </div>
    </body>
    Comunque grazie mille per l'aiuto! grazie grazi grazie grazie!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.