Вопрос задан 07.07.2023 в 02:11. Предмет Информатика. Спрашивает Горячева Ариадна.

Помогите с проблемой: var n,i,j:integer;m:array [1..n,1..n] of integer;begin writeln('Введите

размерность матрицы'); read(n); for i:=1 to n do begin for j:=1 to n do read(m[i,j]); end; for i:=1 to n do begin for j:=1 to 41 do write(m[i,j]:5); writeln end;end.ошибка: ожидалось константное выражениемне не обходимо чтобы пользователь сам задавал размерность вводимого массива
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Суржан Артур.

Объяснение:

Для этого нужно использовать динамические массивы.

var m: array of array of integer; означает массив массивов integer.

SetLength(m, n, n); инициализирует двумерный массив m размерностью n•n.

Но при использовании динамических массивов изменяется принцип обращения к элементам: если ранее (в статических массивах) нумерация шла с 1, то сейчас с 0. Также изменилось условие окончания цикла (ранее было до n, сейчас до n - 1)

Полный код:

var

n, i, j: integer;

m: array of array of integer;

begin

writeln('Введите размерность матрицы');

read(n);

SetLength(m, n, n);

for i:=0 to n-1 do

begin

for j:=0 to n-1 do

read(m[i,j]);

end;

for i:=0 to n-1 do

begin

for j:=0 to n-1 do

write(m[i,j]:5);

writeln();

end;

end.

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Проблема в вашем коде заключается в том, что размерность массива m должна быть известна во время компиляции программы. В данном случае вы пытаетесь использовать переменную n, которая будет введена пользователем, чтобы определить размерность массива m, но это недопустимо в Pascal.

Однако, существуют способы обойти эту проблему. Один из вариантов - использовать динамический массив. Для этого вам потребуется использовать указатели и выделять память для массива во время выполнения программы. Вот пример исправленного кода с использованием динамического массива:

pascal
var n, i, j: integer; m: array of array of integer; begin writeln('Введите размерность матрицы'); read(n); // Выделяем память для массива SetLength(m, n, n); for i := 0 to n - 1 do begin for j := 0 to n - 1 do read(m[i, j]); end; for i := 0 to n - 1 do begin for j := 0 to n - 1 do write(m[i, j]:5); writeln; end; end.

В этом коде m объявлен как динамический двумерный массив, и его размерность определяется во время выполнения программы после ввода значения n пользователем с помощью SetLength(m, n, n).

Обратите внимание, что в динамическом массиве индексация начинается с 0, поэтому в циклах for используется 0 вместо 1 для индексов массива m.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос