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

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


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

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