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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
Игорь_777
0 / 0 / 0
Регистрация: 26.09.2010
Сообщений: 21
#1

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

11.03.2013, 00:59. Просмотров 1728. Ответов 0
Метки нет (Все метки)

Доброго времени суток. Можете проверить правильность работы программы для данного задания. Заранее огромное спасибо!
программа для чередующегося генератора «стоп-пошел», псевдослучайной последовательности, с генерированной, в последовательность равную периоду генератора.
значения 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;
0
Миниатюры
Генератор "старт-стоп"_реализация В С++, проверьте правильность написания  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.03.2013, 00:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Генератор "старт-стоп"_реализация В С++, проверьте правильность написания (C++):

Как сделать "Старт", "Пауза", Стоп"? - C++
Доброго времени суток, как сделать так, чтобы при нажатии на кнопку начиналось цикличное действие (рисование например) и продолжалось бы...

Проверьте правильность написания кода и коментарии - C++
Задача: Написать программу которая принимает в качестве аргумента имя файла f с русским текстом и печатает его в точности по одному...

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно" - C++
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить погоду &quot;тепло&quot;, &quot;жарко&quot;, &quot;холодно&quot;, &quot;очень холодно&quot;. Я так...

Реализовать классы "Воин", "Пехотинец", "Винтовка", "Матрос", "Кортик" (наследование) - C++
Разработать программу с использованием наследования классов, реализующую классы: − воин; − пехотинец(винтовка); − матрос(кортик). ...

C++ Threads или как запрограммировать кнопку Старт и Стоп - C++
Погуглил нечего не нашёл на эту тему..

Создать класс "Книга" с полями "название книги", "количество страниц", "год издания" - C++
Создать класс Книга поля: название книги,количество страниц,год издания методы: вычислить сколько лет книге и количество дней прошедших...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.03.2013, 00:59
Привет! Вот еще темы с ответами:

Создать класс "Вентилятор" содержащий в себе классы: "Двигатель", "Контроллер", "Пульт управления" - C++
Помогите с кодом написания задачи, не понимаю как написать классы в классе. Нужно создать класс &quot;вентилятор&quot; содержащий в себе классы:...

Создать абстрактный класс "Издание" и производные классы "Книга", "Статья", "Электронный ресурс" - C++
1. Создать абстрактный класс Издание с методами, позволяющими вывести на экран информацию об издании, а также определить является ли данное...

Определить тип данных "Запись", имеющий поля "Фамилия", "Пол", "Зарплата" - C++
определить тип данных запись имеющий поля фамилия пол зарплата. определить массив из 10 записей. в программе ввести в массив данные и...

по строкам.замените в слове сочетание "му" на "а" , а букву "ы" на "ца". очень нужно - C++
замените в слове сочетание &quot;му&quot; на &quot;а&quot; , а букву &quot;ы&quot; на &quot;ца&quot;. очень нужно Добавлено через 21 час 4 минуты неужели никто не знает...


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

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

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