Массивы. Двумерные массивы
Двумерные массивы можно представить себе как таблицы, в ячейках которых хранятся значения элементов массива, а индексы элементов массива являются номерами строк и столбцов.
Объявляются двумерные массивы так же, как переменные и одномерные массивы. Например, целочисленный числовой массив, содержащий 3 строк и 4 столбца объявляется следующим образом:
DIM tabl(3 ,4)
DIM tabl(3 ,4) AS INTEGER
Tabl
| ||||||||||||||||
| |
DIM tabl1(1 TO 3 ,1 TO 4) AS INTEGER
Tabl1
| ||||||||||||||||
| |
С помощью двумерного массива 9х9 и двух вложенных циклов можно легко составить программу, реализующую таблицу умножения. Сомножителями будут значения индексов строк и столбцов, а их произведения будут значениями элементов массива.
Символьные и строчные переменные.
Строки - последовательность алфавитно-цифровых символов.
Для того, чтобы использовать такие переменные в программе необходимо их соответствующим образом объявить. Для этого используется уже известный оператор DIM.
DIM s AS STRING
s="Cтрока123"
Или добавлять справа от переменной символ $.
s$="Тоже строка 987"
Задание 6.
В таблице Dat хранятся данные о количестве сделанных заданий учениками (Dat[1] заданий сделал первый ученик, Dat[2] — второй и т. д.). Определите, какое число будет напечатано в результате работы следующей программы. Текст программы приведён на трёх языках программирования.
Алгоритмический язык | Бейсик | Паскаль |
алг нач целтаб Dat[1:10] цел к, m, n Dat[1] := 7 Dat[2] := 9 Dat[3] := 10 Dat[4] := 5 Dat[5] := 6 Dat[6] := 7 Dat[7] := 9 Dat[8] := 8 Dat[9] := 6 Dat[10] := 9 m := 10; n: = 0 нц для к от 1 до 10 если Dat[к] < m то m : = Dat[к] n: = к все КЦ вывод n КОН | DIM Dat(10) AS INTEGER DIM k,m,n AS INTEGER Dat[1] = 7 Dat[2] = 9 Dat[3] = 10 Dat[4] = 5 Dat[5] = 6 Dat[6] = 7 Dat[7] = 9 Dat[8] = 8 Dat[9] = 6 Dat[10] = 9 m = 10; n = 0 FOR k := 1 TO 10 IF Dat(k) < m THEN m =Dat[k] n = k ENDIF NEXT k PRINT n | Var k, m, n: integer; Dat: array[1...10] of integer; Begin Dat[1] := 7; Dat[2] := 9; Dat[3] := 10; Dat[4] := 5; Dat[5] := 6; Dat[6] := 7; Dat[7] := 9; Dat[8] := 8; Dat[9] := 6; Dat[10] := 9; m := 10; n: = 0; for k := 1 to 10 do if Dat[k] < m then begin m := Dat[k]; n := k end; writeln(n); End. |
Решение.
Программа предназначена для нахождения номера ученика, сделавшего наименьшее количество заданий. Проанализировав входные данные, приходим к выводу, что ответ 4.
Ответ: 4
При решении задачи стоит обратить внимание на следующие моменты:
1) задача распадается на следующие подзадачи. Для каждой строки надо найти максимальный элемент, затем проверить, является ли он минимальным в своем столбце. Эту операцию при необходимости надо проделать со всеми строками;
2) когда мы ищем максимальный элемент в строке, мы должны обязательно запоминать координаты этого элемента, чтобы знать, для какого столбца проверять, является ли найденный элемент минимальным;
3) для поиска максимального элемента в строке целесообразно использовать цикл for, так как мы должны перебрать все элементы строки;
4) для написания эффективной программы операцию поиска минимального элемента в столбце следует заменить на операцию проверки, является ли данный элемент минимальным в столбце. Это позволит не выполнять лишних действий.
Задание 7.
Решение.
Решением является программа, записанная на любом языке программирования. Пример верного решения, записанного на языке Паскаль:
Для проверки правильности работы программы необходимо использовать тесты