Решения (задачи 165-188)
Задача 165
{ Бинарный поиск в упорядоченном массиве } label bye; const НВ=10; var а:array[1..10] of integer; { массив целых } obr:integer; { образец для поиска } ok: boolean; { TRUE – массив упорядочен } sred,verh,niz:integer; { номера среднего, верхнего и нижнего эл-тов массива} found:boolean;{ признак совпадения с образцом } n:integer; { счетчик сравнений с образцом } i:integer; begin { ввод массива } writeln('*** Бинарный поиск в упорядоченном массиве ***'); write('Введите массив (в одной строке ',НВ); writeln (' целых чисел) и нажмите Enter'); write(' › '); for i: = l to HB-1 do read(a[i]); readln(a[HB]); { проверим, является ли массив упорядоченным ('Средний рост: ',sred:6:1,' см'); writeln ГУ ',m,'-x учеников рост превышает ', 'средний.'); end else writeln('Нет данных для обработки.'); readln; end.
Задача 167
{ Вычисление суммы элементов массива (по столбцам) const ROW=3; { кол-во строк } COL=5; { кол-во столбцов } var a: array[1..ROW,1..COL] of integer; { массив } s: array[1..COL] of integer; { сумма элементов } i,j: integer; begin writeln('Введите массив.'); writeln('После ввода элементов каждой строки,', COL,' целых чисел, нажимайте Enter'); for i: = l to ROW do { ROW строк } begin write(' › '); for j: = l to COL-1 do read(a[i,j]); readln(a[i,COL]); end; writeln('Введенный массив'); for i: = l to ROW do begin for j: = 1 to COL-1 do write(a[i,j]:4); writeln(a[i,COL]:4); end; { обработка } for j: = 1 to COL do { для каждого столбца } for i: = l to ROW do { суммируем эл-ты одного столбца } writeln('--------- for i: = l to COL do write(s[i]:4); writeln; readln; end.
Задача 170
{ вычисление определителя матрицы второго порядка } var a: array[1..2.1..2] of real; det: real; { определитель (детерминант) } i,j: integer; { индексы массива } begin writeln('Введите матрицу второго порядка.'); writeln('После ввода элементов строки нажимайте Enter'); for i: = l to 2 do begin write(' › '); read(a[i,1]); readln(a[i,2]); end; det: = a[l,l]*a[2.2] – a[l,2]*a[2.1]; writeln('Определитель матрицы '); for i: = l to 2 do begin for j: = 1 to 2 do write(a[i,j]:6:2); writeln; end; writeln('равен ',det:6:2); readln; end.