Severo.cs 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. class Severo
  5. {
  6. struct Element
  7. {
  8. public int Delivery { get; set; }
  9. public int Value { get; set; }
  10. public static int FindMinElement(int a, int b)
  11. {
  12. if (a > b) return b;
  13. if (a == b) { return a; }
  14. else return a;
  15. }
  16. }
  17. public void Join()
  18. {
  19. Console.ForegroundColor = ConsoleColor.Green;
  20. int i = 0;
  21. int j = 0;
  22. int n;
  23. Console.WriteLine("Введите количество A");
  24. n = Convert.ToInt32(Console.ReadLine());
  25. int[] a = new int[n];
  26. Console.WriteLine("Введите количество B");
  27. int m = Convert.ToInt32(Console.ReadLine());
  28. int[] b = new int[m];
  29. Element[,] C = new Element[n, m];
  30. Console.WriteLine("Введите a[i]");
  31. for (i = 0; i < a.Length; i++)
  32. {
  33. a[i] = Convert.ToInt32(Console.ReadLine());
  34. }
  35. Console.WriteLine("Введите b[i]");
  36. for (j = 0; j < b.Length; j++)
  37. {
  38. b[j] = Convert.ToInt32(Console.ReadLine());
  39. }
  40. Console.Clear();
  41. Console.WriteLine("Введите C[i][j]");
  42. for (i = 0; i < n; i++)
  43. {
  44. for (j = 0; j < m; j++)
  45. {
  46. Console.Write("a[{0},{1}] = ", i, j);
  47. C[i, j].Value = Convert.ToInt32(Console.ReadLine());
  48. }
  49. }
  50. i = j = 0;
  51. // действуем по алгоритму
  52. // идём с северо-западного элемента
  53. // если a[i] = 0 i++
  54. // если b[j] = 0 j++
  55. // если a[i],b[j] = 0 то i++,j++;
  56. // доходим до последнего i , j
  57. //Оператор while выполняет оператор или блок операторов, пока определенное выражение не примет значение false.
  58. while (i < n && j < m)
  59. {
  60. try
  61. {
  62. if (a[i] == 0) { i++; }
  63. if (b[j] == 0) { j++; }
  64. if (a[i] == 0 && b[j] == 0) { i++; j++; }
  65. C[i, j].Delivery = Element.FindMinElement(a[i], b[j]);
  66. a[i] -= C[i, j].Delivery;
  67. b[j] -= C[i, j].Delivery;
  68. }
  69. catch { }
  70. }
  71. Console.Clear();
  72. //выводим массив на экран
  73. for (i = 0; i < n; i++)
  74. {
  75. for (j = 0; j < m; j++)
  76. {
  77. if (C[i, j].Delivery != 0)
  78. {
  79. Console.Write("({0})", C[i, j].Delivery);
  80. }
  81. else
  82. Console.Write("====", C[i, j].Delivery);
  83. }
  84. Console.WriteLine();
  85. }
  86. //считаем функцию
  87. int ResultFunction = 0;
  88. for (i = 0; i < n; i++)
  89. {
  90. for (j = 0; j < m; j++)
  91. {
  92. ResultFunction += (C[i, j].Value * C[j, i].Delivery);
  93. }
  94. }
  95. Console.WriteLine("");
  96. Console.WriteLine("Результат = {0}", ResultFunction);
  97. i = 0;
  98. j = 0;
  99. int[] u = new int[n];
  100. int[] v = new int[m];
  101. Console.ReadLine();
  102. }
  103. }