Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // SOLUZIONE ESERCIZIO PRODOTTO SCALARE
- using System;
- namespace Test
- {
- class Program
- {
- static bool ProdottoScalare(double[] a, double[] b, out double risultato)
- {
- // Inizializzo subito il risultato a 0, dato che:
- // se il prodotto scalare non si può calcolare, allora per le indicazioni dell'esercizio il risultato deve essere 0.
- // se il prodotto scalare si può calcolare, allora lo userò come "totale" dato che devo fare una somma di tanti numeri;
- risultato = 0;
- // Se il prodotto scalare non si può calcolare, allora restituisco falso.
- if (a.Length != b.Length)
- return false;
- // 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.
- // Procedo con il calcolo della somma, iterando su ogni coppia di numeri a[i] e b[i]:
- for (int i = 0; i < a.Length; i++)
- risultato += a[i] * b[i];
- // Il prodotto scalare è stato calcolato, quindi restituisco vero, uscendo dalla funzione.
- return true;
- }
- // Una funzione che restituisce un array di double con lunghezza e valori letti da input.
- // Non necessaria, ma comoda poichè possiamo scrivere la Main molto più sinteticamente e espressivamente.
- static double[] LeggiArrayDouble()
- {
- Console.Write("Inserisci la lunghezza dell'array: ");
- int lun = int.Parse(Console.ReadLine()); // Leggo la lunghezza
- double[] array = new double[lun]; // Istanzio l'array
- Console.WriteLine("Inserisci " + lun + " valori separati da Invio per popolare l'array:");
- // Leggo i valori
- for (int i = 0; i < lun; i++)
- array[i] = double.Parse(Console.ReadLine());
- return array;
- }
- static void Main(string[] args)
- {
- // Leggo i due array da input.
- double[] primo_array = LeggiArrayDouble();
- Console.Write("\n"); // Separo l'output delle due funzioni con una linea vuota.
- double[] secondo_array = LeggiArrayDouble();
- Console.Write("\n");
- double prodotto;
- // Quando chiamo la funzione, il risultato del prodotto scalare sarà contenuto in "prodotto".
- // ProdottoScalare però restituisce un booleano che rappresenta se l'operazione ha avuto successo, quindi in base a quello decido cosa fare:
- if (ProdottoScalare(primo_array, secondo_array, out prodotto))
- Console.WriteLine("Il risultato è " + prodotto + "."); // ProdottoScalare ha restituito Vero, allora stampo il risultato.
- else
- Console.WriteLine("Non ha senso calcolare il prodotto scalare."); // ProdottoScalare ha restituito Falso, allora stampo il messaggio di "errore".
- Console.ReadKey();
- }
- }
- }
Add Comment
Please, Sign In to add comment