Форум программистов, компьютерный форум CyberForum.ru

"Теория вероятности Шейтона" и "Кодирование/дикодирование информации" (C++) - C++

Восстановить пароль Регистрация
 
Anna Rozhkova
Сообщений: n/a
31.08.2011, 18:26     "Теория вероятности Шейтона" и "Кодирование/дикодирование информации" (C++) #1
Всем здравструйте!
Есть две задачки: "Теория вероятности Шейтона" и "Кодирование/декодирование информации".
Код первой:
Задание первой:
1. Составить программу на языке C/С++ наличия букв русского алфавита в тексте, записанном в файл.
2. Определить энтропию этого текста.
3. Построить гистограмму распределения букв.
КОД
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
#include<iostream.h>
#include<conio.h>
#include<graphics.h>
#include<math.h>
#include<fstream.h>
#include<string.h>
char text;
char alf[26]="abcdefghijklmnopqrstuvwxyz";
int i,j,num[26];
float h;
void main()
{clrscr();
for (i=0;i<26;i++)
num[i]=0;
ifstream file("en.txt");
if (!file)
cout<<"Файл не открыт \n";
while (file>>text)
{for (i=0;i<26;i++)
if (alf[i]==text)
num[i]++; j++;}
for (i=0;i<26; i++)
if (num[i]!=0)
h=h+(float(num[i])/j)*(log(float(j)/num[i])/log(2));
cout<<"Распределение букв: \n";
for(i=0;i<26;i++)
cout<<alf[i]<<": "<<num[i]<<"\t";
cout<<"\n Энтропия: "<<h;
getch();
int dr=DETECT,mod;
initgraph(&dr,&mod,"");
setcolor(2);
line (40,440,550,440);
line (40,440,40,50);
outtextxy(45, 450, "a b c d e f g h i j k l m n o p q r s t u v w x y z");
int l;
for(i=0;i<26;i++)
{setcolor(14);
setfillstyle(SOLID_FILL,14);
l=45+i*16;
if (num[i]!=0)
{bar (l,440,l+7,440-num[i]);
floodfill(l+2,440-num[i]+1,14);}}
getch();
closegraph();}
Задание второй:
Программа работы
1. Составить программу по декодированию текста, если даны коды букв, удовлетворяющие условию Фано.
2. Определить расстояние Хемминга между словами, взятыми из файла с именем cshem.dat
3. Закодировать слово Y по данному слову X, слово Y будет производным от слова X.
КОД
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
 #include <iostream.h>
 #include <conio.h>
 #include <string.h>
 #include <fstream.h>
 char pas[100],z,n,c;
 int i;
 void main()
 { clrscr();
 cout<<"\t\t\t\tЗадание 1\n\n";
 char pas[]="LLLLOLOOLOOOOLLOLLOOLLLOLLOOOLOOLOL";
 cout<<"Нужно расшифровать слово: "<<pas<<" используя коды\n букв и условие Фано.";
 cout<<"\n\nПолученное слово: ";
 for (int i=0;i<strlen(pas);i++)
 {switch (pas[i]){case 'O' :{switch (pas[++i])
 {case 'L' : cout << "к"; goto w;
 case 'O' : cout << "о"; goto w;}}
 case 'L' : {switch (pas[++i]) {
 case 'O' : {switch (pas[++i])
 {case 'L' : cout << "д"; goto w;
 case 'O' : cout << "н"; goto w;}}
 case 'L' : {switch (pas[++i])
 {case 'L' :
 {switch (pas[++i])
 {case 'O' : cout << "ы"; goto w;
 case 'L' : cout << "э"; goto w;}}
 case 'O' : {switch (pas[++i])
 {case 'O' : cout << "й"; goto w;
 case 'L' : cout << "м"; goto w;} } } } } } }
 w:}
 getch();
 clrscr();
 
 //2
 cout<<"\t\t\t\tЗадание 2\n\n";
 ifstream file("cshem.dat");
 if (!file) cout<<"Файл не может быть открыт!";
 char k[10],l[10];
 int m=0;
 file>>k;
 while (file>>l)
 {
 m=0;
 for (i=0;i<strlen(k);i++)
 {if (k[i]!=l[i])
 m++;
 }
 cout<<"\nРасстояние Хемминга для слов "<<k<<" и "<<l<<" равно "<<m;
 strcpy(k,l);
 }
 file.close();
 getch();
 clrscr();
 //3
 cout<<"\t\t\t\tЗадание 3\n\n";
 char pr[]="LOOLLOOLLOO";
 char y[100];
 cout<<"Нужно найти производную слова: "<<pr<<"\n\n";
 for (i=0;i<strlen(pr);i++)
 {if (pr[i]==pr[i-1]) y[i]='O';
 else y[i]='L';}
 int n=i;
 cout<<"Производной является:";
 for (i=0;i<n;i++)
 cout<<y[i];
 getch();}
Если Вам не сложно, помогите, пожалуйста, разобраться с этим. Раскомментируйте, пожалуйста, программки.
Заранее большое спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.08.2011, 18:26     "Теория вероятности Шейтона" и "Кодирование/дикодирование информации" (C++)
Посмотрите здесь:

C++ "cin","cout" на "printf","scanf"
Создайте вектор, хранящий десять строковых значений "zero", "one", ..., "nine" C++
Что означают команды "fun", "my_max", "my_min" в C++? C++
Строка: заменить первую "о" на "а", удалив остальные "о" C++
C++ Дана точка на плоскости с координатами (х, у). Составить программу, которая выдает одно из сообщений "Да", "Нет", "На
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
31.08.2011, 18:38     "Теория вероятности Шейтона" и "Кодирование/дикодирование информации" (C++) #2
Цитата Сообщение от Anna Rozhkova Посмотреть сообщение
goto w;} } } } } } }
код нечитабелен ибо все "слиплось", а вы еще комментарии за так хотите
schdub
 Аватар для schdub
2902 / 1246 / 222
Регистрация: 19.01.2009
Сообщений: 3,211
Завершенные тесты: 1
31.08.2011, 18:59     "Теория вероятности Шейтона" и "Кодирование/дикодирование информации" (C++) #3
Цитата Сообщение от Anna Rozhkova Посмотреть сообщение
Составить программу на языке C/С++ наличия букв русского алфавита в тексте, записанном в файл
Цитата Сообщение от Anna Rozhkova Посмотреть сообщение
C++
1
char alf[26]="abcdefghijklmnopqrstuvwxyz";
Как это согласуется? Что в интернетах ничего лучше не нашлось?
grizlik78
31.08.2011, 20:32     "Теория вероятности Шейтона" и "Кодирование/дикодирование информации" (C++)
  #4

Не по теме:

Цитата Сообщение от Anna Rozhkova Посмотреть сообщение
"Теория вероятности Шейтона"
Теория Шайтана, чего уж там. Ага. Встречу Шайтана на улице, или не встречу.

Yandex
Объявления
31.08.2011, 20:32     "Теория вероятности Шейтона" и "Кодирование/дикодирование информации" (C++)
Ответ Создать тему
Опции темы

Текущее время: 05:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru