Посмотрите пожалуйст в чем ошибка или недоработка: написал программу kypca433 - вроде как программа работает исправно,все хорошо... Но когда ввел ее в kypsovai в качестве процедуры работает совсем некорректно...
заранее спасибо.
Прикрепленные файлы
KURSOVAI.PAS ( 8.53 килобайт )
Кол-во скачиваний: 311
KYPCA433.PAS ( 1.77 килобайт )
Кол-во скачиваний: 265
В первом случае (отдельная программа) у тебя все переменные описаны глобально, и инициализируются компилятором (значения по умолчанию - нули, для множества - "пустое множество").
В случае же, когда ты вносишь этот текст как процедуру, переменные уже не глобальные, а локальные, их компилятор не трогает, и хранится в них мусор. Все, что тебе надо сделать (если отдельно процедура работала) - инициализировать все переменные. Конкретно в твоем случае достаточно:
ii := 1, kol := 0, max := 0, mn := []; mn_b := [];, насколько я вижу.
В том-то и дело что как процедура она не хочет работать...
Я тебе уже написал, что надо сделать, чтобы процедура начала работать. Пока ты этого не сделаешь, будешь получать то тут, то там разные глюки.
Дальше. Когда ты здесь:
...прочел число, то в буфере клавиатуры остается код Enter-а, потому что ты завершаешь ввод данных именно Enter-ом. А потом, когда читаешь строку уже в процедуре - то строка-то читается до этого самого кода Enter-а! То есть, там у тебя всегда пустая строка. Выход - один из двух: либо заменить в том фрагменте, который я привел Read на ReadLn, либо после того, как пользователь ввел номер задачи, чистить буфер клавиатуры. Я бы выбрал первый вариант.
writeln;
writeln('1: Определение знака задиака по введенному году');
writeln('2: Формирование нового упорядеченного массива');
writeln('3: Замена самого длинного слова в строке');
writeln('4: Список жильцов дома');
writeln('5: Файл');
writeln('0: Выход');
read(s); { <--- вот именно тут }
...
Спасибо огромное! очень помог!все робит теперь!