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

Генератор "старт-стоп"_реализация В С++, проверьте правильность написания - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
Игорь_777
0 / 0 / 0
Регистрация: 26.09.2010
Сообщений: 21
11.03.2013, 00:59     Генератор "старт-стоп"_реализация В С++, проверьте правильность написания #1
Доброго времени суток. Можете проверить правильность работы программы для данного задания. Заранее огромное спасибо!
программа для чередующегося генератора «стоп-пошел», псевдослучайной последовательности, с генерированной, в последовательность равную периоду генератора.
значения LFSR:
(7,1,0);
(23,5,0);
(17,6,0).



Листинг:
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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#include<iostream.h>
#include<fstream.h>
#include<conio.h>
#include<cstdlib.h>
#include<time.h>
using namespace std;
 
int LFSR_1(int*A,int n); //прототип функции, описывающей 1-ый ЛРСР(передается начальный массив и его размер)
int LFSR_2(int*A,int n); //прототип функции, описывающей 2-ый ЛРСР
int LFSR_3(int*A,int n); //прототип функции, описывающей 3-ый ЛРСР
void main()
{
//начальные регистры/массивы и их размерность
srand(time(0)); // Инициализируем генератор текущим временем.
const int n=22;
const int m=8;
const int c=10;
 
int A[n];
for (int i=0; i<n; i++) 
{ A[i] = rand()%2; }
 
int B[m];
for (int i=0; i<m; i++) 
{ B[i] = rand()%2; }
 
int C[c];
for (int i=0; i<c; i++) 
{ C[i] = rand()%2; }
 
//Выведем предварительно сгенерированные последовательности массивов
cout << "Ishodnue registri: \nMassiv A[" << n <<"] = {";
for (int i=0; i<n; i++) 
{ cout << A[i]; }
cout << "}\n";
 
cout << "Massiv B [" << m <<"] = {";
for (int i=0; i<m
; i++) 
{ cout << B[i]; }
cout << "}\n";
 
cout << "Massiv C [" << c <<"] = {";
for (int i=0; i<c; i++) 
{ cout << C[i]; }
cout << "}\n \n";
 
 
double Q;//переменная, принимающая значение, равное размеру последовательности в Мб
cout<<"Vvedi jelaemuyj razmer v MB? = ";
cin>>Q;
//создание потоков файлового вывода
ofstream fout;
ofstream fout;
//файлы для записи выходной последовательности
const char * Ofile="rand.dat";
const char * Ofile_2="text.txt";
unsigned char k, z;
//открытие потоков файлового ввода/вывода
fout.open (Ofile, ios::out | ios::binary);
fout.open (Ofile_2, ios::out);
for (int i=0; i< (1024*1024)*Q; i++)
{
k=0;
for (int i=7; i>=0; i--)
{
int z1=LFSR_1(B,m); //значение на выходе 1-го ЛРСР
int z2=LFSR_2(C,c); //значение на выходе 2-го ЛРСР
int z3=LFSR_3(A,n); //значение на выходе 3-го ЛРСР
z=((z1&&z2) ^ ((!z1&&z3))); //значение на выходе генератора
Fout << int(z); //запись значения в текстовый файл
//преобразование в биты
if(z==1)
k|=1<<i;
}
fout.write((char*)&k, sizeof(k)); //запись в бинарный файл
}
//закрытие файловых потоков вывода
fout.close();
fout.close();
cout<<endl<<"Vupolneno!"<<endl<<"Rezultat zapisan v "<<Ofile<<" I "<<Ofile_2 << "\n";
 
}
 
//функция, описывающая работу 1-го ЛРСР
int LFSR_1 (int*A, int n) 
{
int z;
//сложение по модулю два битов, находящихся под номерами 7,1,0
int ShiftRegister = (A [n-7-1] ^A [n-1-1] ^A [n-1]);
z=A[n-1];//значение подаваемое на выход регистра
//смещение всех битов регистра на один вправо
for (int i= (n-1); i>0; i--)
{
A[i]=A[i-1];
}
//помещение полученного бита на нулевую последовательность
A[0]=ShiftRegister;
return z;
}
 
 
//функция, описывающая работу 2-го ЛРСР
int LFSR_2 (int*A, int n) 
{
//сложение по модулю два битов, находящихся под номерами 23,5,0
int ShiftRegister = (A [n-23-1] ^A [n-5-1] ^A [n-1]);
z=A [n-1];
for (int i= (n-1); i>0;i--)
{
A[i] =A [i-1];
}
A [0] =ShiftRegister;
return z;
}
 
//функция, описывающая работу 3-го ЛРСР
int LFSR_3 (int*A, int n) 
{
int z;
//сложение по модулю два битов, находящихся под номерами 17,6,0
int ShiftRegister = (A [n-17-1] ^A [n-6-1] ^A [n-1]);
z=A [n-1];
for (int i= (n-1); i>0; i--)
{
A[i] =A [i-1];
}
A [0] =ShiftRegister;
return z;
Миниатюры
Генератор "старт-стоп"_реализация В С++, проверьте правильность написания  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.03.2013, 00:59     Генератор "старт-стоп"_реализация В С++, проверьте правильность написания
Посмотрите здесь:

Проверьте, не является ли слово "кас" корнем слова без приставки C++
C++ Проверьте правильность написания кода и коментарии
C++ Разработать класс для понятия "Генератор шума"
C++ Threads или как запрограммировать кнопку Старт и Стоп C++
C++ проверьте на правильность
Проверьте правильность C++
C++ Проверить правильность написания сочетаний «жи», «ши», «ча», «ща»
C++ проверьте на правильность
Проверьте код,"численные методы,метод трапеций" C++
C++ Проверьте код программы (тема "цикл do while в C++")
C++ Проверьте, пожалуйста, код (выдает ошибку "Не удается найти указанный файл")
Проверить правильность написания чисел в тексте C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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