.NET 4.x Найти сумму элементов двумерного массива которые находятся между минимумом и максимумом - C#
Формулировка задачи:
Добрый день, прошу помочь в решении задачи, начал изучать С#, застрял на двумерных массивах. Задача стоит следующая:
Дан двумерный массив размерностью 5х5, заполненный случайными числами из диапазона от -100 до 100. Определить сумму элементов массива, расположенных между минимальным и максимальным элементами.
До момента поиска минимума и максимума а также нахождения позиций, я ее решил, но не могу в последнем цикле правильно поставить условия, чтобы посчитать правильно сумму.
Вот код:
Я здесь задал массив вручную для удобства отладки, но пока что решить до конца не получилось. Спасибо за помощь.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { //Random rand = new Random(); // int[,] MyArray = new int[5, 5]; int[,] MyArray = { { -50, 3, 5 }, { -80, 10, 15 }, { 4, 55, 78 } }; Console.WriteLine("This is our start array: "); for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { // MyArray[i, j] = rand.Next(-100, 101); Console.Write(MyArray[i, j] + "\t"); } Console.WriteLine(); } IEnumerable<int> ConvertedArray = MyArray.Cast<int>(); int MinValue = ConvertedArray.Min(); int MaxValue = ConvertedArray.Max(); Console.WriteLine("Minimal value of array it: " + MinValue); Console.WriteLine("Maximal value of array it: " + MaxValue); int IndexRMin = 0, IndexCMin = 0, IndexRMax = 0, IndexCMax = 0, Sum = 0; //ищем индексы максимума и минимума for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { if (MyArray[i, j] == MinValue) { IndexRMin = i; IndexCMin = j; } if (MyArray[i, j] == MaxValue) { IndexRMax = i; IndexCMax = j; } } } Console.WriteLine("Position of Min Value it: " + IndexRMin + IndexCMin); Console.WriteLine("Position of Max Value it: " + IndexRMax + IndexCMax); //вот здесь беда, не могу правильно поставить условия цикла, сумма считается неправильно for (int i = IndexRMin; i < IndexRMax; i++) { for (int j = IndexCMin; j < IndexCMax; j++) { if (MyArray[i, j] == MyArray[IndexRMin, IndexCMin]) { j++; } Sum += MyArray[i, j]; } } Console.WriteLine("Summa = : " + Sum); } } }
Решение задачи: «.NET 4.x Найти сумму элементов двумерного массива которые находятся между минимумом и максимумом»
textual
Листинг программы
bool НашлиМинимум = false; bool НашлиМаксимум = false; bool ЧтотоНашли = false; if (MinValue == MaxValue) Sum = 0; else { for (int i = 0; i < MyArray.GetLength(0); i++) { for (int j = 0; j < MyArray.GetLength(1); j++) { if (MyArray[i, j] == MinValue) { if (ЧтотоНашли == false) { IndexIMin = i; IndexJMin = j; ЧтотоНашли = true; НашлиМинимум = true; } if (ЧтотоНашли == true) if (НашлиМаксимум == false) { IndexIMin = i; IndexJMin = j; НашлиМинимум = true; } if (НашлиМаксимум == true && НашлиМинимум == false) { IndexIMin = i; IndexJMin = j; НашлиМинимум = true; } } if (MyArray[i, j] == MaxValue) { if (ЧтотоНашли == false) { IndexIMax = i; IndexJMax = j; ЧтотоНашли = true; НашлиМаксимум = true; } if (ЧтотоНашли == true) if (НашлиМинимум == false) { IndexIMax = i; IndexJMax = j; НашлиМаксимум = true; } if (НашлиМинимум == true && НашлиМинимум == false) { IndexIMax = i; IndexJMax = j; НашлиМаксимум = true; } } } } S += ("Position of Min Value it: " + IndexIMin + IndexJMin + "\n"); S += ("Position of Max Value it: " + IndexIMax + IndexJMax + "\n"); //вот здесь беда, не могу правильно поставить условия цикла, сумма считается неправильно bool flagSum = false; for (int i = 0; i < MyArray.GetLength(0); i++) for (int j = 0; j < MyArray.GetLength(1); j++) { if ((i == IndexIMin && j == IndexJMin) || (i == IndexIMax && j == IndexJMax)) { flagSum = !flagSum; continue; } if (flagSum) Sum += MyArray[i, j]; } } MessageBox.Show(Sum.ToString() + S); // после else вывод
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д