Другие языки программирования и технологии

Паскаль. Двумерные массивы

Задание на картинке, второй картинкой прикрепляю уже готовую основу для выполнения заданий, на ней также выполнено задание 10.2. Нужна помощь ТОЛЬКО с заданиями 10.1 и 10.3
Меня заинтересовало в задаче 10.2 цифра 100. Что это за цифра такая? :-)
Остальное просто, только отрицательных элементов в побочной диагонали может ведь и не быть, а произведение может не вписаться в тип integer, поэтому лучше взять тип знаковых четырёхбайтных целых longint - его точно хватит для представления всех возможных произведений. Кстати, в случайном массиве размером [6×6] в принципе может и не оказаться нечётных элементов, хотя это крайне мало вероятно. Да, и ещё - вот такая проверка элемента массива на нечётность как
if (b[i,j] mod 2 <> 0) бывает только у полных нубов и набитых дурачков, потому что в Паскале для этого есть специальная встроенная функция odd().
Зу Джи
Зу Джи
29 440
Лучший ответ
Антон Павлович Премного благодарен! Тоже позабавила новоизобретённая цифра, но тут уж что поделать, какие задание дают, такие и выполняем...
ну раз основа уже есть и 10.2 вы сами решили, то вероятно сложность в том, что вы не понимаете как это делать. Поэтому просто поясню.
Что касается 10.1 главная диагональ квадратной 2-мерной матрицы это элементы расположенные на линии от левого верхнего, до правого нижнего угла, то есть a[i,i], что для вашей заготовки b[1,1], b[2,2] ...b[6,6] (если у вас массив 6 на 6). Побочная дианогаль идет слева снизу в правый верхний угол, т. e. a[n-i+1,1] (для массивов с индексами, начинающимися с 1), где n - размерность массива, т. е. для вашей заготовки: b[6,1], b[5,2] ...b[1,6]
соответственно по условию задачи вам нужно в цикле пройти по этой ПОБОЧНОЙ диагонали и если элемент <0, то домножить на него некоторую переменную P, которой до цикла должно быть присвоено значение 1. В ней и будет накоплено произведение отрицательных элементов побочной диагонали.
Что касаемо задачи 10.3, то тут есть варианты. Само условие нечетности можно записать как
if(b[i,j] mod 2 <>0)
then
begin
    //выполняем действие для нечетного элемента
end;
а вот с новым массивом несколько неоднозначнее). Логично было бы объявить динамический массив, наращивать его размер, по необходимости и присваивать значения https://onlinegdb.com/-gI-MzTcl, но, судя по задачам, вы их могли не проходить. А статичные массивы в паскале не поддерживают добавление элементов.
А значит надо создать массив с запасом, т. е. размером длины всего B, n*n, в вашем примере это 6*6=36. Изначально паскаль забьет его нулями, что нас устраивает.
далее пробегая по b в двойном цикле и если оно выполняется наращиваем индекс массива нового на 1 и по этому индексу сохраняем значение. в новом массиве. При выводе же выводим только элементы отличные от нуля, и более того встретив 0 можно прервать цикл.
Антон Павлович Благодарю за столь подробный ответ, но без примера это всё ещё сложно осмыслить
Сергей Машков для динамического массива, для статического не делал, но пописанию, там, думаю, понятно
и нахрен тебе оно надо? иди на завод тебе паскали не пригодятся уж точно
Геннадий Smith
Геннадий Smith
3 766
Sardorbek. Uzboy Кто тебе разрешил от станка в интернет заходить, раб?