Заблокирован
1

Где ошибка? Код Хэмминга (15,11)

04.07.2016, 19:32. Показов 2567. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ввожу 11-битовое кодовое слово, умножаю его на порождающую матрицу, получаю закодированное слово, затем ввожу это закодированное слово и он пишет, что есть ошибка, хотя такого быть не должно. Где ошибка в коде найти не могу.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
using System.IO;
 
namespace ConsoleApplication1
{
    class Test
    {
        static void Main()
        {
            char[] data = new char[11];
            int[] encoded = new int[15];
            int[] edata = new int[15];
            int[] syndrome = new int[12];
            int[,] hmatrix = new int[4, 15]{{1,0,0,0,1,0,0,1,0,1,1,0,1,1,1},
                                            {0,1,0,0,1,1,0,0,1,0,1,1,0,1,1},
                                            {0,0,1,0,0,1,1,1,0,0,1,1,1,0,1},
                                            {1,0,0,1,0,0,1,0,1,1,0,1,1,1,1}};
 
            char[,] gmatrix = new char[11, 15] { { '1', '1', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0' }, 
                                                 { '0', '1', '1', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0' }, 
                                                 { '0', '0', '1', '1', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0' },
                                                 { '1', '0', '1', '1', '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0' }, 
                                                 { '0', '1', '0', '1', '0', '0', '0', '0', '1', '0', '0', '0', '0', '0', '0' },
                                                 { '1', '0', '0', '1', '0', '0', '0', '0', '0', '1', '0', '0', '0', '0', '0' },
                                                 { '1', '1', '1', '0', '0', '0', '0', '0', '0', '0', '1', '0', '0', '0', '0' },
                                                 { '0', '1', '1', '1', '0', '0', '0', '0', '0', '0', '0', '1', '0', '0', '0' },
                                                 { '1', '0', '1', '1', '0', '0', '0', '0', '0', '0', '0', '0', '1', '0', '0' },
                                                 { '1', '1', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '0' },
                                                 { '1', '1', '1', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1' }};
            int i, j;
            Console.Write("\nКод Хэмминга. Кодирование\n\nВведите 11-битовое слово: \n");
            for (int d = 0; d < 11; d++)
            {
                data[d] = Convert.ToChar(Console.ReadLine());
            }
            //Console.Write("\nGenerator matrix enter\n");
            /* for(i=0;i<11;i++){
                 for(j=0;j<15;j++){
                     Console.Write("{0},{1}",i,j);
                    gmatrix[i,j]=Convert.ToChar(Console.ReadLine());
                 }
                 Console.WriteLine();
             }
             */
            Console.Write("\nПорождающая матрица\n");
            for (i = 0; i < 11; i++)
            {
                for (j = 0; j < 15; j++)
                {
                    Console.Write("{0} \t|", gmatrix[i, j]);
                }
                Console.WriteLine();
            }
            Console.WriteLine("\nКодированные данные\n");
            for (i = 0; i < 15; i++)
            {
                for (j = 0; j < 11; j++)
                    encoded[i] += ((data[j] - 0) * (gmatrix[j, i] - 0));
                encoded[i] = encoded[i] % 2;
                Console.Write("{0} |", encoded[i]);
            }
 
            Console.Write("\nКод Хэмминга. Декодирование\n\nВведите кодированные данные : \n");
            for (i = 0; i < 15; i++)
                edata[i] = Convert.ToChar(Console.ReadLine());
            for (i = 0; i < 4; i++)
            {
                for (j = 0; j < 15; j++)
                    syndrome[i] += (edata[j] * hmatrix[i, j]);
                syndrome[i] = syndrome[i] % 2;
            }
 
            for (j = 0; j < 15; j++)
                if ((syndrome[0] == hmatrix[0, j]) && (syndrome[1] == hmatrix[1, j]) && (syndrome[2] == hmatrix[2, j]) && (syndrome[3] == hmatrix[3, j]))
                    break;
            if (j == 15)
                Console.Write("\nОшибок нет\n");
            else
            {
                Console.Write("\nОшибка получена в {0} бите данных\n", j + 1);
                edata[j] = 0;
                Console.Write("\nДанные должны быть такими : ");
                for (j = 0; j < 15; j++)
                    if (edata[j] == 48)
                        Console.Write("{0} |", 0);
                    else if (edata[j] == 49)
                        Console.Write("{0} |", 1);
                    else
                        Console.Write("{0} |", edata[j]);
            }
 
            Console.ReadKey();
        }
    }
}
Добавлено через 54 минуты
Например я ввожу 10100101111. Получаю закодированное слово 100010100101111. Ввожу 100010100101111 и он пишет, что ошибка находится в 4 бите. Такого быть не должно.

Добавлено через 19 минут
Хэлпаните как-нибудь уже
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.07.2016, 19:32
Ответы с готовыми решениями:

Препод говорит где - то ошибка в синтаксисе. Сам код взят из "жефри Рихтер - Создание эффективных WIN32 приложений" Пожалуйста, подскажите где ошибка!
// получаем код ошибки DWORD dwError = GetDlgItemInt(hwnd, IDC_ERRORCODE, NULL, FALSE); HLOCAL...

Код Хэмминга. Расписать по строкам что делает код
using System; using System.Collections.Generic; using System.Linq; using System.Text; using...

Код Хэмминга
Возникла проблемка при написании программы для кодирования методом Хемминга (7,4) и после ...

Код Хэмминга
Прошу объяснить как работает этот код Хэмминга и написать прогу по заданию. Задание. ...

1
0 / 0 / 1
Регистрация: 21.06.2015
Сообщений: 56
04.07.2016, 21:43 2
Ребят, помогите.

Добавлено через 34 минуты
хэлп

Добавлено через 17 минут
понятно все. никто помочь даже не может

Добавлено через 58 минут
Ошибка была в порождающей матрице. Теперь только вот тут ошибка.
Он не пишет то, что получилось при кодировке.


C#
1
2
3
4
5
6
7
8
9
10
11
12
13
Console.Write("\nДанные должны быть такими : ");
                for (j = 0; j < 15; j++)
                    if (edata[j] == 48)
                        Console.Write("{0} |", 0);
                    else if (edata[j] == 49)
                        Console.Write("{0} |", 1);
                    else
                        Console.Write("{0} |", edata[j]);
            }
 
            Console.ReadKey();
        }
    }
0
04.07.2016, 21:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.07.2016, 21:43
Помогаю со студенческими работами здесь

Код Хэмминга
Здравствуйте! Для числа 101110(2) будет код хэмминга 1110011110, это должно быть правильно. А вот...

код Хэмминга
требуется написать программу, (кодер/декодер) код хэмминга (15,11) вводим ошибку срочно

Код Хэмминга
Добрый вечер. Может кто-нибудь подсказать, что именно нужно делать в этом задании. В интернете ноль...

Код Хэмминга
Как строиться таблица преобразования вида | синдром - место с ошибкой


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru