diff --git a/Program.cs b/Program.cs index 09254ac..b8b6978 100644 --- a/Program.cs +++ b/Program.cs @@ -1,9 +1,173 @@ namespace matrix_2; -class Program -{ - static void Main(string[] args) - { - Console.WriteLine("Hello, World!"); +class Program { + static void Main(string[] args) { + Menu(); + } + + static void Menu() { + Console.Clear(); + int scelta; + int[,] matrix = null; + int[] array = null; + do { + + Console.WriteLine(); + Console.WriteLine("Inserire un'opzione:"); + Console.WriteLine("1. Crea matrice"); + Console.WriteLine("2. Stampa matrice"); + Console.WriteLine("3. Somma diagonale principale"); + Console.WriteLine("4. Media diagonale principale"); + Console.WriteLine("5. Prodotto diagonale principale"); + Console.WriteLine("6. Valore minimo e massimo diagonale principale"); + Console.WriteLine("0. Esci"); + Console.Write("Scelta: "); + scelta = Convert.ToInt32(Console.ReadLine()); + + switch (scelta) { + case 0: + break; + case 1: + Console.Clear(); + matrix = CreaMatrice(); + Pausa(); + break; + case 2: + Console.Clear(); + if (matrix != null) { + MostraMatrice(matrix); + } + else { + Console.WriteLine("È necessario creare la matrice prima di mostrarla."); + } + Pausa(); + break; + case 3: + Console.Clear(); + if (matrix != null) { + Console.WriteLine($"La somma degli elementi della diagonale principale è {SommaMatriceDiagonale(matrix)}"); + } + else { + Console.WriteLine("È necessario creare la matrice prima di calcolare la somma della diagonale principale."); + } + Pausa(); + break; + case 4: + Console.Clear(); + if (matrix != null) { + Console.WriteLine($"La media degli elementi della diagonale principale è {SommaMatriceDiagonale(matrix) / matrix.GetLength(0)}"); + } + else { + Console.WriteLine("È necessario creare la matrice prima di calcolare la media della diagonale principale."); + } + Pausa(); + break; + case 5: + Console.Clear(); + if (matrix != null) { + Console.WriteLine($"Il prodotto degli elementi della diagonale principale è {ProdottoMatriceDiagonale(matrix)}"); + } + else { + Console.WriteLine("È necessario creare la matrice prima di calcolare il prodotto della diagonale principale."); + } + Pausa(); + break; + case 6: + Console.Clear(); + if (matrix != null) { + array = MinimoMassimoMatriceDiagonale(matrix, 0); + Console.WriteLine($"Il valore minimo è {array[0]} e si trova in posizione {array[1]},{array[2]}"); + array = MinimoMassimoMatriceDiagonale(matrix, 1); + Console.WriteLine($"Il valore massimo è {array[0]} e si trova in posizione {array[1]},{array[2]}"); + } + else { + Console.WriteLine("È necessario creare la matrice prima di calcolare il minimo e il massimo della diagonale principale."); + } + Pausa(); + break; + default: + Console.WriteLine("Opzione non valida."); + Pausa(); + break; + } + } + while (scelta != 0); + } + + static void Pausa() { + Console.WriteLine("Premere un tasto per continuare. . ."); + Console.ReadKey(); + Console.Clear(); + } + + static int[,] CreaMatrice() { + int dimensione = 0; + Console.Write("Inserire le dimensioni della matrice: "); + dimensione = Convert.ToInt32(Console.ReadLine()); + int[,] ritorno = new int[dimensione, dimensione]; + RiempiMatrice(ritorno); + return ritorno; + } + static void MostraMatrice(int[,] p_matrice) { + for (int r = 0; r < p_matrice.GetLength(0); r++) { + for (int c = 0; c < p_matrice.GetLength(1); c++) { + Console.Write(p_matrice[r, c] + " "); + } + Console.WriteLine(); + } + } + static void RiempiMatrice(int[,] p_matrice) { + Random rnd = new Random(); + for (int r = 0; r < p_matrice.GetLength(0); r++) { + for (int c = 0; c < p_matrice.GetLength(1); c++) { + p_matrice[r, c] = rnd.Next(6); //TODO: rimettere il valore a 101 + } + } + } + + static int SommaMatriceDiagonale(int[,] p_matrice) { + int ritorno = 0; + for (int r = 0; r < p_matrice.GetLength(0); r++) { + ritorno = ritorno + p_matrice[r, r]; + } + return ritorno; + } + + static int ProdottoMatriceDiagonale(int[,] p_matrice) { + int ritorno = 1; + for (int r = 0; r < p_matrice.GetLength(0); r++) { + ritorno = ritorno * p_matrice[r, r]; + } + return ritorno; + } + + static int[] MinimoMassimoMatriceDiagonale(int[,] p_matrice, int p_scelta) { + int[] ritorno = new int[3]; + switch (p_scelta) { + case 0: + ritorno[0] = Int32.MaxValue; + for (int r = 0; r < p_matrice.GetLength(0); r++) { + if (p_matrice[r, r] < ritorno[0]) { + ritorno[0] = p_matrice[r, r]; + ritorno[1] = r; + ritorno[2] = r; + } + } + + break; + case 1: + ritorno[0] = Int32.MinValue; + for (int r = 0; r < p_matrice.GetLength(0); r++) { + if (p_matrice[r, r] > ritorno[0]) { + ritorno[0] = p_matrice[r, r]; + ritorno[1] = r; + ritorno[2] = r; + } + + } + break; + } + + return ritorno; } } diff --git a/bin/Debug/net9.0/matrix_2 b/bin/Debug/net9.0/matrix_2 new file mode 100755 index 0000000..06be888 Binary files /dev/null and b/bin/Debug/net9.0/matrix_2 differ diff --git a/bin/Debug/net9.0/matrix_2.deps.json b/bin/Debug/net9.0/matrix_2.deps.json new file mode 100644 index 0000000..4eee008 --- /dev/null +++ b/bin/Debug/net9.0/matrix_2.deps.json @@ -0,0 +1,23 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v9.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v9.0": { + "matrix_2/1.0.0": { + "runtime": { + "matrix_2.dll": {} + } + } + } + }, + "libraries": { + "matrix_2/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + } + } +} \ No newline at end of file diff --git a/bin/Debug/net9.0/matrix_2.dll b/bin/Debug/net9.0/matrix_2.dll new file mode 100644 index 0000000..5b6180d Binary files /dev/null and b/bin/Debug/net9.0/matrix_2.dll differ diff --git a/bin/Debug/net9.0/matrix_2.pdb b/bin/Debug/net9.0/matrix_2.pdb new file mode 100644 index 0000000..c3491e8 Binary files /dev/null and b/bin/Debug/net9.0/matrix_2.pdb differ diff --git a/bin/Debug/net9.0/matrix_2.runtimeconfig.json b/bin/Debug/net9.0/matrix_2.runtimeconfig.json new file mode 100644 index 0000000..b19c3c8 --- /dev/null +++ b/bin/Debug/net9.0/matrix_2.runtimeconfig.json @@ -0,0 +1,12 @@ +{ + "runtimeOptions": { + "tfm": "net9.0", + "framework": { + "name": "Microsoft.NETCore.App", + "version": "9.0.0" + }, + "configProperties": { + "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false + } + } +} \ No newline at end of file diff --git a/obj/Debug/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs b/obj/Debug/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs new file mode 100644 index 0000000..9e76325 --- /dev/null +++ b/obj/Debug/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v9.0", FrameworkDisplayName = ".NET 9.0")] diff --git a/obj/Debug/net9.0/apphost b/obj/Debug/net9.0/apphost new file mode 100755 index 0000000..06be888 Binary files /dev/null and b/obj/Debug/net9.0/apphost differ diff --git a/obj/Debug/net9.0/matrix_2.AssemblyInfo.cs b/obj/Debug/net9.0/matrix_2.AssemblyInfo.cs new file mode 100644 index 0000000..008dc35 --- /dev/null +++ b/obj/Debug/net9.0/matrix_2.AssemblyInfo.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("matrix_2")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+282e5ed6576673e17566281d70cd78d712d58a3a")] +[assembly: System.Reflection.AssemblyProductAttribute("matrix_2")] +[assembly: System.Reflection.AssemblyTitleAttribute("matrix_2")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// Generated by the MSBuild WriteCodeFragment class. + diff --git a/obj/Debug/net9.0/matrix_2.AssemblyInfoInputs.cache b/obj/Debug/net9.0/matrix_2.AssemblyInfoInputs.cache new file mode 100644 index 0000000..65ec05d --- /dev/null +++ b/obj/Debug/net9.0/matrix_2.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +5c574530e7a1f84a8ba8807f4f033310b4dab2123c9302f06e61373058a1456f diff --git a/obj/Debug/net9.0/matrix_2.GeneratedMSBuildEditorConfig.editorconfig b/obj/Debug/net9.0/matrix_2.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 0000000..5b1ae8e --- /dev/null +++ b/obj/Debug/net9.0/matrix_2.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,15 @@ +is_global = true +build_property.TargetFramework = net9.0 +build_property.TargetPlatformMinVersion = +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = matrix_2 +build_property.ProjectDir = /home/Verde/git/matrix_2/ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = +build_property.EffectiveAnalysisLevelStyle = 9.0 +build_property.EnableCodeStyleSeverity = diff --git a/obj/Debug/net9.0/matrix_2.GlobalUsings.g.cs b/obj/Debug/net9.0/matrix_2.GlobalUsings.g.cs new file mode 100644 index 0000000..8578f3d --- /dev/null +++ b/obj/Debug/net9.0/matrix_2.GlobalUsings.g.cs @@ -0,0 +1,8 @@ +// +global using global::System; +global using global::System.Collections.Generic; +global using global::System.IO; +global using global::System.Linq; +global using global::System.Net.Http; +global using global::System.Threading; +global using global::System.Threading.Tasks; diff --git a/obj/Debug/net9.0/matrix_2.assets.cache b/obj/Debug/net9.0/matrix_2.assets.cache new file mode 100644 index 0000000..c1a3626 Binary files /dev/null and b/obj/Debug/net9.0/matrix_2.assets.cache differ diff --git a/obj/Debug/net9.0/matrix_2.csproj.CoreCompileInputs.cache b/obj/Debug/net9.0/matrix_2.csproj.CoreCompileInputs.cache new file mode 100644 index 0000000..1b6e759 --- /dev/null +++ b/obj/Debug/net9.0/matrix_2.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +d7cdf28c1642372f088ecc914eae6fc301b23d42834d9d70ec74a1e394f57371 diff --git a/obj/Debug/net9.0/matrix_2.csproj.FileListAbsolute.txt b/obj/Debug/net9.0/matrix_2.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..e94f391 --- /dev/null +++ b/obj/Debug/net9.0/matrix_2.csproj.FileListAbsolute.txt @@ -0,0 +1,14 @@ +/home/Verde/git/matrix_2/bin/Debug/net9.0/matrix_2 +/home/Verde/git/matrix_2/bin/Debug/net9.0/matrix_2.deps.json +/home/Verde/git/matrix_2/bin/Debug/net9.0/matrix_2.runtimeconfig.json +/home/Verde/git/matrix_2/bin/Debug/net9.0/matrix_2.dll +/home/Verde/git/matrix_2/bin/Debug/net9.0/matrix_2.pdb +/home/Verde/git/matrix_2/obj/Debug/net9.0/matrix_2.GeneratedMSBuildEditorConfig.editorconfig +/home/Verde/git/matrix_2/obj/Debug/net9.0/matrix_2.AssemblyInfoInputs.cache +/home/Verde/git/matrix_2/obj/Debug/net9.0/matrix_2.AssemblyInfo.cs +/home/Verde/git/matrix_2/obj/Debug/net9.0/matrix_2.csproj.CoreCompileInputs.cache +/home/Verde/git/matrix_2/obj/Debug/net9.0/matrix_2.dll +/home/Verde/git/matrix_2/obj/Debug/net9.0/refint/matrix_2.dll +/home/Verde/git/matrix_2/obj/Debug/net9.0/matrix_2.pdb +/home/Verde/git/matrix_2/obj/Debug/net9.0/matrix_2.genruntimeconfig.cache +/home/Verde/git/matrix_2/obj/Debug/net9.0/ref/matrix_2.dll diff --git a/obj/Debug/net9.0/matrix_2.dll b/obj/Debug/net9.0/matrix_2.dll new file mode 100644 index 0000000..5b6180d Binary files /dev/null and b/obj/Debug/net9.0/matrix_2.dll differ diff --git a/obj/Debug/net9.0/matrix_2.genruntimeconfig.cache b/obj/Debug/net9.0/matrix_2.genruntimeconfig.cache new file mode 100644 index 0000000..b5f50ec --- /dev/null +++ b/obj/Debug/net9.0/matrix_2.genruntimeconfig.cache @@ -0,0 +1 @@ +d511960b683ae296ad19e3d228eaa99d7fba6ac75fc39a13286e5938c333fe4f diff --git a/obj/Debug/net9.0/matrix_2.pdb b/obj/Debug/net9.0/matrix_2.pdb new file mode 100644 index 0000000..c3491e8 Binary files /dev/null and b/obj/Debug/net9.0/matrix_2.pdb differ diff --git a/obj/Debug/net9.0/ref/matrix_2.dll b/obj/Debug/net9.0/ref/matrix_2.dll new file mode 100644 index 0000000..e4d45df Binary files /dev/null and b/obj/Debug/net9.0/ref/matrix_2.dll differ diff --git a/obj/Debug/net9.0/refint/matrix_2.dll b/obj/Debug/net9.0/refint/matrix_2.dll new file mode 100644 index 0000000..e4d45df Binary files /dev/null and b/obj/Debug/net9.0/refint/matrix_2.dll differ