Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - somma numerica?
Forum - C# / VB.NET - somma numerica?

Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 1:00
Giovedì, 01/01/1970
ciao a tutti, sto realizzando un calcolatore e mi si è presentato un problema:
Codice sorgente - presumibilmente Plain Text

  1. label4.text = label1.text + label3.text


es. se la label1 è 1 e la label3 è 3 il risultato è 13. premetto che ho dichiarato che il numero era un 'intero così:
Codice sorgente - presumibilmente VB.NET

  1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  2.         Dim numero1 As Integer = 1
  3.         If Label2.Text = "+" or "-" Then
  4.             Label3.Text = numero1
  5.         Else
  6.             Label1.Text = numero1
  7.         End If
  8.     End Sub


cosa devo fare?
scusatemi per la mia ignoranza! :rotfl:

PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2298
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 0:15
Domenica, 14/09/2008
:rotfl: in anzitutto non si interpreta un operatore da una stringa :rotfl:

ti crei 4 o 5 variabili booleane
le chiami: più, meno, per, diviso ecc. ecc.

l'utente scrive la prima cifra
memorizza la prima cifra in una variabile


adesso se preme +

fai solo stampare nella textbox il simobolo
ma vai ad abiliare la variabile booleana piu su true,

memorizza la seconda cifra

preme uguale e ti va a fare il calcolo


sul pulsante =  al click fai fare tipo

Codice sorgente - presumibilmente VB.NET

  1. dim cifra1 Cint(label1.text)
  2. dim cifra2 Cint(label2.text)
  3.  
  4. if piu  = true Then
  5.  
  6. dim totale = cifra1 + cifra2
  7.  
  8. end if
  9.  
  10. msgbox("il totale è: " & totale)





:k:

Ultima modifica effettuata da Thejuster il 14/09/2008 alle 0:22


https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 9:34
Domenica, 14/09/2008
Il tuo codice è sbagliato, TheJuster. Totale è una variabile locale del blocco if e non può essere usata al suo esterno (produrrà un errore). Inoltre è inutile usare quattro variabili booleane quando basta una variabile char.
Codice sorgente - presumibilmente VB.NET

  1. Dim N1 As Int32 = Label3.Text
  2. Dim N2 As Int32 = Label4.Text
  3. Dim Risultato As Int32
  4.  
  5. If Operatore = "+" Then
  6.   Risultato = N1 + N2
  7. End If
  8.  
  9. Messagebox.Show(Risultato)



Inoltre, ricordati, fabio, che non importa quale sia il tipo di dato che tu immetti come testo della label, poiché la proprietà Label.Text è SEMPRE di tipo stringa e viene trattata di conseguenza (il + tra due stringhe, infatti, serve per concatenare l'una all'altra).

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 12:23
Domenica, 14/09/2008
grazie (anche se avevo già risolto).
posto il codicce, cosi se serve ad altri è qui.
Codice sorgente - presumibilmente VB.NET

  1. Public Class Form1
  2.  
  3.     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  4.         Dim numero1 As Integer = 1
  5.         If Label9.Text = "0" Then
  6.             Label3.Text = numero1
  7.         Else
  8.             Label1.Text = numero1
  9.         End If
  10.     End Sub
  11.  
  12.     Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
  13.         Label2.Text = "+"
  14.         Label9.Text = "0"
  15.     End Sub
  16.  
  17.     Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
  18.         Dim zao
  19.         Dim zao1
  20.         zao = Val(Label1.Text)
  21.         zao1 = Val(Label3.Text)
  22.         If Label2.Text = "+" Then
  23.             Label4.Text = zao + zao1
  24.         ElseIf Label2.Text = "-" Then
  25.             Label4.Text = zao - zao1
  26.         ElseIf Label2.Text = "/" Then
  27.             Label4.Text = zao / zao1
  28.         ElseIf Label2.Text = "*" Then
  29.             Label4.Text = zao * zao1
  30.         End If
  31.     End Sub
  32.  
  33.     Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
  34.         Dim numero0 As Integer = 0
  35.         If Label9.Text = "o" Then
  36.             Label3.Text = numero0
  37.         Else
  38.             Label1.Text = numero0
  39.         End If
  40.     End Sub
  41.  
  42.     Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
  43.         Dim numero2 As Integer = 2
  44.         If Label9.Text = "0" Then
  45.             Label3.Text = numero2
  46.         Else
  47.             Label1.Text = numero2
  48.         End If
  49.     End Sub
  50.  
  51.     Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
  52.         Dim numero3 As Integer = 3
  53.         If Label9.Text = "0" Then
  54.             Label3.Text = numero3
  55.         Else
  56.             Label1.Text = numero3
  57.         End If
  58.     End Sub
  59.  
  60.     Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
  61.         Dim numero4 As Integer = 4
  62.         If Label9.Text = "0" Then
  63.             Label3.Text = numero4
  64.         Else
  65.             Label1.Text = numero4
  66.         End If
  67.     End Sub
  68.  
  69.     Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click
  70.         Dim numero5 As Integer = 5
  71.         If Label9.Text = "0" Then
  72.             Label3.Text = numero5
  73.         Else
  74.             Label1.Text = numero5
  75.         End If
  76.     End Sub
  77.  
  78.     Private Sub Button9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button9.Click
  79.         Dim numero6 As Integer = 6
  80.         If Label9.Text = "0" Then
  81.             Label3.Text = numero6
  82.         Else
  83.             Label1.Text = numero6
  84.         End If
  85.     End Sub
  86.  
  87.     Private Sub Button13_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button13.Click
  88.         Dim numero7 As Integer = 7
  89.         If Label9.Text = "0" Then
  90.             Label3.Text = numero7
  91.         Else
  92.             Label1.Text = numero7
  93.         End If
  94.     End Sub
  95.  
  96.     Private Sub Button11_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button11.Click
  97.         Dim numero9 As Integer = 9
  98.         If Label9.Text = "0" Then
  99.             Label3.Text = numero9
  100.         Else
  101.             Label1.Text = numero9
  102.         End If
  103.     End Sub
  104.  
  105.     Private Sub Button12_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button12.Click
  106.         Dim numero8 As Integer = 8
  107.         If Label9.Text = "0" Then
  108.             Label3.Text = numero8
  109.         Else
  110.             Label1.Text = numero8
  111.         End If
  112.     End Sub
  113.  
  114.     Private Sub Button15_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button15.Click
  115.         Label2.Text = "/"
  116.         Label9.Text = "0"
  117.     End Sub
  118.  
  119.     Private Sub Button14_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button14.Click
  120.         Label2.Text = "*"
  121.         Label9.Text = "0"
  122.     End Sub
  123.  
  124.     Private Sub Button10_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button10.Click
  125.         Label2.Text = "-"
  126.         Label9.Text = "0"
  127.     End Sub
  128.     Private Sub Button17_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button17.Click
  129.         Dim ciao
  130.         ciao = MsgBox("Sei sicuro di voler uscire?", vbYesNo)
  131.         If MsgBoxResult.Yes Then
  132.             Me.Close()
  133.         End If
  134.     End Sub
  135.  
  136.     Private Sub Button16_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button16.Click
  137.         Label1.Text = ""
  138.         Label2.Text = ""
  139.         Label3.Text = ""
  140.         Label4.Text = ""
  141.         Label9.Text = "1"
  142.     End Sub
  143. End Class


ho usato val(label1.text)
ciao a tutti e ancora grazie :k:

Ultima modifica effettuata da il 14/09/2008 alle 12:25
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 19:17
Domenica, 14/09/2008
Eheh, prova a mettere numeri a due cifre, e vedi che già non funziona più :rotfl:
Val legge solo il primo carattere. Devi usare CInt se vuoi convertire l'intera stringa.
Inoltre sarebbe meglio dare un nome a tutte quelle label... non ti pare?

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 16:03
Lunedì, 15/09/2008
Testo quotato

Postato originariamente da Il Totem:

Eheh, prova a mettere numeri a due cifre, e vedi che già non funziona più :rotfl:
Val legge solo il primo carattere. Devi usare CInt se vuoi convertire l'intera stringa.
Inoltre sarebbe meglio dare un nome a tutte quelle label... non ti pare?


hai ragione ma ho una domanda:
perchè le label non acquisiscono più di 2 numeri?
cioè, se provo a premere 2 volte 6 non funziona. perchè?

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 16:36
Martedì, 16/09/2008
Perchè usi =. Chissà quante volte l'avremmo già detto. = serve per IMPOSTARE il valore del testo, e non per aggiungere del testo a quello esistente.
Se fai Text = "a" e Text = "b" logicamente Text varrà "b" e non "ab". Usa l'operatore di conzatenazione &:
Codice sorgente - presumibilmente Plain Text

  1. Label.Text &= Numero


Usa CInt al posto di Val.

Inoltre, tutta la serie di metodi che hai scritto è inutile: ne basta uno solo per scrivere tutti i numeri. Se ti interessa, posso anche scriverlo, ma se preferisci rimanere così per ora, fa niente.

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 20:19
Martedì, 16/09/2008
Testo quotato


Inoltre, tutta la serie di metodi che hai scritto è inutile: ne basta uno solo per scrivere tutti i numeri. Se ti interessa, posso anche scriverlo, ma se preferisci rimanere così per ora, fa niente.


no dai dimmelo!8-|

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 15:18
Mercoledì, 17/09/2008
Invece di dichiarare una nuova variabile numerica in ogni sub, basta assegnare un Tag ad ogni pulsante con relativo valore, e associare tutti i click ad un'unica procedura. Al click sarà:
Codice sorgente - presumibilmente VB.NET

  1. Private Sub Button_Click(ByVal sender As Object, ByVal e As EventArgs)
  2.   Dim Numero As Int32 = CInt(sender.Tag)
  3.   '...
  4. End Sub


PM Quote