.NET 4.x Найти сумму элементов двумерного массива которые находятся между минимумом и максимумом - C#

Узнай цену своей работы

Формулировка задачи:

Добрый день, прошу помочь в решении задачи, начал изучать С#, застрял на двумерных массивах. Задача стоит следующая: Дан двумерный массив размерностью 5х5, заполненный случайными числами из диапазона от -100 до 100. Определить сумму элементов массива, расположенных между минимальным и максимальным элементами. До момента поиска минимума и максимума а также нахождения позиций, я ее решил, но не могу в последнем цикле правильно поставить условия, чтобы посчитать правильно сумму. Вот код:
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. namespace ConsoleApplication1
  6. {
  7. class Program
  8. {
  9. static void Main(string[] args)
  10. {
  11. //Random rand = new Random();
  12. // int[,] MyArray = new int[5, 5];
  13. int[,] MyArray = { { -50, 3, 5 }, { -80, 10, 15 }, { 4, 55, 78 } };
  14. Console.WriteLine("This is our start array: ");
  15. for (int i = 0; i < 3; i++)
  16. {
  17. for (int j = 0; j < 3; j++)
  18. {
  19. // MyArray[i, j] = rand.Next(-100, 101);
  20. Console.Write(MyArray[i, j] + "\t");
  21. }
  22. Console.WriteLine();
  23. }
  24. IEnumerable<int> ConvertedArray = MyArray.Cast<int>();
  25. int MinValue = ConvertedArray.Min();
  26. int MaxValue = ConvertedArray.Max();
  27. Console.WriteLine("Minimal value of array it: " + MinValue);
  28. Console.WriteLine("Maximal value of array it: " + MaxValue);
  29. int IndexRMin = 0, IndexCMin = 0, IndexRMax = 0, IndexCMax = 0, Sum = 0;
  30. //ищем индексы максимума и минимума
  31. for (int i = 0; i < 3; i++)
  32. {
  33. for (int j = 0; j < 3; j++)
  34. {
  35. if (MyArray[i, j] == MinValue)
  36. {
  37. IndexRMin = i;
  38. IndexCMin = j;
  39. }
  40. if (MyArray[i, j] == MaxValue)
  41. {
  42. IndexRMax = i;
  43. IndexCMax = j;
  44. }
  45. }
  46. }
  47. Console.WriteLine("Position of Min Value it: " + IndexRMin + IndexCMin);
  48. Console.WriteLine("Position of Max Value it: " + IndexRMax + IndexCMax);
  49. //вот здесь беда, не могу правильно поставить условия цикла, сумма считается неправильно
  50. for (int i = IndexRMin; i < IndexRMax; i++)
  51. {
  52. for (int j = IndexCMin; j < IndexCMax; j++)
  53. {
  54. if (MyArray[i, j] == MyArray[IndexRMin, IndexCMin])
  55. {
  56. j++;
  57. }
  58. Sum += MyArray[i, j];
  59. }
  60. }
  61. Console.WriteLine("Summa = : " + Sum);
  62. }
  63. }
  64. }
Я здесь задал массив вручную для удобства отладки, но пока что решить до конца не получилось. Спасибо за помощь.

Решение задачи: «.NET 4.x Найти сумму элементов двумерного массива которые находятся между минимумом и максимумом»

textual
Листинг программы
  1.  
  2.  
  3. bool НашлиМинимум = false;
  4. bool НашлиМаксимум = false;
  5. bool ЧтотоНашли = false;
  6.  
  7.  
  8. if (MinValue == MaxValue)
  9.  
  10.     Sum = 0;
  11. else
  12. {
  13.  
  14.     for (int i = 0; i < MyArray.GetLength(0); i++)
  15.     {
  16.         for (int j = 0; j < MyArray.GetLength(1); j++)
  17.         {
  18.             if (MyArray[i, j] == MinValue)
  19.             {
  20.                 if (ЧтотоНашли == false)
  21.                 {
  22.                     IndexIMin = i;
  23.                     IndexJMin = j;
  24.                     ЧтотоНашли = true;
  25.                     НашлиМинимум = true;
  26.  
  27.                 }
  28.  
  29.                 if (ЧтотоНашли == true)
  30.                     if (НашлиМаксимум == false)
  31.                     {
  32.                         IndexIMin = i;
  33.                         IndexJMin = j;
  34.                         НашлиМинимум = true;
  35.                     }
  36.  
  37.                 if (НашлиМаксимум == true && НашлиМинимум == false)
  38.                 {
  39.                     IndexIMin = i;
  40.                     IndexJMin = j;
  41.                     НашлиМинимум = true;
  42.                 }
  43.  
  44.  
  45.             }
  46.  
  47.  
  48.  
  49.  
  50.             if (MyArray[i, j] == MaxValue)
  51.             {
  52.                 if (ЧтотоНашли == false)
  53.                 {
  54.                     IndexIMax = i;
  55.                     IndexJMax = j;
  56.                     ЧтотоНашли = true;
  57.                     НашлиМаксимум = true;
  58.  
  59.                 }
  60.  
  61.                 if (ЧтотоНашли == true)
  62.                     if (НашлиМинимум == false)
  63.                     {
  64.                         IndexIMax = i;
  65.                         IndexJMax = j;
  66.                         НашлиМаксимум = true;
  67.                     }
  68.  
  69.                 if (НашлиМинимум == true && НашлиМинимум == false)
  70.                 {
  71.                     IndexIMax = i;
  72.                     IndexJMax = j;
  73.                     НашлиМаксимум = true;
  74.                 }
  75.  
  76.             }
  77.  
  78.  
  79.  
  80.  
  81.         }
  82.     }
  83.  
  84.  
  85.  
  86.  
  87.  
  88.     S += ("Position of Min Value it: " + IndexIMin + IndexJMin + "\n");
  89.  
  90.     S += ("Position of Max Value it: " + IndexIMax + IndexJMax + "\n");
  91.  
  92.     //вот здесь беда, не могу правильно поставить условия цикла, сумма считается неправильно
  93.  
  94.  
  95.     bool flagSum = false;
  96.  
  97.     for (int i = 0; i < MyArray.GetLength(0); i++)
  98.         for (int j = 0; j < MyArray.GetLength(1); j++)
  99.         {
  100.             if ((i == IndexIMin && j == IndexJMin) || (i == IndexIMax && j == IndexJMax))
  101.             {
  102.                 flagSum = !flagSum;
  103.                 continue;
  104.             }
  105.  
  106.             if (flagSum)
  107.                 Sum += MyArray[i, j];
  108.  
  109.  
  110.         }
  111.  
  112.  
  113.  
  114. }
  115.  
  116.  
  117.  
  118.     MessageBox.Show(Sum.ToString() + S); // после else вывод

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.8 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы