Follow along with the video below to see how to install our site as a web app on your home screen.
Nota: This feature may not be available in some browsers.
Option Explicit
' controllare che lo script funzioni correttamente
' modificare lo script potrebbe dare origini a loop infiniti
Sub Main
If MsgBox("controllare che lo script funzioni correttamente" & vbCrLf & " modificare lo script potrebbe dare origini a loop infiniti" & vbCrLf & "Vuoi continuare?",4 + 64,"Informazioni") = 7 Then Exit Sub
Dim qValori,I,c,p,s
qValori = 0
Do While qValori < 2 Or qValori > 10
qValori = GetNumValori
Loop
p = 1
s = ""
For I = 1 To qValori
c = InserisciValore(I,qValori,s)
s = s & c & "*"
p = p*c
Next
s = RimuoviLastChr(s,"*")
Scrivi s & "=" & p
End Sub
Function GetNumValori
Dim qValori
On Error Resume Next
qValori = CInt(InputBox("Inserisci almeno 2 Valori ma non piu di 10 ","Quanti valori vuoi moltiplicare?",2))
If Err.number = 13 Then
MsgBox("Errore n. " & CStr(Err.Number) & " " & Err.Description)
Err.Clear ' Cancella l'errore.
End If
GetNumValori = qValori
End Function
Function InserisciValore(a,b,c)
Dim N1
On Error Resume Next
N1 = 0
Do While N1 = 0
N1 = CInt(InputBox("Inserisci un numero diverso da zero" & vbCrLf & c,"Valore " & a & " di " & b))
If Err.number = 13 Then
MsgBox("Errore n. " & CStr(Err.Number) & " " & Err.Description)
Err.Clear ' Cancella l'errore.
End If
Loop
Scrivi "Valore " & a & "=" & N1
InserisciValore = N1
End Function
Sub Main
a =NumeroCasuale ( 1 , 90)
b =NumeroCasuale ( 1 , 90)
Do
a = Int ( InputBox ( "Primo numero" , ,a ))
If a >0 Then
b = Int ( InputBox ( "Secondo numero" , , b))
End If
Loop While a <=0 Or b <=0
Scrivi " Primo numero : " & a
Scrivi " Secondo numero : " & b
End Sub
ciao Giggio da quello che ho capito , eugenio vuole escludere solo il valore zero non i negativibuonasera io lo farei cosi .. ineffetti il diagramma a blocchi non prevede la rinuncia e quindi nemmeno questo codice
Sub Main
Do
a = Int ( InputBox ( "Primo numero" , , NumeroCasuale ( 1 , 90)))
If a >=0 Then
b = Int ( InputBox ( "Secondo numero" , , NumeroCasuale ( 1 , 90)))
End If
Loop While a <=0 Or b <=0
Scrivi " Primo numero : " & a
Scrivi " Secondo numero : " & b
End Sub
Sub Main
Do
a = Int(InputBox("Primo numero",,a))
If a > 0 Then
b = Int(InputBox("Secondo numero",,b))
End If
Loop While a <= 0 Or b <= 0
Scrivi " Primo numero : " & a
Scrivi " Secondo numero : " & b
c = a*b
Scrivi c
End Sub
Mi scuso per le osservazioni banali , pensa che a me sembravano importanti,Lo 0 a ben vedere sembrerebbe voler essere escluso dal diagramma percio non l'ho messo , poi le modifiche per attuare ciò che si vuole non cambiano la logica del codice.
Osservazioni banali.
Option Explicit
Sub Main
If MsgBox("controllare che lo script funzioni correttamente" & vbCrLf & " modificare lo script potrebbe dare origini a loop infiniti" & vbCrLf & "Vuoi continuare?",4 + 64,"Informazioni") = 7 Then Exit Sub
Dim bRet,Ris
Dim Mex
Mex = "Inserisci l espressione che vuoi calcolare" & vbCrLf & _
"Sono ammessi i numeri decimali separati da un punto" & vbCrLf & _
"si possono calcolare i seguenti operatori:" & vbCrLf & _
"(+) ; (-) ; (*) ; (/) ; (^)" & vbCrLf & _
"le parentesi tonde hanno la precedenza nelle operazioni" & vbCrLf & _
"non si puo inserire il numero zero come da richiesta specifica"
Dim Tit
Tit = "Calcolo elementare di almeno 2 elementi"
Dim Testo: On Error Resume Next
bRet = False
Do While bRet = False
Testo = InputBox(Mex,Tit)
bRet = ValidoTesto(Testo)
Ris = eval(Testo)
If Err > 0 Then err.Clear:bRet = False
Loop
'
Scrivi Testo & "=" & Ris
End Sub
Function ValidoTesto(testo)
Dim k,n,num,aNum,bRet
num = ""
For k = 1 To Len(testo)
n = Mid(testo,k,1)
If n <> "," Then
If n <> "(" And n <> ")" And n <> "+" And n <> "-" And n <> "*" And n <> "/" And n <> "^" Then
num = num & n
Else
num = num & "|"
End If
Else
bRet = False
Exit Function
End If
Next
aNum = Split("|" & num,"|")
If UBound(aNum) > 1 Then
bRet = True
For k = 1 To UBound(aNum)
If aNum(k) = "0" Or(Not IsNumeric(aNum(k))And aNum(k) <> "") Then bRet = False
Next
ValidoTesto = bRet
Else
ValidoTesto = False
End If
End Function
Ciao ILegend volevo mettere 2 like, ma non è permessoMi scuso per le osservazioni banali , pensa che a me sembravano importanti,
La logica degli script è identica infatti.
La differenza sta nella gestione degli errori in input e nella flessibilità se volessi inserire + di 2 elementi .da moltiplicare?
anzi personalmente devo dire che poter fare solo un operazione mi sembra troppo riduttivo.
vi posto un altro piccolo script , ma oggi avendo ricevuto la visita di un familiare , non sono riuscito a testare completamente lo script ,per favore controllate se puo andare.
questo è ancora piu flessibile
c'è solo un inputbox in cui inserire le operazioni che si vogliono ottenere
fa tutto il vbscript in realta.
nell espressione se viene inserito uno zero rilancia l input box
mi scuso se lo stile non è quello di una volta , ma tra la fretta e la mancanza di allenamento sono riuscito a fare solo questo.
come sempre se ci sono degli errori segnalateli vediamo che si puo fare
Ciao
IMPORTANTE: NON é UNA CALCOLATRICE ,
NON SI GARANTISCE CHE I CALCOLI SIANO ESATTI
Vedi l'allegato 2199133Codice:Option Explicit Sub Main If MsgBox("controllare che lo script funzioni correttamente" & vbCrLf & " modificare lo script potrebbe dare origini a loop infiniti" & vbCrLf & "Vuoi continuare?",4 + 64,"Informazioni") = 7 Then Exit Sub Dim bRet,Ris Dim Mex Mex = "Inserisci l espressione che vuoi calcolare" & vbCrLf & _ "Sono ammessi i numeri decimali separati da un punto" & vbCrLf & _ "si possono calcolare i seguenti operatori:" & vbCrLf & _ "(+) ; (-) ; (*) ; (/) ; (^)" & vbCrLf & _ "le parentesi tonde hanno la precedenza nelle operazioni" & vbCrLf & _ "non si puo inserire il numero zero come da richiesta specifica" Dim Tit Tit = "Calcolo elementare di almeno 2 elementi" Dim Testo: On Error Resume Next bRet = False Do While bRet = False Testo = InputBox(Mex,Tit) bRet = ValidoTesto(Testo) Ris = eval(Testo) If Err > 0 Then err.Clear:bRet = False Loop ' Scrivi Testo & "=" & Ris End Sub Function ValidoTesto(testo) Dim k,n,num,aNum,bRet num = "" For k = 1 To Len(testo) n = Mid(testo,k,1) If n <> "," Then If n <> "(" And n <> ")" And n <> "+" And n <> "-" And n <> "*" And n <> "/" And n <> "^" Then num = num & n Else num = num & "|" End If Else bRet = False Exit Function End If Next aNum = Split("|" & num,"|") If UBound(aNum) > 1 Then bRet = True For k = 1 To UBound(aNum) If aNum(k) = "0" Or(Not IsNumeric(aNum(k))And aNum(k) <> "") Then bRet = False Next ValidoTesto = bRet Else ValidoTesto = False End If End Function
credo che funzi ma ripeto controllate
Vedi l'allegato 2199135
questa era l operazione che si vuole ottenere
se si sbaglioano le parentesi lo script si blocca
un attimo di accortezza nel digitare i dati in input
10 PRINT "QUAL'È IL PRIMO NUMERO?"
30 GOSUB 100
40T=N
50 PRINT "QUAL'È IL SECONDO NUMERO?"
70 GOSUB 100
80 PRINT "LA SOMMA DEI DUE NUMERI È", T + N
90 STOP
100 INPUT N
110 IF N = INT (N) THEN 140
120 PRINT "MI DISPIACE, IL NUMERO DEVE ESSERE UN INTERO.
RIPROVATE"
130 GOTO 100
140 RETURN