Определить значение мажоритарной функции для заданного булева вектора - C#
Формулировка задачи:
Задание: Определить значение мажоритарной функции для заданного булева вектора. Мажоритарная функция принимает значение 1 на тех наборах, в которых больше 1 чем 0.
Вобщем по коду: вывел булеву функцию, определил ее десятичное значение, далее поразрядно смотрю в каких местах единицы и ставлю флажки. Но условие неверное: . Подскажите как исправить)
Листинг программы
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace мажоритарная_функция
- {
- class Program
- {
- static void Main(string[] args)
- {
- //ввод булева вектора
- int b, x, m1, flag1=0, flag0=0; uint a, m; string s;
- Console.WriteLine("Введите булев вектор");
- s = Console.ReadLine();
- b = s.Length;
- a=0;
- m1=0;
- for (int i = 0; i < b; i++) {
- if (s[b - 1 - i] == '1') {
- m1 = (1 << (i));
- m = (uint)m1;
- a = a | m;
- }
- }
- Console.WriteLine("Длина вектора {0}", b);
- Console.WriteLine("Число в 10-ой сс {0}", a);
- //проверка на мажоритарную
- for (int p = 0; p < b; p++) {
- if ((1 << (p)==1) && (a != 0)) {
- flag1++;
- }
- else
- flag0++;
- }
- if (flag1 > flag0)
- Console.WriteLine("Это мажоритарная функция");
- else
- Console.WriteLine("Не мажоритарная");
- }
- }
- }
Решение задачи: «Определить значение мажоритарной функции для заданного булева вектора»
textual
Листинг программы
- if (((1 << p) & a) != 0) {...}
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д