Si, si può fareOriginariamente inviato da savana1983
...sarebbe ottimo se per ogni dipendente si dovrebbe eseguire questa istruzione e poi fare la somma di tutti...si potrebbe fare 'sta cosa...???.
Ho deciso di farlo modificando l'array BanconoteRichieste() in uno bidimensionale. In questo modo il primo indice corrisponde al numero del dipendente mentre il seconodo al taglio della banconota.
Se ad esempio volessi sapere quante banconote da 10 euro sono necessarie al pagamento del terzo dipendente, mi basterrà leggere il valore relativo a BanconoteRichieste(2,4):
codice:Private Sub Command1_Click() Const NumeroDipendenti = 3 Dim BanconoteRichieste() As Integer Dim BanconoteTotali(0, 7) As Integer Dim SommeDipendenti(NumeroDipendenti - 1) As Single Dim Cont1 As Integer Dim Cont2 As Integer Dim Annullato As Boolean Dim NumTemp As Single Dim StrTemp As String 'Inserimento For Cont1 = 0 To (NumeroDipendenti - 1) StrTemp = InputBox("Inserire somma per dipendente " & CStr(Cont1 + 1), "Inserimento") If Len(StrTemp) > 0 Then SommeDipendenti(Cont1) = CSng(StrTemp) Else Annullato = True Exit For End If Next Cont1 If Annullato = False Then 'Calcolo For Cont1 = 0 To (NumeroDipendenti - 1) NumTemp = SommeDipendenti(Cont1) Call CalcoloBanconoteNecessarie(NumTemp, NumeroDipendenti, Cont2, BanconoteRichieste()) Cont2 = Cont2 + 1 Next Cont1 'Messaggio dipendenti For Cont1 = 0 To (NumeroDipendenti - 1) MsgBox BanconoteNecessarie(Cont1, BanconoteRichieste()), vbInformation, "Risultato per dipendente " & CStr(Cont1 + 1) Next Cont1 'Messaggio totale For Cont1 = 0 To (NumeroDipendenti - 1) For Cont2 = 0 To 7 BanconoteTotali(0, Cont2) = BanconoteTotali(0, Cont2) + BanconoteRichieste(Cont1, Cont2) Next Cont2 Next Cont1 MsgBox BanconoteNecessarie(0, BanconoteTotali()), vbInformation, "Risultato totale" End If End Sub 'Calcolo Private Sub CalcoloBanconoteNecessarie(ByVal Somma As Single, ByVal NumeroDipendenti As Integer, _ ByVal Dipendente As Integer, ByRef BanconoteRichieste() As Integer) Dim BanconoteDisponibili(7) As Integer Dim NumTemp As Single Dim Cont As Integer ReDim Preserve BanconoteRichieste((NumeroDipendenti - 1&), UBound(BanconoteDisponibili)) 'Array Banconote BanconoteDisponibili(0) = 500 BanconoteDisponibili(1) = 100 BanconoteDisponibili(2) = 50 BanconoteDisponibili(3) = 20 BanconoteDisponibili(4) = 10 BanconoteDisponibili(5) = 5 BanconoteDisponibili(6) = 2 BanconoteDisponibili(7) = 1 'Calcolo banconote Do Until Somma = 0! NumTemp = Somma / BanconoteDisponibili(Cont) If NumTemp >= 1! Then Somma = Somma - (Int(NumTemp) * BanconoteDisponibili(Cont)) BanconoteRichieste(Dipendente, Cont) = CInt(Int(NumTemp)) End If Cont = Cont + 1 Loop End Sub 'Messaggio Private Function BanconoteNecessarie(ByVal Dipendente As Integer, ByRef BanconoteRichieste() As Integer) As String Dim Cont As Integer BanconoteNecessarie = "Sono necessarie :" & vbCrLf & vbCrLf For Cont = 0 To UBound(BanconoteRichieste, 2) If BanconoteRichieste(Dipendente, Cont) > 0 Then BanconoteNecessarie = BanconoteNecessarie & CStr(BanconoteRichieste(Dipendente, Cont)) If BanconoteRichieste(Dipendente, Cont) = 1 Then BanconoteNecessarie = BanconoteNecessarie & " banconota da " Else BanconoteNecessarie = BanconoteNecessarie & " banconote da " End If Select Case Cont Case Is = 0 BanconoteNecessarie = BanconoteNecessarie & "500 Euro" Case Is = 1 BanconoteNecessarie = BanconoteNecessarie & "100 Euro" Case Is = 2 BanconoteNecessarie = BanconoteNecessarie & "50 Euro" Case Is = 3 BanconoteNecessarie = BanconoteNecessarie & "20 Euro" Case Is = 4 BanconoteNecessarie = BanconoteNecessarie & "10 Euro" Case Is = 5 BanconoteNecessarie = BanconoteNecessarie & "5 Euro" Case Is = 6 BanconoteNecessarie = BanconoteNecessarie & "2 Euro" Case Is = 7 BanconoteNecessarie = BanconoteNecessarie & "1 Euro" End Select BanconoteNecessarie = BanconoteNecessarie & vbCrLf End If Next Cont End Function

.
:
Rispondi quotando