Цитата:
Сообщение от Nastya556
Добрый вечер)
Форумчане, помогите мне написать в подробной форме выделенную операцию)
Машине эта операция понятна, мне не очень
Буду очень благодарна)
|
Настя, как я догадываюсь, некоторое недоумение вызывает обращение к массиву a[i].
Объясню.
Дело в том, что в классическом Паскале (за всякие там АВС не отвечаю) предусмотрена некая совместимость типов.
Пусть у нас есть двумерная, для простоты целочисленная, матрица А размером 8х10 (восемь строк и десять столбцов).
Мы можем описать такой тип несколькими способами:
1. "В лоб":
var A:Array[1..8,1..10] of Integer;
2. Можно то же самое, но с предварительным заданием типа:
type
Matrix=Array[1..8,1..10] of Integer;
var
A:Matrix;
3. А вот теперь - самое интересное. Двумерный массив в Паскале может трактоваться, как одномерный массив, каждый элемент которого есть тоже одномерный массив-строка:
type
Vector=Array[1..10] of Integer;
Matrix=Array[1..8] of Vector;
var
A:Matrix;
То есть теперь A[i] - это одномерный массив-строка размером [1..10]. И к элементу матрицы можно обратиться (например, присвоить значение 18) так:
A[i][j]:=18;
В свою очередь, со строками матрицы можно работать, как с обычными одномерными массивами, что и делается в программе.
А теперь - ВНИМАНИЕ!
В моей программе задание переменных способом 3 связано с двумя моментами:
1. Просто для наглядности.
2. Вы не написали, каким Паскалем пользуетесь. Дело в том, что я не уверен, что в этом... ну, в общем, в АВС эта совместимость работает. Что-то, мне помнится, там с этим (как всегда) проблемы.
В НОРМАЛЬНОМ Паскале ВСЕ ФОРМЫ ЗАДАНИЯ ДВУМЕРНЫХ МАССИВОВ АБСОЛЮТНО ТОЖДЕСТВЕННЫ! Т.е. я могу, например, описать массив способом 1, а потом работать со строкой A[i]. Я могу обращаться к элементу матрицы так: A[i,j], или так: A[i][j] - БЕЗ РАЗНИЦЫ. НОРМАЛЬНЫЙ Паскаль поймёт.
И еще. Может быть, смутил оператор Inc? На всякий случай:
Inc(c) эквивалентен c:=c+1;
Inc(c,d) эквивалентен c:=c+d;
Работает Inc ТОЛЬКО с целыми числами.
Если что-нибудь еще непонятно - спрашивайте, не стесняйтесь.