Ветеран
Сообщения: 27449
Благодарности: 8087
|
Профиль
|
Отправить PM
| Цитировать
Dasgaf, не пробовали делить мысль на несколько отдельных предложений?
Цитата Dasgaf:
она совсем не запускается »
|
Запускается:
Цитата Dasgaf:
а в файле D-4.bas какие то иероглифы »
|
Обычная OEM/866 кодировка:
читать дальше »
Код:
10 CLS : KEY OFF: PRINT : PRINT : CLEAR
20 PRINT TAB(10); "ПРОГРАММА РАСЧЕТА ИНФОРМАТИВНЫХ ХАРАКТЕРИСТИК";
30 PRINT " ДИАГНОСТИЧЕСКИХ": PRINT TAB(35); "МОДЕЛЕЙ": PRINT
33 INPUT " Ваша фамилия - ", FAM$
40 PRINT TAB(23); "ВВОД ИСХОДНЫХ ДАННЫХ ПО МОДЕЛИ"
50 INPUT "Число уровней (максимум - 6) -", Z2: Z = Z2 + 1
60 DIM B3(Z), B4(Z)
70 FOR Z = 1 TO Z2: PRINT " Уровень "; Z;
80 INPUT ". Последний номер прямого параметра - ", B3(Z): NEXT Z
90 INPUT "Количество косвенных параметров (КП) - ", D2
100 INPUT "Мах.число нижележащих ПП, приходящихся на 1 ПП - ", E1
120 N1 = B3(1): N3 = B3(Z2 - 1): N2 = B3(Z2): N = N2 + 1: D = D2 + 1: Z = Z2 + 1
130 DIM B(N), B1(N3 + 1, E1 + 1), B2(N)
140 DIM S$(N), R$(D), A(D), A1(D), A2(D, Z)
150 DIM P(N3 + 1), H1(N), H(Z), V(E1 + 1), T(N), K(N), K1(N)
160 FOR N = 1 TO N2: K(N) = 1: NEXT N
165 INPUT "Режим ввода. С дисплея - 0, с дискеты - 1 - ", E5
168 IF E5 = 1 GOTO 2310 ELSE 250
170 PRINT : PRINT "ВЫБОР РЕЖИМА РАБОТЫ "
180 PRINT " 1 - исходные данные по модели "
190 PRINT " 2 - информативные хар-ки ПП. (5 - повторный вывод)"
200 PRINT " 3 - информативные хар-ки КП. (6 - повторный вывод)"
210 PRINT " 4 - алгоритм поиска дефекта. (7 - повт. вывод)"
215 INPUT " 8 - запись данных на дискету - ", E5
217 IF E5 = 8 GOTO 2260
220 INPUT "ПЕЧАТЬ ? 1 - ДА ", J: PRINT : PRINT
230 ON E5 GOTO 1980, 420, 920, 1240, 620, 1020, 1310
240 STOP
250 PRINT : PRINT TAB(15); "ВВОД ДАННЫХ ПО ДИАГНОСТИЧЕСКОЙ МОДЕЛИ"
260 FOR N = 0 TO N2: PRINT "Элемент "; N: GOSUB 1860: NEXT N
270 PRINT : PRINT "ИСПРАВЛЕНИЯ ПО МОДЕЛИ (при необходимости)"
280 INPUT " Ввести номер ПП - ", N: IF N = 0 GOTO 300
290 GOSUB 1860: GOTO 270
300 PRINT : PRINT TAB(20); "ВВОД НАЗВАНИЙ ПРЯМЫХ ПАРАМЕТРОВ"
310 AA$ = "** допустимая длина названия **"
320 FOR N = 1 TO N2: G = (N + 4) / 5
330 IF G = INT(G) THEN PRINT TAB(11); AA$
340 PRINT TAB(5); " "; N; : INPUT " ", S$(N): NEXT N
350 PRINT : PRINT TAB(20); "ВВОД НАЗВАНИЙ КОСВЕННЫХ ПАРАМЕТРОВ"
360 FOR D = 1 TO D2: G = (D + 4) / 5
370 IF G = INT(G) THEN PRINT TAB(11); AA$
380 PRINT TAB(5); " "; D; : INPUT " ", R$(D): NEXT D
390 PRINT : PRINT TAB(20); "ВВОД КРАТНОСТИ ЭЛЕМЕНТОВ"
400 INPUT "Номер элемента - ", N: IF N = 0 GOTO 170
410 INPUT " количество - ", K(N): GOTO 400
420 N4 = 0: N5 = 0: N = 1
430 C = B(N): IF C = 0 THEN K1(N) = K(N) ELSE K1(N) = K(N) * K1(C)
440 N5 = N5 + K1(N)
450 IF N > N3 THEN N4 = N4 + K1(N)
460 IF N < N2 THEN N = N + 1: GOTO 430
470 H3 = LOG(N4) / LOG(2): P1 = 1 / N4
480 N = N3
490 P = 0: FOR E = 1 TO E1: C = B1(N, E): IF C = 0 GOTO 520
500 IF C > N3 THEN P2 = P1 * K(C) ELSE P2 = P(C) * K(C)
510 P = P + P2: NEXT E
520 P(N) = P
530 IF N > 1 THEN N = N - 1: GOTO 490
540 H2 = 0: Z = 1: H(1) = 0: B4(1) = 0
550 FOR N = 1 TO N2: C = B(N): IF C = 0 THEN P2 = 1 ELSE P2 = P(C)
560 IF N > N3 THEN P = P1 ELSE P = P(N)
570 H1 = -P * LOG(P / P2) / LOG(2): H1(N) = H1
580 H2 = H2 + H1 * K1(N)
590 IF B3(Z) < N THEN Z = Z + 1: H(Z) = 0: B4(Z) = 0
600 H(Z) = H(Z) + H1 * K1(N): B4(Z) = B4(Z) + K1(N)
610 NEXT N
620 AA$ = " ОБЩИЕ ДАННЫЕ ПО ДИАГНОСТИЧЕСКОЙ МОДЕЛИ"
630 AB$ = " КОЛИЧЕСТВО ПРЯМЫХ ПАРАМЕТОВ НА НИЖНЕМ УРОВНЕ - "
640 AC$ = " ПОЛНАЯ НЕОПРЕДЕЛЕННОСТЬ СИСТЕМЫ - "
650 AD$ = " СУММАРНАЯ НЕОПРЕДЕЛЕННОСТЬ СИСТЕМЫ - "
660 AE$ = "N уровня Неопределенность Количество прямых параметров"
670 IF J = 1 GOTO 700
680 PRINT AA$: GOSUB 1950: PRINT AB$; N4: PRINT AC$; H3
690 PRINT AD$; H2: GOSUB 1950: PRINT TAB(8); AE$: GOTO 720
700 LPRINT AA$: GOSUB 1950: LPRINT AB$; N4: LPRINT AC$; H3
710 LPRINT AD$; H2: GOSUB 1950: LPRINT TAB(8); AE$
720 GOSUB 1950: FOR Z = 1 TO Z2
730 IF J = 1 GOTO 750
740 PRINT TAB(10); Z; TAB(20); H(Z); TAB(46); B4(Z): GOTO 760
750 LPRINT TAB(10); Z; TAB(20); H(Z); TAB(46); B4(Z)
760 NEXT Z: GOSUB 1950: IF J <> 1 THEN PRINT ELSE LPRINT
770 AA$ = "ИНФОРМАТИВНЫЕ ХАРАКТЕРИЛ-ВО ИНФОР-ТЬ ПОЛНОТА КОНТРОЛЯ"
780 AB$ = " ПАРАМЕТРОВ"
790 AC$ = " ПРЯМОЙ ПАРАМЕТР НЕОПРЕДЕЛЕННОСТЬ"
800 AD$ = " КОСВЕННЫЙ ПАРАМЕТР"
810 IF J = 1 GOTO 830
820 PRINT TAB(15); AA$: PRINT AB$: GOSUB 1950: PRINT AC$; AD$: GOTO 840
830 LPRINT TAB(15); AA$: LPRINT AB$: GOSUB 1950: LPRINT AC$; AD$
840 GOSUB 1950: FOR N = 1 TO N2: D = B2(N): IF J = 1 GOTO 880
850 PRINT N; S$(N); : IF K(N) > 1 THEN PRINT "("; K(N); "узл.)";
860 PRINT TAB(39); : PRINT USING "#.###"; H1(N); : PRINT TAB(44); D;
870 PRINT USING "\ \"; R$(D): GOTO 910
880 LPRINT N; S$(N); : IF K(N) > 1 THEN LPRINT "("; K(N); "узл.)";
890 LPRINT TAB(39); : LPRINT USING "#.###"; H1(N); : LPRINT TAB(44); D;
900 LPRINT USING "\ \"; R$(D)
910 NEXT N: GOSUB 1950: GOTO 170
920 FOR D = 1 TO D2: A(D) = 0: A1(D) = 0: NEXT D: Z = 1: H1 = 0
930 N = 1
940 D = B2(N): IF D = O GOTO 980
950 IF N > N3 THEN P2 = P1 * K1(N)
960 A(D) = A(D) + P2: A1(D) = A1(D) + K(N)
970 A2(D, Z) = A2(D, Z) + H1(N) * K1(N) / H1(Z)
980 IF N = N2 GOTO 1020
990 N = N + 1
1000 IF N > B3(Z) THEN Z = Z + 1
1010 GOTO 940
1020 AA$ = " ИНФОРМАЦИОННЫЕ ХАРАКТЕРИСТИКИ КОСВЕННЫХ"
1030 AB$ = " ПАРАМЕТРОВ"
1040 AC$ = " КОСВЕННЫЙ ПАРАМЕТР"
1050 AD$ = " KOЛ-ВО ИНФОР-ТЬ ПОЛНОТА КОНТРОЛЯ"
1060 AE$ = "ОПРЕД.ПАР. БИТ ОБЩАЯ ПО УРОВНЯМ"
1070 IF J = 1 GOTO 1100
1080 PRINT AA$: PRINT AB$: GOSUB 1950: PRINT AC$; AD$
1090 PRINT TAB(32); AE$: PRINT TAB(53); : GOTO 1120
1100 LPRINT AA$: LPRINT AB$: GOSUB 1950: LPRINT AC$; AD$
1110 LPRINT TAB(32); AE$: LPRINT TAB(53);
1120 FOR Z = 1 TO Z2: IF J = 1 THEN LPRINT Z; " "; ELSE PRINT Z; " ";
1130 NEXT Z: GOSUB 2210
1140 GOSUB 1950: FOR D = 1 TO D2: IF J <> 1 GOTO 1150 ELSE 1190
1150 PRINT D; R$(D); TAB(37); A1(D);
1160 PRINT USING "#.###_ "; A(D); A(D) / H2;
1170 FOR Z = 1 TO Z2: PRINT USING "#.##_ "; A2(D, Z); : NEXT Z
1180 PRINT : GOTO 1220
1190 LPRINT D; R$(D); TAB(37); A1(D);
1200 LPRINT USING "#.###_ "; A(D); A(D) / H2;
1210 FOR Z = 1 TO Z2: LPRINT USING "#.##_ "; A2(D, Z); : NEXT Z: LPRINT
1220 NEXT D: GOSUB 1950: GOSUB 2210
1230 GOTO 170
1240 N = 0
1250 V(0) = 10000: FOR E = 1 TO E1: I = B1(N, E): IF I = 0 GOTO 1300
1260 C = E: V2 = H1(I) / T(I)
1270 IF V2 <= V(C - 1) THEN V(C) = V2: B1(N, C) = I: GOTO 1290
1280 V(C) = V(C - 1): B1(N, C) = B1(N, C - 1): C = C - 1: GOTO 1270
1290 NEXT E
1300 IF N < N3 THEN N = N + 1: GOTO 1250
1310 AA$ = "АЛГОРИТМ ПОИСКА ДЕФЕКТА"
1320 IF J = 1 THEN LPRINT TAB(25); AA$ ELSE PRINT TAB(25); AA$
1330 GOSUB 1950: G = 32 / (Z2 - 1)
1340 FOR Q1 = 1 TO E1: L1 = B1(0, Q1)
1350 FOR M1 = 1 TO K(L1): IF L1 = 0 GOTO 1850
1360 IF J <> 1 THEN PRINT L1; S$(L1); ELSE LPRINT L1; S$(L1);
1370 IF K(L1) = 1 THEN GOSUB 2210: GOTO 1390
1380 IF J <> 1 THEN PRINT M1 ELSE LPRINT M1
1390 FOR Q2 = 1 TO E1: IF L1 > N3 GOTO 1830 ELSE L2 = B1(L1, Q2)
1400 FOR M2 = 1 TO K(L2): IF L2 = 0 GOTO 1830
1410 IF J = 1 THEN LPRINT TAB(G); L2; S$(L2); : GOTO 1430
1420 PRINT TAB(G); L2; S$(L2);
1430 IF K(L2) = 1 THEN GOSUB 2210: GOTO 1450
1440 IF J <> 1 THEN PRINT M2 ELSE LPRINT M2
1450 IF Z2 = 2 GOTO 1810
1460 FOR Q3 = 1 TO E1: IF L2 > N3 GOTO 1810 ELSE L3 = B1(L2, Q3)
1470 FOR M3 = 1 TO K(L3): IF L3 = 0 GOTO 1810
1480 IF J = 1 THEN LPRINT TAB(G * 2); L3; S$(L3); : GOTO 1500
1490 PRINT TAB(G * 2); L3; S$(L3);
1500 IF K(L3) = 1 THEN GOSUB 2210: GOTO 1520
1510 IF J <> 1 THEN PRINT M3 ELSE LPRINT M3
1520 IF Z2 = 3 GOTO 1790
1530 FOR Q4 = 1 TO E1: IF L3 > N3 GOTO 1790 ELSE L4 = B1(L3, Q4)
1540 FOR M4 = 1 TO K(L4): IF L4 = 0 GOTO 1790
1550 IF J = 1 THEN LPRINT TAB(G * 3); L4; S$(L4); : GOTO 1570
1560 PRINT TAB(G * 3); L4; S$(L4);
1570 IF K(L4) = 1 THEN GOSUB 2210: GOTO 1590
1580 IF J <> 1 THEN PRINT M4 ELSE LPRINT M4
1590 IF Z2 = 4 GOTO 1770
1600 FOR Q5 = 1 TO E1: IF L4 > N3 GOTO 1770 ELSE L5 = B1(L4, Q5)
1610 FOR M5 = 1 TO K(L5): IF L5 = 0 GOTO 1770
1620 IF J = 1 THEN LPRINT TAB(G * 4); L5; S$(L5); : GOTO 1640
1630 PRINT TAB(G * 4); L5; S$(L5);
1640 IF K(L5) = 1 THEN GOSUB 2210: GOTO 1660
1650 IF J <> 1 THEN PRINT M5 ELSE LPRINT M5
1660 IF Z2 = 5 GOTO 1750
1670 FOR Q6 = 1 TO E1: IF L5 > N3 GOTO 1750 ELSE L6 = B1(L5, Q6)
1680 FOR M6 = 1 TO K(L6): IF L6 = 0 GOTO 1750
1690 IF J = 1 THEN LPRINT TAB(G * 5); L6; S$(L6); : GOTO 1710
1700 PRINT TAB(G * 5); L6; S$(L6);
1710 IF K(L6) = 1 THEN GOSUB 2210: GOTO 1730
1720 IF J <> 1 THEN PRINT M6 ELSE PRINT M6
1730 NEXT M6
1740 NEXT Q6
1750 NEXT M5
1760 NEXT Q5
1770 NEXT M4
1780 NEXT Q4
1790 NEXT M3
1800 NEXT Q3
1810 NEXT M2
1820 NEXT Q2
1830 NEXT M1
1840 NEXT Q1
1850 GOSUB 1950: GOTO 170
1860 IF N > N3 GOTO 1900
1870 FOR E = 1 TO E1: PRINT TAB(6); E;
1880 INPUT "Нижестоящий прямой параметр - ", B1: IF B1 = 0 GOTO 1900
1890 B(B1) = N: B1(N, E) = B1: NEXT E
1900 IF N = 0 GOTO 1940
1910 INPUT " Косвенный параметр - ", B2(N)
1920 INPUT " Время получения информации - ", T(N)
1930 IF T(N) = 0 THEN T(N) = 1
1940 RETURN
1950 IF J = 1 THEN LPRINT " "; ELSE PRINT " ";
1960 FOR I = 1 TO 17: IF J = 1 THEN LPRINT "----"; ELSE PRINT "----";
1970 NEXT I: GOSUB 2210: RETURN
1980 AA$ = "ИСХОДНЫЕ ДАННЫЕ ПО ДИАГНОСТИЧЕСКОЙ МОДЕЛИ"
1990 AB$ = " N название прямого параметра"
2000 AC$ = " КП Т,мин КР. Нижележащие ПП": AE$ = "Уровень "
2010 IF J = 1 GOTO 2030
2020 PRINT "Расчет пpоизвел(а) - "; FAM$; " "; DATE$
2025 PRINT TAB(20); AA$: GOSUB 1950: PRINT AB$; AC$: GOTO 2040
2030 LPRINT "Расчет пpоизвел(а) - "; FAM$; " "; DATE$
2035 LPRINT TAB(20); AA$: GOSUB 1950: LPRINT AB$; AC$
2040 GOSUB 1950: N = 0: Z = 0: GOSUB 2230
2050 IF N = (B3(Z) + 1) THEN Z = Z + 1: GOSUB 2230
2060 IF J = 1 GOTO 2090
2070 PRINT N; S$(N); TAB(36); B2(N); : PRINT USING "###.#_ "; T(N);
2080 PRINT K(N); : GOTO 2110
2090 LPRINT N; S$(N); TAB(36); B2(N); : LPRINT USING "###.#_ "; T(N);
2100 LPRINT K(N);
2110 IF N > N3 GOTO 2150
2120 FOR E = 1 TO E1: IF B1(N, E) = 0 GOTO 2150
2130 IF J = 1 THEN LPRINT B1(N, E); ELSE PRINT B1(N, E);
2140 NEXT E
2150 GOSUB 2210: IF N < N2 THEN N = N + 1: GOTO 2050
2160 GOSUB 1950: AD$ = " N Название косвенного параметра"
2170 IF J = 1 THEN LPRINT AD$ ELSE PRINT AD$
2180 GOSUB 1950
2190 FOR D = 1 TO D2: IF J = 1 THEN LPRINT D; R$(D) ELSE PRINT D; R$(D)
2200 NEXT D: GOSUB 1950: GOTO 170
2210 IF J = 1 THEN LPRINT ELSE PRINT
2220 RETURN
2230 IF J = 1 THEN LPRINT TAB(12); AE$; Z ELSE PRINT TAB(12); AE$; Z
2240 RETURN
2250 STOP
2260 INPUT "Имя файла ", MM$
2265 OPEN "O", #1, MM$
2270 FOR N = 0 TO N2: PRINT #1, USING "&"; S$(N)
2275 IF N > N3 GOTO 2290
2280 FOR E = 1 TO E1: PRINT #1, USING "##."; B1(N, E): NEXT E
2290 PRINT #1, USING "##."; B2(N); K(N)
2300 PRINT #1, USING "###.#"; T(N): NEXT N
2302 FOR D = 1 TO D2: PRINT #1, USING "&"; R$(D): NEXT D: CLOSE 1
2304 GOTO 170
2310 INPUT "Имя файла ", MM$
2315 OPEN "I", #2, MM$
2320 FOR N = 0 TO N2: INPUT #2, S$(N)
2325 IF N > N3 GOTO 2340
2330 FOR E = 1 TO E1: INPUT #2, B1(N, E): NEXT E
2340 INPUT #2, B2(N), K(N), T(N): NEXT N
2350 FOR D = 1 TO D2: INPUT #2, R$(D): NEXT D: CLOSE 2
2352 FOR N = 1 TO N3: FOR E = 1 TO E1
2354 B1 = B1(N, E): IF B1 = 0 THEN 2358 ELSE B(B1) = N
2356 NEXT E
2358 NEXT N
2360 GOTO 170
2400 STOP
С печатью на современные принтеры — да, могут быть проблемы.
|