Если невозможно упорядочить векторы, вывести сообщение "Вектора несравнимы" - C#
Формулировка задачи:
даны булевы вектора а и b длины n. Если возможно упорядочить их, или вывести сообщение "Вектора несравнимы
Решение задачи: «Если невозможно упорядочить векторы, вывести сообщение "Вектора несравнимы"»
textual
Листинг программы
public static class report
{
[STAThread]
public static void Main()
{
BitArray a = new BitArray(new bool[] {true, true, true, false});
BitArray b = new BitArray(new bool[] {true, true, true, true});
Console.WriteLine(a.CompareTo(b));
Console.WriteLine(b.CompareTo(a));
Console.ReadKey();
}
/// <summary>Сравнивает два булевых массива</summary>
/// <returns>
/// 1, если массив a больше b
/// 0, если массив а равен b
/// -1, если массив а меньше b
/// null, если массивы не сравнимы
/// </returns>
public static int? CompareTo(this BitArray a, BitArray b)
{
if (a.Length != b.Length)
return null;
bool aGreat = false;
bool bGreat = false;
for (int i = 0; i < a.Length; i++)
{
if (a[i] && !b[i])
aGreat = true;
if (b[i] && !a[i])
bGreat = true;
}
if (aGreat && !bGreat)
return 1;
if (bGreat && !aGreat)
return -1;
if (!aGreat && !bGreat)
return 0;
return null;
}
}