Форум программистов, компьютерный форум, киберфорум
Алгоритмы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.59/37: Рейтинг темы: голосов - 37, средняя оценка - 4.59
 Аватар для kirill29
2098 / 1263 / 173
Регистрация: 01.02.2009
Сообщений: 2,842

Предмет "Надежность информационных систем". Нужно ваше мнение.

12.09.2009, 19:36. Показов 7924. Ответов 66
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребята, выполняю курсовую работу по надежности информационных систем. Дана схема системы с 20 элементами (см. рисунок). Необходимо выделить группы элементов, отказ которых приведет к отказу системы. У меня получилось 48 групп. Интересно, что выйдет у вас?

PS: Необходимо для собственной проверки.

PPS: Возможно запостил не в тот раздел. Модераторы, если что, поправьте пожалуйста.
Миниатюры
Предмет "Надежность информационных систем". Нужно ваше мнение.  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.09.2009, 19:36
Ответы с готовыми решениями:

Надежность информационных систем
Ребята, помогите с задачкой. Нужно найти вероятности безотказной работы системы p1,p2,p3,p4 любым методом. Задача по дисциплине...

Надежность информационных систем
Помогите пожалуйста с решением задания. Для каждого из трёх последовательно соединённых элементов известен закон распределения времени...

Надежность информационных систем
(Расчет характеристик надежности невосстанавливаемых резервируемых изделий с двумя видами отказов) Для повышения надежности схемы...

66
Пробующий
 Аватар для galileopro
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
14.09.2009, 22:52
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от odip Посмотреть сообщение
Подробнее - какую именно структуру нельзя представить в виде предиката ?
Булева функция от переменных SW1, ..., SW20 - это предикат ?
Да. И я его написал правильно, поскольку на всех вариантах из Вашего предыдущего сообщения он даёт false (то-есть данные не передаются). Вот теперь я хочу сделать перебор и каждый раз подставлять эти значения в предикат.

Добавлено через 5 минут
Цитата Сообщение от outoftime Посмотреть сообщение
Я тут поразмышлял, для меня более понятный следующий алгоритм: создаем масив 20х20 елементы масива - булевые значения. Если елемент со значением тру, значит сервер, к примеру, 1 имеет прямой контакт с сервером 2 если индексы масива 1, 2 или 2, 1 задав таким образом масив можно сказать что задача сводится к задаче поиска пути, где ити можно только вверх-вниз, вправо-влево, при условии что на пути есть сервер, к которому есть прямой доступ, если при опреденленном варианте нерабочих серверов пути от 0 до 21 серверов (елементов масива) нет - вывести на экран последовательность нерабочих серверов..
В условиях даной задачи реализируя полный перебор можно спокойно вложится в минуту (работы алгоритма)..
Я тоже над таким думал, там получается рекурсия и она выполнится меньше, чем за минуту, однако надо грамотно написать.
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
14.09.2009, 23:00
она выполнится меньше, чем за минуту
Моя программа считает порядка секунды
0
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,361
Записей в блоге: 5
14.09.2009, 23:01
Цитата Сообщение от galileopro Посмотреть сообщение
Я тоже над таким думал, там получается рекурсия и она выполнится меньше, чем за минуту
Что-то я сомневаюсь, что при даном количистве переменных не вылезет Stake oferflow (не уверен что правильно написал, но суть ясна..)
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
14.09.2009, 23:04
Да. И я его написал правильно, поскольку на всех вариантах из Вашего предыдущего сообщения он даёт false (то-есть данные не передаются).
Надо еще проверить что на всех остальных 2**20-25 вариантах функция дает те же значения что и моя функция.
Тогда скорее всего мы оба правильно написали, хотя и разными способами
0
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,361
Записей в блоге: 5
14.09.2009, 23:05
Моя программа считает порядка секунды
25 вариантов, что значит недоработку, хотя и не понимаю в чем..
0
Пробующий
 Аватар для galileopro
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
14.09.2009, 23:25
Цитата Сообщение от odip Посмотреть сообщение
Моя программа считает порядка секунды
Я не уверен, но эта рекурсия тоже будет считать меньше секунды. Такие методы применяются, например при поиске пути в лабиринте без применения графов)
Вообще раз Вы уже написали программу, то я думаю дальнейшее обсуждение можно свести к такому: Сможет ли кто-то найти вариант, отличный от этих 25.
Если никто не сможет, то уважаемый
kirill29
ошибался и вариантов 25.
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
14.09.2009, 23:32
Я сравнил функцию P() и мою функцию на всех значениях (2**20 штук).
diff_count=33446
Это кол-во различий между ними.
Так что функция P() считает неправильно.
Вот некоторые варианты, дающие разный результат.
Code
1
2
03828c 3,4,8,10,16,17,18,                                     isw=1 pp=0
0a8110 5,9,16,18,20,                                          isw=0 pp=1
0
Пробующий
 Аватар для galileopro
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
14.09.2009, 23:35
Цитата Сообщение от outoftime Посмотреть сообщение
Что-то я сомневаюсь, что при даном количистве переменных не вылезет Stake oferflow (не уверен что правильно написал, но суть ясна..)
Нет там врядли будет переполнение памяти, даже статической. При правильной рекурсии тупиковые пути очень быстро отсекаются. И там остаётся не такое и сложное ветвление.

Добавлено через 1 минуту
Цитата Сообщение от odip Посмотреть сообщение
Я сравнил функцию P() и мою функцию на всех значениях (2**20 штук).
diff_count=33446
Это кол-во различий между ними.
Так что функция P() считает неправильно.
Вот некоторые варианты, дающие разный результат.
Код:
03828c 3,4,8,10,16,17,18, isw=1 pp=0
0a8110 5,9,16,18,20, isw=0 pp=1
А это что за результат: моей ф-и или Вашей? Или их сравнение?
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
14.09.2009, 23:43
Код программы сравнения

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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
/* Thread 50620 */
 
#include <stdio.h>
 
 
/************************************************/
#define SW_SIZE                         20
#define INDEX_SIZE                      (1<<SW_SIZE)
 
#define STATE_UNKNOWN           0
#define STATE_WORK                      1
#define STATE_BLOCK                     2
#define STATE_BLOCK_MIN         3
#define STATE_BLOCK_DERIV       4
 
 
/************************************************/
int is_schema_work( unsigned state );
int predicat_p( unsigned sw );
void compare_func( void );
 
 
/************************************************/
static unsigned mask[]= {
        0x00000001, 0x00000002, 0x00000004, 0x00000008,
        0x00000010, 0x00000020, 0x00000040, 0x00000080,
        0x00000100, 0x00000200, 0x00000400, 0x00000800,
        0x00001000, 0x00002000, 0x00004000, 0x00008000,
        0x00010000, 0x00020000, 0x00040000, 0x00080000,
        0x00100000, 0x00200000, 0x00400000, 0x00800000,
        0x01000000, 0x02000000, 0x04000000, 0x08000000,
        0x10000000, 0x20000000, 0x40000000, 0x80000000
};
 
 
/************************************************/
int main( void ) {
 
compare_func();
 
return 0;
 
} /* main() */
 
 
#define SW(argi)                ((state & mask[(argi)-1])!=0)
#define PFINAL(argi)    { p[argi]= 2; }
#define P_IS_ON(argi)   ( p[argi] == 1 )
#define PON(argi)               { if ( p[argi]==0 ) { p[argi]= 1; count1++; } }
 
 
/************************************************/
int is_schema_work( unsigned state ) {
 
int count1;
int p[10]= { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
 
 
for ( ; ; ) {
        count1= 0;
        if ( P_IS_ON(0) ) {
                PFINAL(0);
                if ( SW(1) || SW(6) || SW(11) ) { PON(1); }
                if ( SW(16) ) { PON(2); }
        }
        if ( P_IS_ON(1) ) {
                PFINAL(1);
                if ( SW(1) || SW(6) || SW(11) ) { PON(0); }
                if ( SW(2) || SW(7) ) { PON(3); }
        }
        if ( P_IS_ON(2) ) {
                PFINAL(2);
                if ( SW(16) ) { PON(0); }
                if ( SW(12) || SW(17) ) { PON(4); }
        }
        if ( P_IS_ON(3) ) {
                PFINAL(3);
                if ( SW(2) || SW(7) ) { PON(1); }
                if ( SW(3) ) { PON(5); }
                if ( SW(8) || SW(13) ) { PON(6); }
        }
        if ( P_IS_ON(4) ) {
                PFINAL(4);
                if ( SW(12) || SW(17) ) { PON(2); }
                if ( SW(18) ) { PON(6); }
        }
        if ( P_IS_ON(5) ) {
                PFINAL(5);
                if ( SW(3) ) { PON(3); }
                if ( SW(4) ) { PON(7); }
        }
        if ( P_IS_ON(6) ) {
                PFINAL(6);
                if ( SW(8) || SW(13) ) { PON(3); }
                if ( SW(9) || SW(14) || SW(19) ) { PON(8); }
                if ( SW(18) ) { PON(4); }
        }
        if ( P_IS_ON(7) ) {
                PFINAL(7);
                if ( SW(4) ) { PON(5); }
                if ( SW(5) || SW(10) || SW(15) ) { PON(9); }
        }
        if ( P_IS_ON(8) ) {
                PFINAL(8);
                if ( SW(9) || SW(14) || SW(19) ) { PON(6); }
                if ( SW(20) ) { PON(9); }
        }
        if ( P_IS_ON(9) ) {
                PFINAL(9);
                if ( SW(5) || SW(10) || SW(15) ) { PON(7); }
                if ( SW(20) ) { PON(8); }
                break;
        }
        if ( count1 == 0 ) { break; }
}
 
return (p[9] != 0);
 
} /* is_schema_work() */
 
 
/************************************************/
int predicat_p( unsigned state ) {
 
int retcode;
int p[10];
 
 
p[1]= SW(1) || SW(6);
p[2]= SW(2) || SW(7);
p[3]= SW(8) || SW(13);
p[4]= SW(9) || SW(14) || SW(19);
p[5]= SW(17) || SW(12);
p[6]= SW(5) || SW(10) || SW(15);
 
p[7]= (p[2] && p[3] && p[4] && SW(20)) || (p[2] && SW(3) && SW(4) && p[6]);
p[8]= SW(16) && SW(5) && SW(18) && p[4] && SW(20);
p[9]= p[1] && p[7];
 
retcode= p[8] || (SW(11) && p[7]) || p[9];
 
return retcode;
 
} /* predicat_p() */
 
 
/************************************************/
void compare_func( void ) {
 
int ind, i, len;
int isw, pp, diff_count;
char buf[80], *p;
 
 
diff_count= 0;
for ( ind= 0; ind<INDEX_SIZE; ind++ ) {
    isw= (is_schema_work( ind ) ? 1 : 0);
    pp= (predicat_p( ind ) ? 1 : 0);
    if ( isw == pp ) { continue; }
 
    diff_count++;
    p= buf;
    for ( i= 0; i<SW_SIZE; i++ ) {
        if ( (ind&mask[i]) != 0 ) {
            len= snprintf( p, buf+sizeof(buf)-p, "%d,", i+1 );
            p+= len;
        }
    }
    *p= '\0';
    printf( "%06x %-54s isw=%d pp=%d\n", ind, buf, isw, pp );
}
 
printf( "diff_count=%d\n", diff_count );
 
} /* compare_func() */


Добавлено через 2 минуты
0a8110 5,9,16,18,20, isw=0 pp=1
0a8110 - в 16-ричном виде установленные переключатели.
5,9,16,18,20, - теже переключатели в более понятном виде.
isw=0 - моя функция is_schema_work() вернула 0
pp=1 - предикат P() вернул 1
Функцию P() переписал на C - код выше есть.

Добавлено через 1 минуту
Проверка вручную этих двух вариантов дает ожидаемый мной результат - is_schema_work() работает верно.
Остальные 33000 вариантов мне проверять лень

Добавлено через 1 минуту
Если kirill29 выложит свои 48 вариантов, то я буду только рад чтобы сравнить их с моими 25-ю.
0
Пробующий
 Аватар для galileopro
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
14.09.2009, 23:50
Такой код говорит что цепь работает
Delphi
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
program Project2;
{$APPTYPE CONSOLE}
uses
  SysUtils;
 
type  mass=array[1..20]of boolean;
 
function P(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20:boolean):boolean;
var p1,p2,p3,p4,p5,p6,p7,p8,p9:boolean;
begin
p1:=a1 or a6;
p2:=a2 or a7;
p3:=a8 or a13;
p4:=a9 or a14 or a19;
p5:=a17 or a12;
p6:=a5 or a10 or a15;
 
P7:=(p2 and p3 and p4 and a20)or(p2 and a3 and a4 and p6);
P8:=a16 and p5 and a18 and p4 and a20;
p9:=p1 and p7;
 
P:=p8 or (a11 and p7) or p9;
end;
 
var a:mass;
    i:integer;
begin
 
   for i:=1 to 20 do a[i]:=true;//ñíà÷àëà âñå åëåìåíòû ðàáî÷èå
   a[5]:=false;
   a[9]:=false;
   a[16]:=false;
   a[18]:=false;
   a[20]:=false;
 
if P(a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],a[10],a[11],a[12],a[13],a[14],a[15],a[16],a[17],a[18],a[19],a[20])then write('Rabotaet')
                                                                                                                    else write('Ne Rabotaet');
readln;
end.
Это в ответ на
Цитата Сообщение от odip Посмотреть сообщение
03828c 3,4,8,10,16,17,18,
Добавлено через 2 минуты
Я могу либо скрин выложить, либо скопируйте этот код в дельфийскую консоль и запустите(я так подробно говорю, так как предполагаю, что Делфи - не Ваш любимый язык)) Уж не обижайтесь)
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
15.09.2009, 00:01
Pascal
1
2
3
4
5
6
for i:=1 to 20 do a[i]:=true;//сначала все елементы рабочие
   a[5]:=false;
   a[9]:=false;
   a[16]:=false;
   a[18]:=false;
   a[20]:=false;
Code
1
0a8110 5,9,16,18,20, isw=0 pp=1
В данном случае 5,9,16,18,20 обозначает что 5,9,16,18,20 переключатели ВКЛЮЧЕНЫ, а остальные ВЫКЛЮЧЕНЫ.
0
Пробующий
 Аватар для galileopro
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
15.09.2009, 00:05
Delphi
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
program Project2;
{$APPTYPE CONSOLE}
uses
  SysUtils;
 
type  mass=array[1..20]of boolean;
 
function P(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20:boolean):boolean;
var p1,p2,p3,p4,p5,p6,p7,p8,p9:boolean;
begin
p1:=a1 or a6;
p2:=a2 or a7;
p3:=a8 or a13;
p4:=a9 or a14 or a19;
p5:=a17 or a12;
p6:=a5 or a10 or a15;
 
P7:=(p2 and p3 and p4 and a20)or(p2 and a3 and a4 and p6);
P8:=a16 and p5 and a18 and p4 and a20;
p9:=p1 and p7;
 
P:=p8 or (a11 and p7) or p9;
end;
 
var a:mass;
    i:integer;
begin
 
   for i:=1 to 20 do a[i]:=false;//сначала все елементы НЕ рабочие
   a[5]:=true;
   a[9]:=true;
   a[16]:=true;
   a[18]:=true;
   a[20]:=true;
 
if P(a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],a[10],a[11],a[12],a[13],a[14],a[15],a[16],a[17],a[18],a[19],a[20])then write('Rabotaet')
                                                                                                                    else write('Ne Rabotaet');
readln;
end.
Говорит, что не работает, что очевидно.
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
15.09.2009, 00:15
Когда переписывал предикат в одном месте была опечатка.
Исправил ее.
Ошибок стало меньше:
diff_count=6237

Добавлено через 38 секунд
Код программы

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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
/* Thread 50620 */
 
#include <stdio.h>
 
 
/************************************************/
#define SW_SIZE                         20
#define INDEX_SIZE                      (1<<SW_SIZE)
 
 
/************************************************/
int is_schema_work( unsigned state );
int predicat_p( unsigned sw );
void compare_func( void );
 
 
/************************************************/
static unsigned mask[]= {
        0x00000001, 0x00000002, 0x00000004, 0x00000008,
        0x00000010, 0x00000020, 0x00000040, 0x00000080,
        0x00000100, 0x00000200, 0x00000400, 0x00000800,
        0x00001000, 0x00002000, 0x00004000, 0x00008000,
        0x00010000, 0x00020000, 0x00040000, 0x00080000,
        0x00100000, 0x00200000, 0x00400000, 0x00800000,
        0x01000000, 0x02000000, 0x04000000, 0x08000000,
        0x10000000, 0x20000000, 0x40000000, 0x80000000
};
 
 
/************************************************/
int main( void ) {
 
compare_func();
 
return 0;
 
} /* main() */
 
 
#define SW(argi)                ((state & mask[(argi)-1])!=0)
#define PFINAL(argi)    { p[argi]= 2; }
#define P_IS_ON(argi)   ( p[argi] == 1 )
#define PON(argi)               { if ( p[argi]==0 ) { p[argi]= 1; count1++; } }
 
 
/************************************************/
int is_schema_work( unsigned state ) {
 
int count1;
int p[10]= { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
 
 
for ( ; ; ) {
        count1= 0;
        if ( P_IS_ON(0) ) {
                PFINAL(0);
                if ( SW(1) || SW(6) || SW(11) ) { PON(1); }
                if ( SW(16) ) { PON(2); }
        }
        if ( P_IS_ON(1) ) {
                PFINAL(1);
                if ( SW(1) || SW(6) || SW(11) ) { PON(0); }
                if ( SW(2) || SW(7) ) { PON(3); }
        }
        if ( P_IS_ON(2) ) {
                PFINAL(2);
                if ( SW(16) ) { PON(0); }
                if ( SW(12) || SW(17) ) { PON(4); }
        }
        if ( P_IS_ON(3) ) {
                PFINAL(3);
                if ( SW(2) || SW(7) ) { PON(1); }
                if ( SW(3) ) { PON(5); }
                if ( SW(8) || SW(13) ) { PON(6); }
        }
        if ( P_IS_ON(4) ) {
                PFINAL(4);
                if ( SW(12) || SW(17) ) { PON(2); }
                if ( SW(18) ) { PON(6); }
        }
        if ( P_IS_ON(5) ) {
                PFINAL(5);
                if ( SW(3) ) { PON(3); }
                if ( SW(4) ) { PON(7); }
        }
        if ( P_IS_ON(6) ) {
                PFINAL(6);
                if ( SW(8) || SW(13) ) { PON(3); }
                if ( SW(9) || SW(14) || SW(19) ) { PON(8); }
                if ( SW(18) ) { PON(4); }
        }
        if ( P_IS_ON(7) ) {
                PFINAL(7);
                if ( SW(4) ) { PON(5); }
                if ( SW(5) || SW(10) || SW(15) ) { PON(9); }
        }
        if ( P_IS_ON(8) ) {
                PFINAL(8);
                if ( SW(9) || SW(14) || SW(19) ) { PON(6); }
                if ( SW(20) ) { PON(9); }
        }
        if ( P_IS_ON(9) ) {
                PFINAL(9);
                if ( SW(5) || SW(10) || SW(15) ) { PON(7); }
                if ( SW(20) ) { PON(8); }
                break;
        }
        if ( count1 == 0 ) { break; }
}
 
return (p[9] != 0);
 
} /* is_schema_work() */
 
 
/************************************************/
int predicat_p( unsigned state ) {
 
int retcode;
int p[10]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
 
 
p[1]= SW(1) || SW(6);
p[2]= SW(2) || SW(7);
p[3]= SW(8) || SW(13);
p[4]= SW(9) || SW(14) || SW(19);
p[5]= SW(17) || SW(12);
p[6]= SW(5) || SW(10) || SW(15);
 
p[7]= (p[2] && p[3] && p[4] && SW(20)) || (p[2] && SW(3) && SW(4) && p[6]);
p[8]= SW(16) && p[5] && SW(18) && p[4] && SW(20);
p[9]= p[1] && p[7];
 
retcode= p[8] || (SW(11) && p[7]) || p[9];
 
return retcode;
 
} /* predicat_p() */
 
 
/************************************************/
void compare_func( void ) {
 
int ind, i, len;
int isw, pp, diff_count;
char buf[80], *p;
 
 
diff_count= 0;
for ( ind= 0; ind<INDEX_SIZE; ind++ ) {
    isw= (is_schema_work( ind ) ? 1 : 0);
    pp= (predicat_p( ind ) ? 1 : 0);
    if ( isw == pp ) { continue; }
 
    diff_count++;
    p= buf;
    for ( i= 0; i<SW_SIZE; i++ ) {
        if ( (ind&mask[i]) != 0 ) {
            len= snprintf( p, buf+sizeof(buf)-p, "%d,", i+1 );
            p+= len;
        }
    }
    *p= '\0';
    printf( "%06x %-54s isw=%d pp=%d\n", ind, buf, isw, pp );
}
 
printf( "diff_count=%d\n", diff_count );
 
} /* compare_func() */


Добавлено через 1 минуту
Code
1
2
3
02889c 3,4,5,8,12,16,18,                                      isw=1 pp=0
02889d 1,3,4,5,8,12,16,18,                                    isw=1 pp=0
02889e 2,3,4,5,8,12,16,18,                                    isw=1 pp=0
Добавлено через 48 секунд
Остались варианты только такие: isw=1 pp=0
То есть моя функция говорит, что схема работает, а твоя говорит что нет.
0
Пробующий
 Аватар для galileopro
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
15.09.2009, 00:19
02889c 3,4,5,8,12,16,18,
Странно, но судя по картинке этих елементов недостаточно для работы схемы
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
15.09.2009, 00:23
С конца
Code
1
2
3
0bdead 1,3,4,6,8,10,11,12,13,15,16,17,18,20,                  isw=1 pp=0
0bdebc 3,4,5,6,8,10,11,12,13,15,16,17,18,20,                  isw=1 pp=0
0bdebd 1,3,4,5,6,8,10,11,12,13,15,16,17,18,20,                isw=1 pp=0
Добавлено через 2 минуты
02889c 3,4,5,8,12,16,18,
Странно, но судя по картинке этих елементов недостаточно для работы схемы
Путь такой: 16 12 18 8 3 4 5

Я знаю почему у тебя не работает.
Ты не полностью учитываешь обратные ходы.
А у меня если посмотришь в код - там я кручу цикл и учитываю обратные ходы.
1
Пробующий
 Аватар для galileopro
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
15.09.2009, 00:25
Убедил. Я спать хочу, но до завтра исправлю предикат)
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
15.09.2009, 00:28
На самом деле понятно, что раз это булева функция, то у нее есть каноническая форма.
А каноническая форма - это только AND, OR, NOT и переменные A1-A20.
То есть записать ее в виде предиката можно.
Но вот какая будет длина этого предиката - может там 2**20 OR-ов будет
0
Пробующий
 Аватар для galileopro
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
15.09.2009, 00:44
Там в обратную сторону добавить и наверно на этом проблема исчерпается. Но такой подход неприменим для большего к-ва элементов
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
15.09.2009, 00:48
Но такой подход неприменим для большего к-ва элементов
Не понял - почему ?

Кстати - кто тебе мешает передавать массив вместо длинного списка ?
Я так вообще unsigned передаю
0
Пробующий
 Аватар для galileopro
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
15.09.2009, 00:54
Цитата Сообщение от odip Посмотреть сообщение
Не понял - почему ?
Будет дохрена END, OR)

Добавлено через 32 секунды
Цитата Сообщение от odip Посмотреть сообщение
Кстати - кто тебе мешает передавать массив вместо длинного списка ?
Спешил)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.09.2009, 00:54

Нужно сделать дубликат жесткого диска - нужно ваше мнение!
Здравствуйте! Ситуация такая... Я уже довольно давно успешно юзаю жесткий диск и на нем у меня установлена графическая Убунта с...

Нужно ваше мнение
Кто-нибудь оцените сайт, чего не хватает подскажите, какие недочёты по дизайну, кто то точно лучше нашего разбирается :-)

Нужно ваше мнение
Здравствуйте! Оцените, пожалуйста, дизайн и функциональность сайта - бесплатная система для трекинга рабочего времени - Anuko Time...

Нужно ваше мнение..
Всем добрый вечер. Появилась на днях следующая проблема. У меня перестали индексировать сайт поисковики, я не могу найти причины кроме...

Нужно Ваше мнение
Доброе утро!!! С недавнего времени решил заняться написанием сайта. В СЕО я полный НУБ. ЧИТАЮ, ЧИТАЮ, ЧИТАЮ книги и материалы по раскрутке...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru