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

Генерация ПСП - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Движение объекта, управление стрелками. Перестает работать при нажатии любой клавиши http://www.cyberforum.ru/cpp-beginners/thread32438.html
Здравствуйте. Пишу игру в танчики. Borland C++ 3.1 1. Сейчас реализовал само движение объекта с помощью стрелок. Проблема в том, что когда я жму на одну из клавиш управления (влево например),...
C++ Игра "Угадай число" Пожайлуста, решите задачу на С++ с условием:написать программу, которая "задумывает" число в диапазоне от 1 до 10 и предлагает пользователю угадать число за 5 попыток. Ниже приведен рекомендуемый вид... http://www.cyberforum.ru/cpp-beginners/thread32433.html
C++ Не могу посчитать единички в массиве
Пожалуйста, помогите посчитать сколько раз подряд появляются единички в массиве, в котором только 1 и 0. Например: 1 1 1 0 0 1 1 0 1 1 1 0 0 1 1. Мне нужно чтобы было посчитано: 2 раза по 3 и 2 раза...
Совместное использование классов C++
Здравствуйте, возник такой вопрос, как следует писать код, чтобы 2 не зависимых класса могли использовать друг друга? Вот к примеру код #include <iostream.h> #include "2.h" #include "1.h" ...
C++ Бинарные файлы.. http://www.cyberforum.ru/cpp-beginners/thread32411.html
Доброго времени суток, господа! Возникла проблемка с открытием бинарного файла: char stroka; fstream bin_file; while (1) { cout << "Binarnie zapisi 1.0\nVvedi adress...
C++ Структуры(подскажите, что не правильно). Сведения об экзамене содержат следующие данные: дисциплину (программирование, вычислительная техника, информатика), дату сдачи экзамена (год, месяц, день), сведения о студенте (факультет, курс,... подробнее

Показать сообщение отдельно
S.l.a.y.e.R
0 / 0 / 0
Регистрация: 02.05.2009
Сообщений: 10

Генерация ПСП - C++

02.05.2009, 21:56. Просмотров 805. Ответов 4
Метки (Все метки)

Пожалуста, помогите. Задача состоит в том чтобы написать на С++ генератор псевдослучайных последовательностей по формуле:
Y[i+1]=F*Y[i],
где F - матрица(любая невырожденная), Y - вектора.
Все вычисления должны быть по модулю 5 (элементы матрицы и векторов соответственно тоже - 0 1 2 3 4 ).
Нужно написать программу, которая реализует это умножение, причем циклическое, т.е. вектор-результат еще раз умножится на ту же матрицу и получится следующий вектор и т. д. Также нужно чтобы вычислялся период т.е. когда вектора-результаты начнут повторяться. И еще прорамма должна позволять выводить результат задаваемого умножения т.е. например результат после 15-го умножения (1 результат) или результат с 10-го до 16-го умножения (7 результатов).
Я пока только написал достаточно дилетантскую программу, которая только считает результат 1-го умножения. Вот она:

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
130
131
132
133
134
135
136
137
138
139
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
 
int main(void) {
int c1;
int i, j, k;
randomize();
printf("vvedite rang matrici(2, 3 ili 4) - n: \n");
scanf("%d",&c1);
    switch(c1) {
 
case 2:
int S2=2;
int A2[2][2];
int B2[2][1];
int C2[2][1];
for(j=0; j<S2; j++){
for(k=0; k<1; k++){
B2[j][k]=random(5);}}
 
for(i=0; i<S2; i++){
for(j=0; j<S2; j++){
A2[i][j]=random(5);}}
printf("matica F: \n");
for(i=0; i<S2; i++){
for(j=0; j<S2; j++){
printf("%3d ",A2[i][j]);}
   printf("\n");
   printf("\n");}
 
    printf("\n");
printf("vector Y[i]: \n");
for(j=0; j<S2; j++){
for(k=0; k<1; k++){
printf("%3d ",B2[j][k]);}
   printf("\n");
   printf("\n");}
 
   printf("\n");
 
for(i=0; i<S2; i++){
for(k=0; k<1; k++){
C2[i][k]=0;
for(j=0; j<S2; j++){
C2[i][k]=(C2[i][j]+(A2[i][j]*B2[j][k])%5)%5;}}}
printf("vector Y[i+1]=F*Y[i]: \n");
for(i=0; i<S2; i++){
for(k=0; k<1; k++){
printf("%3d ",C2[i][k]);}
printf("\n");
printf("\n");}
break;
 
case 3:
int S3=3;
int A3[3][3];
int B3[3][1];
int C3[3][1];
for(j=0; j<S3; j++){
for(k=0; k<1; k++){
B3[j][k]=random(5);}}
 
for(i=0; i<S3; i++){
for(j=0; j<S3; j++){
A3[i][j]=random(5);}}
printf("matica F: \n");
for(i=0; i<S3; i++){
for(j=0; j<S3; j++){
printf("%3d ",A3[i][j]);}
   printf("\n");
   printf("\n");}
 
    printf("\n");
printf("vector Y[i]: \n");
for(j=0; j<S3; j++){
for(k=0; k<1; k++){
printf("%3d ",B3[j][k]);}
   printf("\n");
   printf("\n");}
 
   printf("\n");
 
for(i=0; i<S3; i++){
for(k=0; k<1; k++){
C3[i][k]=0;
for(j=0; j<S3; j++){
C3[i][k]=(C3[i][j]+(A3[i][j]*B3[j][k])%5)%5;}}}
printf("vector Y[i+1]=F*Y[i]: \n");
for(i=0; i<S3; i++){
for(k=0; k<1; k++){
printf("%3d ",C3[i][k]);}
printf("\n");
printf("\n");}
break;
    
case 4:
int S4=4;
int A4[4][4];
int B4[4][1];
int C4[4][1];
for(j=0; j<S4; j++){
for(k=0; k<1; k++){
B4[j][k]=random(5);}}
 
for(i=0; i<S4; i++){
for(j=0; j<S4; j++){
A4[i][j]=random(5);}}
printf("matica F: \n");
for(i=0; i<S4; i++){
for(j=0; j<S4; j++){
printf("%3d ",A4[i][j]);}
   printf("\n");
   printf("\n");}
 
    printf("\n");
printf("vector Y[i]: \n");
for(j=0; j<S4; j++){
for(k=0; k<1; k++){
printf("%3d ",B4[j][k]);}
   printf("\n");
   printf("\n");}
 
   printf("\n");
 
for(i=0; i<S4; i++){
for(k=0; k<1; k++){
C4[i][k]=0;
for(j=0; j<S4; j++){
C4[i][k]=(C4[i][j]+(A4[i][j]*B4[j][k])%5)%5;}}}
printf("vector Y[i+1]=F*Y[i]: \n");
for(i=0; i<S4; i++){
for(k=0; k<1; k++){
printf("%3d ",C4[i][k]);}
printf("\n");
printf("\n");}
break;
    //return 0;
}   return 0;}
Программа достаточно кривая, но она у меня работает. Я не знаю как задать чтоб умножало дальше и выводило только требуемые результаты(задаются с клавиатуры по запросу программы). Ранг матрицы - 2х2, 3х3, 4х4(также задаётся с клавиатуры по запросу программы). Больше не нужно.
Буду рад любой помощи. Заранее спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru