Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Sistemi - Program.cs

Program.cs

Caricato da: Poggi Marco
Scarica il programma completo

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace Sistema
  8. {
  9.     class Program
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.             Console.Write("Risoluzione dei sistemi lineari.\n\n\n");
  14.             Ciclo();
  15.             Console.Write("\n\nFine... ");
  16.             Console.ReadKey(true);
  17.         }
  18.  
  19.         static void Ciclo()
  20.         {
  21.             int dimensione = (int)Domanda("Quante equazioni ha il sistema ? ", 2, 70);
  22.             Sistemi risolvi = new Sistemi(dimensione);
  23.             CaricaSistema(risolvi);
  24.             Console.WriteLine("{0}\nSistema inserito:\n{1}\n", "".PadLeft(80, '#'), risolvi.ToString());
  25.             if (risolvi.Soluzioni(out double[] soluzioni))
  26.             {
  27.                 Console.WriteLine("Soluzioni del sistema: ");
  28.                 for (int i=0; i<soluzioni.Length; i++)
  29.                 {
  30.                     Console.WriteLine("{0,3} -> {1,12:f6}", i + 1, soluzioni[i]);
  31.                 }
  32.             }
  33.             else
  34.             {
  35.                 Console.WriteLine("Il sistema è indeterminato. ");
  36.             }
  37.         }
  38.  
  39.         static void CaricaSistema(Sistemi equazioni)
  40.         {
  41.             Console.WriteLine("Caricamento delle equazioni:\n\n");
  42.             int fine = equazioni.Dimensione();
  43.             for (int riga=0; riga<fine; riga++)
  44.             {
  45.                 Console.WriteLine("Equazione n° {0}:", riga + 1);
  46.                 for (int colonna=0; colonna<fine; colonna++)
  47.                 {
  48.                     equazioni[riga, colonna] = Domanda($"{colonna + 1}° termine ? ", -1e200, 1e200);
  49.                 }
  50.                 equazioni[riga, fine] = Domanda("Termine noto ? ", -1e200, 1e200);
  51.                 Console.WriteLine("".PadLeft(80, '-'));
  52.             }
  53.         }
  54.  
  55.         static double Domanda(string messaggio, double limiteInferiore, double limiteSuperiore)
  56.         {
  57.             double esito = 0.0;
  58.             while (true)
  59.             {
  60.                 Console.ForegroundColor = ConsoleColor.Gray;
  61.                 Console.Write("{0}", messaggio);
  62.                 Console.ForegroundColor = ConsoleColor.Cyan;
  63.                 if (! double.TryParse(Console.ReadLine().Replace('.', ','), out esito))
  64.                 {
  65.                     Console.ForegroundColor = ConsoleColor.Red;
  66.                     Console.WriteLine("Sono ammessi solo valori numerici.");
  67.                     continue;
  68.                 }
  69.                 if (esito < limiteInferiore)
  70.                 {
  71.                     Console.ForegroundColor = ConsoleColor.Red;
  72.                     Console.WriteLine($"Inserire un valore maggiore di {limiteInferiore}");
  73.                     continue;
  74.                 }
  75.                 if (esito > limiteSuperiore)
  76.                 {
  77.                     Console.ForegroundColor = ConsoleColor.Red;
  78.                     Console.WriteLine($"Inserire un valore minore di {limiteSuperiore}");
  79.                     continue;
  80.                 }
  81.                 break;
  82.             }
  83.             Console.ForegroundColor = ConsoleColor.Gray;
  84.             return esito;
  85.         }
  86.     }
  87. }