ITAsimo456

Soluzione esercizio prodotto scalare

Oct 15th, 2020 (edited)
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.00 KB | None | 0 0
  1.  
  2.  
  3. // SOLUZIONE ESERCIZIO PRODOTTO SCALARE
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10. using System;
  11.  
  12. namespace Test
  13. {
  14.     class Program
  15.     {
  16.  
  17.         static bool ProdottoScalare(double[] a, double[] b, out double risultato)
  18.         {
  19.             // Inizializzo subito il risultato a 0, dato che:
  20.             // se il prodotto scalare non si può calcolare, allora per le indicazioni dell'esercizio il risultato deve essere 0.
  21.             // se il prodotto scalare si può calcolare, allora lo userò come "totale" dato che devo fare una somma di tanti numeri;
  22.  
  23.             risultato = 0;
  24.  
  25.  
  26.             // Se il prodotto scalare non si può calcolare, allora restituisco falso.
  27.             if (a.Length != b.Length)
  28.                 return false;
  29.  
  30.  
  31.             // I valori di a.Length e b.Length sono uguali, quindi posso usare o l'uno o l'altro per indicare la lunghezza dei due array.
  32.             // Procedo con il calcolo della somma, iterando su ogni coppia di numeri a[i] e b[i]:
  33.             for (int i = 0; i < a.Length; i++)
  34.                 risultato += a[i] * b[i];
  35.  
  36.  
  37.             // Il prodotto scalare è stato calcolato, quindi restituisco vero, uscendo dalla funzione.
  38.             return true;
  39.         }
  40.  
  41.  
  42.         // Una funzione che restituisce un array di double con lunghezza e valori letti da input.
  43.         // Non necessaria, ma comoda poichè possiamo scrivere la Main molto più sinteticamente e espressivamente.
  44.         static double[] LeggiArrayDouble()
  45.         {
  46.             Console.Write("Inserisci la lunghezza dell'array: ");
  47.             int lun = int.Parse(Console.ReadLine()); // Leggo la lunghezza
  48.             double[] array = new double[lun]; // Istanzio l'array
  49.  
  50.             Console.WriteLine("Inserisci " + lun + " valori separati da Invio per popolare l'array:");
  51.             // Leggo i valori
  52.             for (int i = 0; i < lun; i++)
  53.                 array[i] = double.Parse(Console.ReadLine());
  54.  
  55.             return array;
  56.         }
  57.  
  58.  
  59.         static void Main(string[] args)
  60.         {
  61.             // Leggo i due array da input.
  62.             double[] primo_array = LeggiArrayDouble();
  63.             Console.Write("\n"); // Separo l'output delle due funzioni con una linea vuota.
  64.             double[] secondo_array = LeggiArrayDouble();
  65.             Console.Write("\n");
  66.  
  67.  
  68.             double prodotto;
  69.             // Quando chiamo la funzione, il risultato del prodotto scalare sarà contenuto in "prodotto".
  70.             // ProdottoScalare però restituisce un booleano che rappresenta se l'operazione ha avuto successo, quindi in base a quello decido cosa fare:
  71.             if (ProdottoScalare(primo_array, secondo_array, out prodotto))
  72.                 Console.WriteLine("Il risultato è " + prodotto + "."); // ProdottoScalare ha restituito Vero, allora stampo il risultato.
  73.             else
  74.                 Console.WriteLine("Non ha senso calcolare il prodotto scalare."); // ProdottoScalare ha restituito Falso, allora stampo il messaggio di "errore".
  75.  
  76.             Console.ReadKey();
  77.         }
  78.     }
  79. }
  80.  
Add Comment
Please, Sign In to add comment