Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2013, 20:16   #1
meason
Новичок
Джуниор
 
Аватар для meason
 
Регистрация: 02.12.2013
Сообщений: 1
Печаль C# помогите найти ошибку в коде !! Разработать программу аппаратной реализации циклического кода (15, 11)

Разработать программу аппаратной реализации циклического кода (15, 11) с порождающим многочленом x4 + x3 + +x2 +1.

Комментарий преподавателя: Неверно определяет номер искаженного разряда
Помогите исправить пжлста )

Код программы:
Код:
using System;
using System.Collections.Generic;
//using System.Linq;
using System.Text;

namespace SystemNippel
{
publicclassSystemNippel
    {
//основной модуль программы
//содержит функции для обработки двоичных комбинаций и
//кодирования/декодирования по алгоритмам циклического кода

publicstaticstring Polynom = "11111";//порждающиймногочлен
publicstaticintinf = 11;//количество инф. символов
publicstaticintcount = 15;//общее колическтов символов
publicstaticint t = 1;//колическтво исправляемых ошибок

publicstaticintCountMoves=0;//количество левых сдвигов в текущем сеансе декодирования
//перед началом декодирования должен быть установлен в ноль

publicstaticchar plus(char c1, char c2)
{
//сложение разрядов по модудю 2
if (c1 == '0'&& c2 == '0') return'0';
if (c1 == '0'&& c2 == '1') return'1';
if (c1 == '1'&& c2 == '0') return'1';
if (c1 == '1'&& c2 == '1') return'0';

thrownewException("Ошибка: недопутимый символ");
return'0';

        }

publicstaticstring str_plus(string s1, string s2)
{
//сложение двоичных комбинаций по модулю 2
string s3 = "";
if (s1.Length != s2.Length) thrownewException("Внутренняяошибка: строкиразнойдлины");
for (int i = 0; i < s1.Length; i++)
{
                s3 += plus(s1[i], s2[i]);
            }
return s3;
        }

publicstaticstring GetRemainder(string x, string d)
{
//получение остатка от деления х на d
string r = "";
int n; //длина делимого 
int m; //длина делителя
int z; //указатель текущего положения разряда делимого
int i; //счетчикцикла
char[] arr;

z = 0;
            n = x.Length;
            m = d.Length;
for (i = 0; i < n; i++)//инициализация
            {
if (x[i] != '0'&& x[i] != '1') thrownewException("Ошибка: недопутимыйсимвол");
                r += x[i];
            }
            arr = r.ToCharArray();

while (true)
            {

for (i = 0; i <  m ; i++)
//прибавляем делитель в текущей позиции указателия
{
                    arr[z + i] =plus(arr[z + i], d[i]);
}
while (arr[z] == '0') { 
                    z++;//сдвиг указателя влево, до первой единицы
if (z >= arr.Length) break;
}
if (z > n - m) break;//конец деления

            }
            r = newstring(arr);

return r;
        }

publicstaticstring Coder(string s)
{
//кодирование двоичной комбинации
stringstr = "";
string output = "";
int r;

            str = s;
            r=count-inf;
for(int i=0;i<r;i++){
//увеличиваем длину строки до общего количества символов
str += '0';
            }
output = str;
str = GetRemainder(str, Polynom);//остаток от деления на порождающий многочлен
output = str_plus(output, str);//сложениесостатком
return output;

        }

publicstaticstring Transfer(string s, int bit)
{
//передача символа
//моделирует искажение выбранного бита (номер бита начинается с нуля)
char[] arr = s.ToCharArray();
if (arr[bit] == '0') { arr[bit] = '1'; }
elseif (arr[bit] == '1') { arr[bit] = '0'; }
returnnewstring(arr);

        }

publicstaticint GetWeight(string s)
{
//вычисляет количество единиц в двоичной комбинации
int i;
int c=0;
for (i = 0; i < s.Length; i++)
            {
if (s[i] == '1') c++;
            }
return c;
        }
publicstaticstring MoveLeft(string s)
{
//левый цикл.сдвиг двоичной комбинации на один разряд
stringres;
            res = s.Substring(1, s.Length - 1);
res += s[0];
returnres;
        }

publicstaticstring MoveRight(string s)
{
//правый цикл.сдвиг двоичной комбинации на один разряд
stringres="";
            res += s[s.Length - 1];
            res += s.Substring(0, s.Length - 1);            
return res;
        }

publicstaticbool CheckString(string str)
{
//проверка корректности введенной двоичной строки
//для правильной строки возвращает ИСТИНА
int i;
if (str.Length == 0) returnfalse;
for ( i = 0; i < str.Length; i++)
            {
if (str[i] != '0'&& str[i] != '1') returnfalse;
            }
returntrue;

}

//генерация случайной двоичной комбинации
//длина комбинации соответствует длине инф. части
publicstaticstring NewRandomNippel()
        {
Random rnd = newRandom();
String str = "";
int i;
for (i = 0; i < inf; i++)
            {
                str += rnd.Next(2).ToString();
            }
return str;

}




    }
}

________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(это кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 02.12.2013 в 23:11.
meason вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите найти ошибку в коде ( С++ ) nexUS1 Помощь студентам 1 29.12.2009 01:09
помогите найти ошибку в коде xaero93 Помощь студентам 4 20.04.2009 16:05
Помогите найти ошибку в коде! alex2008ean Паскаль, Turbo Pascal, PascalABC.NET 1 27.12.2008 18:31
Помогите найти ошибку в коде C++ Жека:) Помощь студентам 15 29.10.2008 11:32
помогите найти ошибку в коде Joker88 Помощь студентам 1 04.03.2008 12:43