П р и м е р 21. Для заданной целочисленной матрицы найдите максимум ────────────── среди сумм элементов диагоналей, параллельных главной диагонали матрицы размером MxM. NEW Ok 5 'Идентификация массива A(M,M) (строки 10-30). 10 DEFINT M,I,J,K:INPUT M:IF M<=1 THEN 10 20 DIM A(M,M):X=RND(-TIME) 30 FOR I=1 TO M:FOR J=1 TO M:A(I,J)=INT(10*RND(1)):PRINT A(I,J);:NEXT J:PRINT:NEXT I 35 'Нахождение максимальной среди сумм элементов диагоналей, расположе нных выше главной (строки 40-50). 40 FOR K=1 TO M-1:FOR I=1 TO M:FOR J=1 TO M 50 IF J=I+K THEN B=B+A(I,J):NEXT J:NEXT I ELSE NEXTJ:NEXTI:IF B>C THEN C=B:B=0:NEXT K ELSE B=0:NEXT K 55 'Нахождение максимальной среди сумм элементов диагоналей, расположе нных ниже главной (строки 60-70). 60 FOR K=1 TO M-1:FOR I=1 TO M:FOR J=1 TO M 70 IF J=I-K THEN B=B+A(I,J):NEXT J:NEXTI ELSE NEXTJ:NEXTI:IF B>D THEN D=B:B=0:NEXT K ELSE B=0:NEXT K 80 IF C>D THEN PRINT C ELSE PRINT D 'Сравнение этих максимумов и выво д большего на экран дисплея. run run run ? 4 ? 3 ? 5 ·5··8··4··8 ·3··6··6 ·2··0··5··7··7 ·0··3··2··7 ·8··0··2 ·9··6··7··2··9 ·6··6··7··3 ·3··6··2 ·9··9··8··5··5 ·7··6··6··9 ·14 ·6··9··1··1··7 ·13 Ok ·7··3··9··8··3 Ok ·27 Ok П р и м е р 22. Вычислить сумму тех элементов двуxмерного целочислен- ────────────── ного массива A(M,N), в десятичной записи которых ис- пользуются только цифры 0,1,2,3. NEW Ok 10 DEFINT M,N,I,J,K,А:INPUT"Введите M и N";M,N 20 INPUT"Числовой отрезок[X,Y]";X,Y 30 Z=RND(-TIME):DIM B(M,N),A(M,N) 40 'Заполнение массива B(M,N) псевдослучайными целыми числами из отрез ка[X,Y](строки 50-70) 50 FOR I=1 TO M:FOR J=1 TO N:B(I,J)=INT((Y-X+1)*RND(1)+X):A(I,J)=B(I,J ):NEXT J,I 80 S=0:FOR I=1 TO M:FOR J=1 TO N 90 'Пока не просмотрим все цифры числа A(i,j),выполняем цикл "пока"(ст роки 100-160) 100 IF A(I,J)=0 THEN 180 ELSE FOR K=1 TO 0 STEP 1 120 B=ABS(A(I,J))-INT(ABS(A(I,J))/10)*10 'Выделяем последнюю цифру чис ла A(i,j) 130 IF B>=4 THEN 180 ELSE A(I,J)=(ABS(A(I,J))-B)/10 150 K=A(I,J) 'проверка условия: если A(i,j)=0,то из цикла "пока" выход им 160 NEXT K 170 IF A(I,J)=0THEN S=S+B(I,J)'Ищем сумму нужных элементов 180 NEXT J,I:FOR I=1 TO M:FOR J=1 TO N 210 PRINT B(I,J);:NEXT J:PRINT:NEXT I:?"Искомая сумма:";S run Введите M и N? 4,6 Числовой отрезок[X,Y]? 1,9 9 4 9 3 5 6 3 1 6 4 3 3 1 9 2 3 9 1 3 8 4 8 9 2 Искомая сумма: 25 Ok П р и м е р 23. Подсчитайте количество элементов двухмерного массива ────────────── A(M,N) натуральных чисел, которые являются составными. NEW Ok 10 DEFINT M,N,I,J,A,K:INPUT"Введите M и N";M,N:X=RND(-TIME):DIM A(M,N) :IF M<1 OR N<1 THEN RUN 10 30 FOR I=1 TO M:FOR J=1 TO N 40 A(I,J)=INT(30*RND(1)+1):IF A(I,J)=2 THEN PRINTUSING"\ \";STR$(A(I, J))+"*";:NEXT:PRINT:NEXT 50 K=0:FOR K=2 TO A(I,J)-1 60 IF A(I,J)/K<>FIX(A(I,J)/K) THEN NEXT K:PRINTUSING"\ \";STR$(A(I,J) )+"*";:NEXT J:PRINT:NEXT I ELSE Y=Y+1:PRINT USING"\ \";STR$(A(I,J))+ " ";:NEXT J:PRINT:NEXT I 70 PRINT"Звездочками отмечены простые числа;составных чисел в Вашем ма ссиве";Y run Введите M и N? 3,5 ·27··20··25··0···2* ·26··17*·23*·2*··23* ·20··12··22··9···21 Звездочками отмечены простые числа;составных чисел в Вашем массиве·10 Ok В этой программе во время идентификации массива A(M,N) случайными чис- лами сразу же производится проверка каждого элемента массива: является ли он простым? Если "да",то на экран этот элемент выводится со "звездочкой" ("*") позади. Если "нет", то - без нее. Затем подсчитывается количество составных чисел и результат выводится на экран. П р и м е р 24. Х а р а к т е р и с т и к о й столбца целочисленной ────────────── матрицы назовем сумму модулей ее отрицательных четных элементов. Переставляя столбцы заданной матрицы, расположить их в соответ- ствии с ростом характеристик. NEW Ok 10 DEFINT M,N,I,J,W,K,B,D:INPUT"Укажите M,N";M,N 15 IF M<2 OR N<2 THEN PRINT "Слишком малое количество столбцов (строк) !":RUN 10 20 INPUT"Числовой отрезок[X,Y]";X,Y 30 Z=RND(-TIME):DIM A[M,N],Q[M,N],L[N],F[N] 40 'Заполняем массив A[M,N] случайными целыми числами из отрезка [X,Y] и копируем его в массив Q[M,N](строки 50-70) 50 FOR I=1 TO M:FOR J=1 TO N 60 A[I,J]=INT((Y-X+1)*RND(1)+X):Q[I,J]=A[I,J] 70 NEXT J,I 80 'Находим характеристики столбцов(строки 90-110) 90 FOR J=1 TO N:FOR I=1 TO M 100 IF A[I,J]<0 AND ABS(A[I,J])MOD2=0 THEN L[J]=L[J]+ABS(A[I,J]) 110 F[J]=L[J]:NEXT I,J 120 'Упорядочиваем столбцы по возрастанию характеристик(строки 130-180) 130 FOR W=1 TO N-1 'Удивительный цикл! 140 FOR B=1 TO N-1:FOR K=B+1 TO N 150 IF L[B]<=L[K] THEN 180 ELSE SWAP L[B],L[K] 170 FOR D=1 TO M:SWAP A[D,B],A[D,K]:NEXT D 180 NEXT K,B,W 190 'Вывод результатов 200 FOR I=1 TO M 210 FOR J=1 TO N:PRINT USING"####";Q[I,J];:NEXTJ:? SPC(4) 220 FOR J=1 TO N:PRINT USING"####";A[I,J];:NEXT J:PRINT 230 NEXT I 240 FOR H=0 TO 30:PRINT "-";:NEXT H:PRINT 250 'А теперь заполняем строки характеристик! 260 FOR J=1 TO N:PRINT USING"####";F[J];:NEXT:? SPC(4) 270 FOR J=1 TO N:PRINT USING"####";L[J];:NEXT run Укажите M,N? 4,3 Числовой отрезок[X,Y]? -40,10 -17 -18 -6 -6 -17 -18 -23 -16 1 1 -23 -16 1 -38 7 7 1 -38 -12 -5 -1 -1 -12 -5 ------------------------------ 12 72 6 6 12 72 ◀──── строки характеристик Ok Подумайте, каким был бы результат тестового примера, если бы в програм- ме отсутствовал цикл с параметром W (строки 130-180). П р и м е р 25. Вычисление определенного интеграла от функции,заданной ────────────── на отрезке [-1,1], по квадратурной формуле Гаусса. NEW Ok 10 DEFINT N,I:DEF FNF(Z)=Z*SIN(Z) 20 INPUT"Порядок интегрирования=";N:DIM X[N],H[N] 40 IF N=2 THEN RESTORE 160 50 IF N=3 THEN RESTORE 170 60 IF N=4 THEN RESTORE 180 70 IF N=5 THEN RESTORE 190 80 FOR I=1 TO N:READ X[I]:NEXT 90 IF N=2 THEN RESTORE 200 100 IF N=3 THEN RESTORE 210 110 IF N=4 THEN RESTORE 220 120 IF N=5 THEN RESTORE 230 130 FOR I=1 TO N:READ H[I]:NEXT:J=0 140 FOR I=1 TO N:J=J+FNF(X[I])*H[I] 150 NEXT:PRINT "Интеграл=";J:END 155 'Коэффициенты метода Гаусса. 160 DATA-.57735026919, .57735026919 170 DATA-.774596669241,0 , .774596669241 180 DATA-.861136311594,-.339981043585,.339981043585,.861136311594 190 DATA-.906179845939,-.538469310106,0,.538469310106,.906179845939 200 DATA 1,1 210 DATA .55555555555556,.88888888888889,.55555555555556 220 DATA .347854845137,.652145154863,.652145154863,.347854845137 230 DATA .236926885056,.478628670499,.56888888888889,.478628670499,.23 6926885056 run run Порядок интегрирования=? 2 Порядок интегрирования=? 4 Интеграл= .6302420371144 Интеграл= .6023395913427 Ok Ok