0 / 0 / 0
Регистрация: 20.12.2013
Сообщений: 6

Кодирование методом контроля четности

11.04.2016, 08:11. Показов 3929. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задание: Кодирование методом контроля чётности. Вводится k - число символов в блоке и последовательность двоичных символов, длина которой кратна (k-1). Если кратность нарушается, то последние символы последовательности игнорируются. Для каждой комбинации из (k-1) символов по методу контроля четности определяется значение k-ого, контрольного, символа и вся комбинация из k символов добавляется в результирующую последовательность, выводимую на экран по окончании кодирования всей входной последовательности символов.

Я написал программу, но она работает неверно и неверно кодирует, помогите найти ошибку или исправить код,
В общем случае : Вводим число k, затем двоичный код, отбрасываем конец пока длина строки не будет кратна k-1, преобразую строку в вид где на месте k пробелы, и надо посчитать, если в одной части ( первые k-1 символы ) количество едениц кратно 2 то ставим еденицу, иначе ноль, и так со всеми частями строки, но вот этот момент я не могу сделать. Помогите пожалуйста.

Писал на PascalABC.NET

Pascal
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
Var 
i,k,q,g,l,h,b,f:integer; 
a: string; 
begin 
writeln('Введите k'); 
readln(k); 
b:=0;
k:=k-1;
writeln('Введите последовательность двоичных чисел'); 
read(a); 
q:=0; 
for i:=1 to length(a) do 
q:=q+1; 
repeat
if q mod k = 0 then 
else
delete(a,length(a),1);
q:=length(a); 
writeln ('сокращаем количество символов до: ',q);
until (q mod k =0 );
g:=k;
repeat
insert (' ', a, g+1);
q:=q+1;
g:=g+k+1;
until g=q;
writeln ('Преобразуем строку: ',a);
h:=k+1;
for l:=1 to length(a) do
if (a[l]=' ') then
for f:=1 to h do
if a[f]='1' then 
b:=b+1
else b:=b;
if b mod 2 = 0 then
a[h]:='0'
else
a[h]:='1';
h:=h*2;
b:=0;
writeln ('Закодированная последовательность: ',a);
end.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.04.2016, 08:11
Ответы с готовыми решениями:

Реализовать 8-разрядную схему контроля четности
Ребят,чо эт ваще такое?! У меня глаза разъезжаются) Реально не понимаю этого задания.Получил его по инфе Сорри ес чего.Не знал куда...

Кодирование методом Хаффмана и Фано
Добрый день, не выполнить задание, Написать программу, которая осуществляет кодирование введенного текста методом Фано и Хаффмана ...

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

4
0 / 0 / 0
Регистрация: 20.12.2013
Сообщений: 6
15.04.2016, 19:45  [ТС]
Я переделал код, но все-равно неверно шифрует :с не могу понять в чем дело. ПОМОГИТЕ пожалуйста. Хотябы скажите в чем ошибка!
Pascal
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
Var 
i,k,q,g,l,h,b,f:integer; 
a: string; 
begin 
writeln('Введите k'); 
readln(k); 
b:=0;
k:=k-1;
writeln('Введите последовательность двоичных чисел'); 
read(a); 
q:=0; 
for i:=1 to length(a) do 
q:=q+1; 
repeat
if q mod k = 0 then 
else
delete(a,length(a),1);
q:=length(a); 
writeln ('сокращаем количество символов до: ',q);
until (q mod k =0 );
g:=k;
repeat
insert (' ', a, g+1);
q:=q+1;
g:=g+k+1;
until g=q;
writeln ('Преобразуем строку: ',a);
 
h:=2;
l:=h-1;
 
repeat // ВОТ ОТСЮДА НЕ ПОЛУЧАЕТСЯ
 
if a[h]<>' ' then 
else // если значение пробел, то выполняем перебор по подстроке от 1 до пробела
 
for f:=l to h // сам перебор
do
begin
if a[f]='1' then // ищем еденицы
b:=b+1;
end;
 
if b mod 2 = 0 then // если количество едениц четное, то ставим 0, если нечетное, то 1
a[h]:='0'
else
a[h]:='1';
 
l:=h+1; // меняем точку отсчета
h:=h+h; // меняем конечную точку
b:=0; // обнуляем b и начинаем сначала
until h>length(a);
writeln ('Закодированная последовательность: ',a);
end.
0
318 / 208 / 162
Регистрация: 08.12.2015
Сообщений: 863
15.04.2016, 21:17
Помимо того, что не очень понятно, что именно делает программа, есть куча лишних операторов, циклов, присвоений.
А что должна делать программа?
Я запустил:
Code
1
2
3
4
5
6
7
Введите k
5
Введите последовательность двоичных чисел
01101001100100110101010011001100
сокращаем количество символов до: 32
Преобразуем строку: 0110 1001 1001 0011 0101 0100 1100 1100
Закодированная последовательность: 0010 1001 1001 0011 0101 0100 1000 1100
И что? Ответ какой то есть. Что не так?
0
44 / 44 / 66
Регистрация: 22.07.2015
Сообщений: 191
15.04.2016, 21:17
Лучший ответ Сообщение было отмечено m0rfy как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
begin
  var k := ReadLnInteger('Введите k:'); k -= 1;
  var s := ReadLnString('Введите последовательность двоичных чисел:');
  Delete(s, s.Length - s.Length mod k + 1, k);
  WriteLn('Сокращаем количество символов до ', s.Length div k * k, ': ', s);
  for var i := 1 to s.Length div k do insert(' ', s, i * k + i);
  WriteLn('Преобразуем строку: ', s);
  for var i := 1 to s.Length div (k + 1) do
  begin
    var c := 0;
    for var j := (i - 1) * (k + 1) + 1 to i * (k + 1) - 1 do
      if s[j] = '1' then c += 1;
    s[i * (k + 1)] := chr(48 + c mod 2);
  end;
  WriteLn('Закодированная последовательность: ', s)
end.
0
0 / 0 / 0
Регистрация: 20.12.2013
Сообщений: 6
16.04.2016, 15:10  [ТС]
Спасибо большое! Просто только начинаю и многое что мне не понятно :с Программа работает верно ) Еще раз спасибо )
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.04.2016, 15:10
Помогаю со студенческими работами здесь

Кодирование методом Хаффмана
Написать программу, которая осуществляет кодирование Вашей фамилии, имени и отчества методом Хаффмена

Кодирование методом Хаффмана
Создать программу методом хакмана. Я не понимаю как. Помогите пожалуйста.:cry:

. Выполнить кодирование и декодирование русскоязычного текста методом Хаффмана
Выполнить кодирование и декодирование русскоязычного текста методом Хаффмана. MatLab Добавлено через 15 часов 11 минут спасибо)

Декодирование методом контроля четности (Pascal -> Python)
Помогите перевести код с pascal на python. begin var k := ReadLnInteger('Введите k:'); k -= 1; var s := ReadLnString('Введите...

Девятиразрядная схема контроля четности
написать программу девятиразрядная схема контроля чётности


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

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

Новые блоги и статьи
JWT аутентификация в ASP.NET Core
UnmanagedCoder 18.06.2025
Разрабатывая веб-приложения, я постоянно сталкиваюсь с дилеммой: как обеспечить надежную аутентификацию пользователей без ущерба для производительности и масштабируемости? Классические подходы на. . .
Краткий курс по С#
aaLeXAA 18.06.2025
Здесь вы найдете все необходимые функции чтоб написать програму на C# Задание 1: КЛАСС FORM 1 public partial class Form1 : Form { Spisok listin = new Spisok(); . . .
50 самых полезных примеров кода Python для частых задач
py-thonny 17.06.2025
Эффективность работы разработчика часто измеряется не количеством написаных строк, а скоростью решения задач. Готовые сниппеты значительно ускоряют разработку, помогают избежать типичных ошибок и. . .
C# и продвинутые приемы работы с БД
stackOverflow 17.06.2025
Каждый . NET разработчик рано или поздно сталкивается с ситуацией, когда привычные методы работы с базами данных превращаются в источник бессонных ночей. Я сам неоднократно попадал в такие ситуации,. . .
Angular: Вопросы и ответы на собеседовании
Reangularity 15.06.2025
Готовишься к техническому интервью по Angular? Я собрал самые распространенные вопросы, с которыми сталкиваются разработчики на собеседованиях в этом году. От базовых концепций до продвинутых. . .
Архитектура Onion в ASP.NET Core MVC
stackOverflow 15.06.2025
Что такое эта "луковая" архитектура? Термин предложил Джеффри Палермо (Jeffrey Palermo) в 2008 году, и с тех пор подход только набирал обороты. Суть проста - представьте себе лук с его. . .
Unity 4D
GameUnited 13.06.2025
Четырехмерное пространство. . . Звучит как что-то из научной фантастики, правда? Однако для меня, как разработчика со стажем в игровой индустрии, четвертое измерение давно перестало быть абстракцией из. . .
SSE (Server-Sent Events) в ASP.NET Core и .NET 10
UnmanagedCoder 13.06.2025
Кажется, Microsoft снова подкинула нам интересную фичу в новой версии фреймворка. Работая с превью . NET 10, я наткнулся на нативную поддержку Server-Sent Events (SSE) в ASP. NET Core Minimal APIs. Эта. . .
С днём независимости России!
Hrethgir 13.06.2025
Решил побеседовать, с утра праздничного дня, с LM о завоеваниях. То что она написала о народе, представителем которого я являюсь сам сначала возмутило меня, но дальше только смешило. Это чисто. . .
Лето вокруг.
kumehtar 13.06.2025
Лето вокруг. Наполненное бурями и ураганами событий. На фоне магии Жизни, священной и вечной, неумелой рукой человека рисуется панорама душевного непокоя. Странные серые краски проникают и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru