123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- using System;
- using System.Collections.Generic;
- using System.Text;
- class Severo
- {
- struct Element
- {
- public int Delivery { get; set; }
- public int Value { get; set; }
- public static int FindMinElement(int a, int b)
- {
- if (a > b) return b;
- if (a == b) { return a; }
- else return a;
- }
- }
- public void Join()
- {
- Console.ForegroundColor = ConsoleColor.Green;
- int i = 0;
- int j = 0;
- int n;
- Console.WriteLine("Введите количество A");
- n = Convert.ToInt32(Console.ReadLine());
- int[] a = new int[n];
- Console.WriteLine("Введите количество B");
- int m = Convert.ToInt32(Console.ReadLine());
- int[] b = new int[m];
- Element[,] C = new Element[n, m];
- Console.WriteLine("Введите a[i]");
- for (i = 0; i < a.Length; i++)
- {
- a[i] = Convert.ToInt32(Console.ReadLine());
- }
- Console.WriteLine("Введите b[i]");
- for (j = 0; j < b.Length; j++)
- {
- b[j] = Convert.ToInt32(Console.ReadLine());
- }
- Console.Clear();
- Console.WriteLine("Введите C[i][j]");
- for (i = 0; i < n; i++)
- {
- for (j = 0; j < m; j++)
- {
- Console.Write("a[{0},{1}] = ", i, j);
- C[i, j].Value = Convert.ToInt32(Console.ReadLine());
- }
- }
- i = j = 0;
- // действуем по алгоритму
- // идём с северо-западного элемента
- // если a[i] = 0 i++
- // если b[j] = 0 j++
- // если a[i],b[j] = 0 то i++,j++;
- // доходим до последнего i , j
- //Оператор while выполняет оператор или блок операторов, пока определенное выражение не примет значение false.
- while (i < n && j < m)
- {
- try
- {
- if (a[i] == 0) { i++; }
- if (b[j] == 0) { j++; }
- if (a[i] == 0 && b[j] == 0) { i++; j++; }
- C[i, j].Delivery = Element.FindMinElement(a[i], b[j]);
- a[i] -= C[i, j].Delivery;
- b[j] -= C[i, j].Delivery;
- }
- catch { }
- }
- Console.Clear();
- //выводим массив на экран
- for (i = 0; i < n; i++)
- {
- for (j = 0; j < m; j++)
- {
- if (C[i, j].Delivery != 0)
- {
- Console.Write("({0})", C[i, j].Delivery);
- }
- else
- Console.Write("====", C[i, j].Delivery);
- }
- Console.WriteLine();
- }
- //считаем функцию
- int ResultFunction = 0;
- for (i = 0; i < n; i++)
- {
- for (j = 0; j < m; j++)
- {
- ResultFunction += (C[i, j].Value * C[j, i].Delivery);
- }
- }
- Console.WriteLine("");
- Console.WriteLine("Результат = {0}", ResultFunction);
- i = 0;
- j = 0;
- int[] u = new int[n];
- int[] v = new int[m];
- Console.ReadLine();
-
- }
- }
|