Показать сообщение отдельно
Старый 16.04.2017, 09:17   #5 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от 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 ТОЛЬКО с целыми числами.

Если что-нибудь еще непонятно - спрашивайте, не стесняйтесь.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070