https://pastein.ru/t/6E

  скопируйте уникальную ссылку для отправки


using Microsoft.VisualBasic;
using System;
using System.Collections;
using System.IO;

namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            //создаем массив, состоящий из 8 бит
            int[] a = new int[8];
            //заполняем массив значениями с клавиатуры
            for (int i = 0; i < 8; i++)
            {
                a[i] = int.Parse(Console.ReadLine());
            }
            int j = 0;//j-счетчик 8-битного массива 
            int[] a1 = new int[12];//создаем массив, состоящий из 12 бит, для кода Хэмминга
            for (int i = 0; i < 12; i++)
            {
                if ((i != 0) && (i != 1) && (i != 3) && (i != 7))
                {
                    a1[i] = a[j];
                    j++;
                }
            }
            int E1 = (a1[2] + a1[4] + a1[6] + a1[8] + a1[10]) % 2;
            int E2 = (a1[2] + a1[5] + a1[6] + a1[9] + a1[10]) % 2;
            int E4 = (a1[4] + a1[5] + a1[6] + a1[11]) % 2;
            int E8 = (a1[8] + a1[9] + a1[10] + a1[11]) % 2;
            //вывод контрольных значений
            Console.WriteLine("Вывод контрольных значений: ");
            Console.WriteLine("E1 = {0}, E2 = {1}, E4 = {2}, E8 = {3}", E1, E2, E4, E8);
            a1[0] = E1;
            a1[1] = E2;
            a1[3] = E4;
            a1[7] = E8;
            Console.WriteLine("Массив с контрольными значениями: ");
            for (int i = 0; i < 12; i++)
            {
                Console.Write(a1[i]);
                Console.Write(" ");
            }
            Console.WriteLine();
            Console.WriteLine("Введите разряд, в который добавится ошибка");
            int error = int.Parse(Console.ReadLine());
            if (a1[error - 1] == 0)
            {
                a1[error - 1] = 1;
            }
            else
            {
                a1[error - 1] = 0;
            }
            Console.WriteLine();
            Console.WriteLine("Массив с ошибкой");
            for (int i = 0; i < 12; i++)
            {
                Console.Write(a1[i]);
                Console.Write(" ");
            }
            //Подсчет контрольных битов
            int K1 = (E1 + (a1[2] + a1[4] + a1[6] + a1[8] + a1[10])) % 2;
            int K2 = (E2 + (a1[2] + a1[5] + a1[6] + a1[9] + a1[10])) % 2;
            int K4 = (E4 + (a1[4] + a1[5] + a1[6] + a1[11])) % 2;
            int K8 = (E8 + (a1[8] + a1[9] + a1[10] + a1[11])) % 2;
            int[] a3 = new int[4];
            a3[0] = K1;
            a3[1] = K2;
            a3[2] = K4;
            a3[3] = K8;
            double index = 0;
            //подсчет разряда, в котором находится ошибка
            for (int i=0;i<a3.Length;i++)
            {
                index += a3[i] * Math.Pow(2, i);
            }
            Console.WriteLine(" ");
            Console.WriteLine("Ошибка находится в разряде: ");
            Console.Write(index);
            Console.ReadKey();
        }
    }
}