pastebin

TreVettori
  1. using system;
  2. using system.Collections.Generic;
  3. using system.Linq;
  4. using system.Text;
  5. using system.Threading.Tasks;
  6. using system.Threading;
  7.  
  8. namespace TreVettori
  9. {
  10.     class Program
  11.     {
  12.         const int lunVettori = 20;
  13.  
  14.         static int[] VA = new int[lunVettori];
  15.         static int[] VB = new int[lunVettori];
  16.         static int[] VC = new int[lunVettori];
  17.  
  18.         static SemaphoreSlim Mutex1 = new SemaphoreSlim(0);
  19.         static SemaphoreSlim Mutex2 = new SemaphoreSlim(0);
  20.         static SemaphoreSlim Mutex3 = new SemaphoreSlim(0);
  21.  
  22.         static void Main(string[] args)
  23.         {
  24.             Parallel.Invoke(
  25.                 () => Att1(2018, 100),
  26.                 () => Att2(2019, 50),
  27.                 () => Att3(2020, 75)
  28.                 );
  29.         }
  30.  
  31.         static void Att1(int seed, int valMax)
  32.         {
  33.             Random random = new Random(seed);
  34.  
  35.             for (int i = 0; i < lunVettori; i++)
  36.             {
  37.                 VA[i] = random.Next(0,valMax + 1);
  38.             }
  39.  
  40.             //Mutex1.Release();
  41.             Mutex1.Release();
  42.             Mutex3.Wait();
  43.             //Mutex2.Wait();
  44.  
  45.             Console.WriteLine("Visualizzazione dei valori contenuti nei vettori (Attivit√† 1)");
  46.             for (int i = 0; i < lunVettori; i++)
  47.             {
  48.                 Console.WriteLine("Valore {0} del vettore VA: {1}", i, VA[i]);
  49.                 Console.WriteLine("Valore {0} del vettore VB: {1}", i, VB[i]);
  50.                 Console.WriteLine("Valore {0} del vettore VC: {1}", i, VC[i]);
  51.             }
  52.  
  53.  
  54.         }
  55.  
  56.         static void Att2(int seed, int valMax)
  57.         {
  58.  
  59.             Random random = new Random(seed);
  60.  
  61.             for (int i = 0; i < lunVettori; i++)
  62.             {
  63.                 VB[i] = random.Next(valMax + 1);
  64.             }
  65.  
  66.             //Mutex2.Release();
  67.             Mutex2.Release();
  68.             Mutex1.Wait();
  69.             //Mutex3.Wait();
  70.  
  71.             int[] valMaxVettori = new int[3];
  72.  
  73.             valMaxVettori[0] = VA.Max();
  74.             valMaxVettori[1] = VB.Max();
  75.             valMaxVettori[2] = VC.Max();
  76.  
  77.             Console.WriteLine("Valore massimo dei tre vettori: {0}", valMaxVettori.Max());
  78.          }
  79.  
  80.         static void Att3(int seed, int valMax)
  81.         {
  82.             Random random = new Random(seed);
  83.  
  84.             for (int i = 0; i < lunVettori; i++)
  85.             {
  86.                 VC[i] = random.Next(0, valMax + 1);
  87.             }
  88.  
  89.             //Mutex3.Release();
  90.             Mutex3.Release();
  91.             Mutex2.Wait();
  92.             //Mutex1.Wait();
  93.  
  94.             int contDispari = 0;
  95.            
  96.             for (int i = 0; i < lunVettori; i++)
  97.             {
  98.                 if (VA[i] % 2 != 0)
  99.                     contDispari++;
  100.                 if (VB[i] % 2 != 0)
  101.                     contDispari++;
  102.                 if (VC[i] % 2 != 0)
  103.                     contDispari++;
  104.             }
  105.  
  106.             Console.WriteLine("Il numero totale di numeri dispari nei tre vettori √®: {0}", contDispari);
  107.  
  108.         }
  109.  
  110.     }
  111. }
Parsed in 0.027 seconds