Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2008
    Messaggi
    59

    [VB10]Popolare l'Array gestendo le eccezioni

    Ciao a tutti. Stavo facendo un esercizio in VB10, ma mi sono arenato. Questo è il testo:
    il programma chiede all'utente di inserire 5 numeri
    interi inferiori ad 80,calcola la media dei valori letti e stampa sul video la media e, per ciascuno dei 5 numeri letti, stampa un numero di * pari al suo valore
    Questo è il codice implementato finora (spero che i commenti siano chiari):

    codice:
    Dim ArrInserimenti(4) As Integer 
    'Dichiaro un Array di Integer contenente 5 elementi 
     Dim numeroInserito As Integer 
    'Dichiaro una variabile di tipo Integer chiamata numero Inserito  Dim ListaInserimenti As New List(Of Integer)
     'Dichiaro una lista di Integer chiamata ListaInserimenti          
    For i As Integer = 0 To 4 'Per 5 volte            
    Console.WriteLine("Inserisci un numero minore di 80: ") 
    'Scrivo a console la frase            
     numeroInserito = Console.ReadLine
     'Valorizzo la variabile numeroInserito           
       If numeroInserito < 80 Then 
    'Se il numeroInserito è minore di 80                
     ListaInserimenti.Add(numeroInserito) 
    'Inserisco numeroInserito in ListaInserimenti            
     Else                
     Console.WriteLine("Numero non valido")             
     End If                      
     Next        
     End Sub
    Però ho 2 domande:
    1.Ammettendo che l’utente inserisca numeri non validi, il programma dovrebbe comunque chiedere di inserire valori finché non ottengo 5 numeri validi (da 0 a 80). Come implemento una cosa del genere?
    2.Come vedete, avevo pensato di popolare l’Array in 2 passaggi: la lista riceve l’input e successivamente verrebbe convertita in Array. È possibile popolare direttamente l’array, senza passare per la lista?
    Abbiate pietà di me. È molto tempo che non programmo e molte cose me le sono dimenticate.
    Grazie in anticipo

  2. #2
    Utente di HTML.it L'avatar di escocat
    Registrato dal
    Feb 2012
    Messaggi
    308
    codice:
    for i as integer = 0 to 4
        do
            n(i) = Console.ReadLine
        loop until n(i)>=0 and n(i)<80 
    next
    Non so se funziona, mi è scaduto l'Express e sono senza VB!!!

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2008
    Messaggi
    59
    Originariamente inviato da escocat
    codice:
    for i as integer = 0 to 4
        do
            n(i) = Console.ReadLine
        loop until n(i)>=0 and n(i)<80 
    next
    Non so se funziona, mi è scaduto l'Express e sono senza VB!!!
    Grazie escocat (anche se non funzionava)....
    Ho risolto così:


    codice:
     Dim ArrInserimenti(4) As Integer 'Dichiaro un Array di Integer contenente 5 elementi        
     Dim numeroInserito As Integer 'Dichiaro una variabile di tipo Integer 
    Dim sommaNumeri As Integer 'Dichiaro una variabile di tipo integer 
    Dim mediaNumeri As Integer 'Dichiaro una variabile di tipo integer 
     Dim listaInserimenti As New List(Of Integer) 'dichiaro una lista              
    For i As Integer = 0 To 4      'per 5 volte           
    Console.WriteLine("Inserisci un numero minore di 80: ") 'Scrivo a console la frase             numeroInserito = Console.ReadLine 'Valorizzo la variabile numeroInserito             
     If 
    numeroInserito < 80 
    Then 'Se il numero inserito è minore di 80...               
      listaInserimenti.Add(numeroInserito) '...Aggiungo il numero alla lista            
     Else 'Altrimenti...               
      i -= 1 '...Decremento il ciclo di 1            
     End If        
     Next 'Poi            
      ArrInserimenti = listaInserimenti.ToArray()         'Converto in Array
      For Each numeroInserito In ArrInserimenti             
    sommaNumeri = sommaNumeri + numeroInserito    'Sommo tra loro i numeri dell'array   
      Next      
       mediaNumeri = sommaNumeri / 5           'Calcolo la media
    For x = 0 To mediaNumeri         'Ciclo da 0 alla media    
    Console.Write("*") 'Scrivo a console       
     Next         
    Console.ReadLine()
    Sinceramente, non l'ho scritto per sentirmi dire quanto sono bravo, ma per domandare se è corretto (per funzionare, funziona, ma una critica fa sempre comodo).

  4. #4
    Utente di HTML.it L'avatar di escocat
    Registrato dal
    Feb 2012
    Messaggi
    308
    Una delle regole principali della programmazione impone di non modificare esplicitamente il contatore all'interno di un loop.
    Ma cos'è che non andava nel mio loop? Non ho dimestichezza con la Console, io uso sempre le form...

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.