Добавление элемента в список list - C#

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

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

В список нужно на каждой итерации добавить новый элемент, при этом, сохранить добавленные раннее.
Листинг программы
  1. List<Tuple<int, int>> toDel = new List<Tuple<int, int>>();
  2. toDel.Add(new Tuple<int, int>(allZero[k - 1].Item2, allZero[k - 1].Item3));
Но здесь почему-то в списке остается только элемент, добавленный на последней итерации. Остальные магическим образом исчезают. Переменная n показывает количество элементов в списке (1), а должно быть 5. Помогите разобраться в чем дело.
Листинг программы
  1. for (int x = 0; x < 5; x++)
  2. {
  3. GetMinstr(matrix);
  4. GetRowReduction(matrix);
  5. GetMinstolb(matrix);
  6. GetReductionCollumn(matrix);
  7. ShowMasInDataGrid(dataGridView1, matrix);
  8. List<Tuple<int, int, int>> allZero = new List<Tuple<int, int, int>>();
  9. int rowCount = matrix.GetLength(0);
  10. int collumnCount = matrix.GetLength(1);
  11. for (int i = 0; i < rowCount; i++)
  12. for (int j = 0; j < collumnCount; j++)
  13. if (matrix[i, j] != 500)
  14. if (matrix[i, j] == 0)
  15. {
  16. int minIValue = Int32.MaxValue;
  17. int minI = Int32.MaxValue;
  18. int minJValue = Int32.MaxValue;
  19. int minJ = Int32.MaxValue;
  20. for (int a = 0; a < collumnCount; a++)
  21. {
  22. if (matrix[a, j] < minIValue && a != i) minIValue = matrix[a, j];
  23. minI = a;
  24. }
  25. for (int a = 0; a < collumnCount; a++)
  26. {
  27. if (matrix[i, a] < minJValue && a != j) minJValue = matrix[i, a];
  28. minJ = a;
  29. }
  30. allZero.Add(new Tuple<int, int, int>(minIValue + minJValue, i, j));
  31. }
  32. int k;
  33. k = allZero.Count;
  34. listBox1.Items.Add(k);
  35. allZero.Sort((a, b) => a.Item1.CompareTo(b.Item1));
  36. //ВОТ ЭТОТ СПИСОК
  37. List<Tuple<int, int>> toDel = new List<Tuple<int, int>>();
  38. List<Tuple<int, int>> optim = new List<Tuple<int, int>>();
  39. //ДОБАВЛЯЮ ЭЛЕМЕНТ
  40. toDel.Add(new Tuple<int, int>(allZero[k - 1].Item2, allZero[k - 1].Item3));
  41. optim.Add(new Tuple<int, int>(allZero[k - 1].Item2, allZero[k - 1].Item3));
  42. int z = optim.Count;
  43. //Удаление
  44. int n = toDel.Count; //КОЛИЧЕСТВО ЭЛЕМЕНТОВ В СПИСКЕ
  45. for (int i = 0; i < collumnCount; i++)
  46. {
  47. for (int j = 0; j < rowCount; j++)
  48. {
  49. if (i == toDel[n - 1].Item1) matrix[i, j] = 500;
  50. if (j == toDel[n - 1].Item2) matrix[i, j] = 500;
  51. matrix[toDel[n - 1].Item2, toDel[0].Item1] = matrix[0, 0];
  52. }
  53. }
  54. for (int i = 0; i < rowCount; ++i)
  55. {
  56. List<string> aa = allZero.Select(t => t.ToString()).ToList();
  57. List<string> bb = toDel.Select(t => t.ToString()).ToList();
  58. //List<string> cc = toDel.Select(t => t.ToString()).ToList();
  59.  
  60. label1.Text = string.Join(" ", aa);
  61. label2.Text = string.Join(" ", bb); //ПОКАЗЫВАЮ СПИСОК В ЛЕЙБЛЕ. ТАМ ВСЕГО ОДИН КОРТЕЖ
  62. label3.Text = string.Join(" ", n);// КОЛИЧЕСТВО ЭЛЕМЕНТОВ В СПИСКЕ =1. ПОЧЕМУ?
  63.  
  64. }
  65. }

Решение задачи: «Добавление элемента в список list»

textual
Листинг программы
  1.  public static int[] GetMinstr(int[,] matrixa)
  2.         {
  3.             int rowCount = matrixa.GetLength(0);
  4.             int collumnCount = matrixa.GetLength(1);
  5.             int[] minstr = new int[5];
  6.            
  7.             //Нахождение минимума по строкам
  8.             for (int i = 0; i < rowCount; ++i)
  9.             {
  10.  
  11.                 int  minRow = matrixa[0, 0];
  12.                
  13.                 for (int j = 0; j < collumnCount; ++j)
  14.                 { if (matrixa[i, j] != 500) {
  15.                         if (minRow > matrixa[i, j]) minRow = matrixa[i, j];
  16.                     }
  17.                 }
  18.  
  19.                 minstr[i] = minRow;
  20.             }
  21.             return minstr;
  22.         }
  23.         public static void  GetRowReduction(int[,] matrixa)
  24.         {
  25.  
  26.             //Редукция строк
  27.  
  28.             int rowCount = matrixa.GetLength(0);
  29.             int collumnCount = matrixa.GetLength(1);
  30.             int[] b = GetMinstr(matrixa);
  31.  
  32.             for (int i = 0; i < rowCount; ++i)
  33.             {
  34.  
  35.                 for (int j = 0; j < collumnCount; ++j)
  36.                 {
  37.                     if (matrixa[i, j] != 500) {
  38.                         matrixa[i, j] = matrixa[i, j] - b[i]; }
  39.  
  40.                }
  41.  
  42.             }
  43.            
  44.         }
  45.  
  46.         public static int[] GetMinstolb(int[,] matrixa)
  47.         {
  48.             //List<int> minstolb = new List<int>();
  49.             int rowCount = matrixa.GetLength(0);
  50.             int collumnCount = matrixa.GetLength(1);
  51.             int[] minstolb = new int[5];
  52.            
  53.             //Нахождение минимума по стролбцам
  54.             for (int i = 0; i < rowCount; ++i)
  55.             {
  56.                 int minCol = matrixa[0, 0];
  57.                 for (int j = 0; j < collumnCount; ++j)
  58.                 {
  59.                     if (matrixa[j, i] != 500) {
  60.                         if (minCol > matrixa[j, i]) minCol = matrixa[j, i];
  61.                     }
  62.  
  63.                 }
  64.                 minstolb[i] = minCol;
  65.  
  66.             }
  67.             return minstolb;
  68.         }
  69.  
  70.         public static void GetReductionCollumn(int[,] matrixa)
  71.         {
  72.             //List<int> minstolb = new List<int>();
  73.             int rowCount = matrixa.GetLength(0);
  74.             int collumnCount = matrixa.GetLength(1);
  75.             int [] a = GetMinstolb(matrixa);
  76.  
  77.             //Редукция столбцам
  78.             for (int i = 0; i < 5; ++i)
  79.             {
  80.  
  81.                 for (int j = 0; j < 5; ++j)
  82.                 {
  83.                     if (matrixa[i, j] != 500) {
  84.                         matrixa[i, j] = matrixa[i, j] - a[j];
  85.                     }
  86.  
  87.                 }
  88.  
  89.             }

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


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

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

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

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

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

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