АВТ
Language:

Remote Training on Programming

Problems On-line status Contests FAQ
For authors:
Register  ||  Login
 
Hello, Guest! Login or register.

542. PDIUS Var #47

Time Limit: 30 seconds
Memory Limit:5000KB
Points:10
View Problem Statistics Submit Problem added Undefined

В контрольном задании рассматривается цифровая система передачи информации в структуре информационно управляющей сети, предназначенная для сбора некоторой технологической информации.
Разрабатываемая система является одноканальной, без обратной связи и использует симметричный канал. В полученной системе вероятность ошибки на параметр не должна превышать 0.1%.
Избыточность кода должна быть минимум на 20% меньше чем у кода с повтором символов, который удовлетворяет заданным параметрам.

Исходные данные:

№ вар.Количество технол. Парам.Средняя разрядность парам. в десятичных цифрах Частота опроса парам., ГцВероятность ошибки на символТип канала передачи данныхВид СПИ
4743200.25ТрСКСинхр.


Разработать консольную программу на языке С++, реализующую выбранный метод кодирования с использованием рассчитанных параметров.

Реализовать функции кодирования и декодирования по следующим прототипам:
char* Encoding(const int *arr, int size_arr, int &size_data);
int* Decoding(const char *data, int size_data, int &size_arr);

Для выполнения начальных расчетов и инициализации реализовать функцию:
void Initialization(void);

Для двоичного канала функция Encoding должна возвращать указатель на строку состоящую из символов "0" и "1".
arr - это массив 10-чных параметров.
Функция Encoding должна выделять память под возвращаемую строку. Освобождать её не требуется.
Функция Decoding должна выделять память под возвращаемый массив декодированных параметров. Освобождать её не требуется.


Для проверки работоспособности в программу будет включатся специальный заголовочный файл содержащий функцию main, из которой и будут производится вызовы разработанных функций Encoding и Decoding. Для этого в начало программы добавьте строчку:
#include <pdius_r.h>

Пример программы:
#include <pdius_r.h>

//константы и глобальные переменные
const int M=10,K=12,N=M+K;

//инициализация
void Initialization(void)
{
   randomize();
}

//кодирование
char* Encoding(const int *arr, int size_arr, int &size_data)
{
   char *res;
   int i;

   size_data=N*size_arr; //размер возвращаемой строки
   res=new char[size_data]; //выделение памяти под возвращаемую строку

   //здесь должно присутствавать само кодирование по выбранному методу
   for (i=0;i<size_data;i++)
      res[i]=rand()%2+'0';

   //возвращаем указатель на закодированную строку
   return res;
}

//декодирование
int* Decoding(const char *data, int size_data, int &size_arr)
{
   int *arr;
   int i;

   size_arr=size_data/N; //размер возвращаемого массива параметров
   arr=new int[size_arr]; //выделение памяти под возвращаемы массив параметров

   //здесь должно присутствавать само декодирование по выбранному методу
   for (i=0;i<size_arr;i++) 
      arr[i]=rand()%1000;

   //возвращаем указатель на массив декодированных параметров
   return arr;
}

View Problem Statistics Submit Author/source:
Educational Courses / PDIUS /
541. PDIUS Var #46 542. 543. PDIUS Var #48 544. PDIUS Var #49 545. PDIUS Var #50
We can all benefit by doing occasional "toy" programs, when artificial restrictions are set up, so that we are forced to push our abilities to the limit. The art of tackling miniproblems with all our energy will sharpen our talents for the real problems. Donald E. Knuth.
time generating 0.109 sec.
© Copyright VSTU, AVT, Nosov D.A.