
Вопрос по паскалю, базовый уровень. в задаче мне нужно ввести две переменные - по-сути массив и
количество его "ячеек". то есть: мне нужно ввести количество дней и на каждый из этих дней количество задач, которое решили ученики. например:5 6, 5, 8, 3, 2я обьявляю массив в паскале, который по-сути, обозначается какvar Z: array [1 . . N] of integer (где N - это количество дней). в итоге я написала так:var N:integer;var Z: array [1 . . N] of integer;но прога выдает ошибку и пишет, что N должна быть константой! а как я ему напишу ее константное значение, если я его сама не знаю? я же собиралась его в программе вводить. в чем ошибка, что делать?

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

Вы используете статический массив, размерность которого указывается изначально, и она не изменится на протяжении всей программы. Программа выдает ошибку, тк [1..n] не очень указывает рамки. N должна объявляться не в var, как переменна, а перед, как константа const.
Результат:
const n=5;
var z: array [1..n] of integer;
Существует еще динамический массив, который может менять размерность в процессе работы программы. Советую самостоятельно изучить материал в полном объёме.



Проблема здесь в том, что в Pascal размер массива должен быть известен на момент компиляции, а не во время выполнения программы. Поэтому вы не можете использовать переменную N
для определения размера массива. Однако есть несколько способов решения этой проблемы.
Использование динамических массивов: Можно использовать динамический массив, который создается во время выполнения программы. Вот пример:
pascalvar N: integer; Z: array of integer; begin Write('Введите количество дней: '); Readln(N); SetLength(Z, N); // Устанавливаем размер массива // Теперь вы можете использовать массив Z как обычно // Например, чтение значений: for i := 0 to N - 1 do begin Write('Введите количество задач для дня ', i + 1, ': '); Readln(Z[i]); end; // Ваш код дальше... end.
Использование максимального возможного размера: Вы можете объявить массив с максимальным ожидаемым размером и затем использовать только ту часть массива, которая фактически заполняется. Например:
pascalconst MaxDays = 100; // Максимальное количество дней var N: integer; Z: array [1 .. MaxDays] of integer; begin Write('Введите количество дней: '); Readln(N); // Теперь N не может превышать MaxDays // Ваш код дальше... end.
Выберите тот метод, который лучше соответствует вашим потребностям.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili