Advertisement
NelloRizzo

Esercizi sulle Liste

Apr 24th, 2020
917
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VB.NET 4.21 KB | None | 0 0
  1. Imports System.Globalization
  2.  
  3. Module Module1
  4.     ' data una lista di stringhe trovare la stringa più lunga
  5.     Function StringaLunga(l As List(Of String)) As String
  6.         Dim risultato As String = l(0) ' faccio finta che la prima sia la più lunga
  7.         For Each s In l ' percorro tutta la lista
  8.             If s.Length > risultato.Length Then risultato = s ' se trovo una stringa più lunga la prendo
  9.         Next
  10.         Return risultato
  11.     End Function
  12.     ' data una lista di stringhe trovare quella che contiene più vocali
  13.     Function ContaVocali(s As String) As Integer
  14.         s = s.ToLower().Replace("è", "e").Replace("ò", "o").Replace("à", "a").Replace("ì", "i").Replace("ù", "u").Replace("é", "e") ' metto in minuscolo e rimpiazzo le accentate
  15.         Dim contatore = 0
  16.         For Each c As Char In s
  17.             If c = "a" Or c = "e" Or c = "i" Or c = "o" Or c = "u" Then contatore += 1
  18.         Next
  19.         Return contatore
  20.     End Function
  21.     Function MaxVocali(l As List(Of String)) As String
  22.         Dim risultato As String = l(0) ' faccio finta che il risultato sia la prima della lista
  23.         Dim vocalirisultato As Integer = ContaVocali(risultato) ' conto quante vocali ci sono
  24.         For Each s In l ' scorro la lista
  25.             Dim vocali = ContaVocali(s)
  26.             If vocali > vocalirisultato Then ' controllo se ci sono più vocali
  27.                 risultato = s ' prendo la stringa come candidata al risultato
  28.                 vocalirisultato = vocali ' e memorizzo anche il numero di vocali
  29.             End If
  30.         Next
  31.         Return risultato
  32.     End Function
  33.     Function Massimo(l As List(Of Integer)) As Integer
  34.         Dim risultato = l(0) ' il primo numero è il candidato alla vittoria
  35.         For Each n In l ' scansiono la lista
  36.             If n > risultato Then risultato = n ' se trovo un numero più alto, lo prendo
  37.         Next
  38.         Return risultato
  39.     End Function
  40.  
  41.     Function NumeriPari(l As List(Of Integer)) As List(Of Integer)
  42.         Dim risultato As New List(Of Integer) ' devo restituire una lista
  43.         For Each n In l ' scansiono la lista in input
  44.             If n Mod 2 = 0 Then risultato.Add(n) ' se trovo un numero pari, lo inserisco tra quelli da restituire
  45.         Next
  46.         Return risultato
  47.     End Function
  48.  
  49.     ' data una lista di istanze della classe Coppia, calcolare il valore della lista in cui
  50.     ' è massima la differenza tra Primo e Secondo
  51.     Class Coppia
  52.         Public Property Primo As Integer
  53.         Public Property Secondo As Integer
  54.     End Class
  55.  
  56.     Function MaxCoppia(l As List(Of Coppia)) As Coppia
  57.         Dim risultato As Coppia = l(0)
  58.         For Each c In l
  59.             If c.Primo - c.Secondo > risultato.Primo - risultato.Secondo Then
  60.                 risultato = c
  61.             End If
  62.         Next
  63.         Return risultato
  64.     End Function
  65.     Sub Main()
  66.         Dim l As New List(Of String) From {
  67.             "arma virumque cano",
  68.             "lorem ipsum dolor sit amet",
  69.             "trentatre trentini tornavano da trento",
  70.             "tutti e trentatré trotterellando",
  71.             "le aiuole e le peonie al sole"
  72.         }
  73.         Dim sl As String = StringaLunga(l)
  74.         Dim sv As String = MaxVocali(l)
  75.         Console.WriteLine("Stringa più lunga: {0}", sl)
  76.         Console.WriteLine("Stringa con più vocali: {0}", sv)
  77.  
  78.         ' data una lista di numeri individuare il più grande
  79.         Dim n As New List(Of Integer) From {423, 645, 5986, 21345, 9, 1423, 985, 5243, 609, 243, 4689, 465, 8467, 1234, 46}
  80.         Dim max As Integer = Massimo(n)
  81.         Console.WriteLine("Numero più alto: {0}", max)
  82.         ' data una lista di numeri stampare solo i numeri pari
  83.         Dim pari As List(Of Integer) = NumeriPari(n)
  84.         Console.WriteLine("Numeri pari presenti nella lista:")
  85.         For Each x In pari
  86.             Console.WriteLine(x)
  87.         Next
  88.  
  89.         Dim lc As New List(Of Coppia) From {
  90.             New Coppia With {.Primo = 10, .Secondo = 30},
  91.             New Coppia With {.Primo = -10, .Secondo = 50},
  92.             New Coppia With {.Primo = 410, .Secondo = 130},
  93.             New Coppia With {.Primo = 140, .Secondo = 330}
  94.             }
  95.         Dim r As Coppia = MaxCoppia(lc)
  96.         Console.WriteLine("Coppia: ({0},{1})", r.Primo, r.Secondo)
  97.     End Sub
  98.  
  99. End Module
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement