Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Посмотрите и подскажите!

Автор: Akejljla 22.08.2008 18:40

Посмотрите пожалуйст в чем ошибка или недоработка: написал программу kypca433 - вроде как программа работает исправно,все хорошо... Но когда ввел ее в kypsovai в качестве процедуры работает совсем некорректно... huh.gif
заранее спасибо.


Прикрепленные файлы
Прикрепленный файл  KURSOVAI.PAS ( 8.53 килобайт ) Кол-во скачиваний: 215
Прикрепленный файл  KYPCA433.PAS ( 1.77 килобайт ) Кол-во скачиваний: 170

Автор: volvo 22.08.2008 20:32

В первом случае (отдельная программа) у тебя все переменные описаны глобально, и инициализируются компилятором (значения по умолчанию - нули, для множества - "пустое множество").

В случае же, когда ты вносишь этот текст как процедуру, переменные уже не глобальные, а локальные, их компилятор не трогает, и хранится в них мусор. Все, что тебе надо сделать (если отдельно процедура работала) - инициализировать все переменные. Конкретно в твоем случае достаточно:

ii := 1, kol := 0, max := 0, mn := []; mn_b := [];
, насколько я вижу.

Автор: Akejljla 24.08.2008 16:13

В том-то и дело что как процедура она не хочет работать... nea.gif

Автор: volvo 24.08.2008 19:36

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

Дальше. Когда ты здесь:

...
writeln;
writeln('1: Определение знака задиака по введенному году');
writeln('2: Формирование нового упорядеченного массива');
writeln('3: Замена самого длинного слова в строке');
writeln('4: Список жильцов дома');
writeln('5: Файл');
writeln('0: Выход');
read(s); { <--- вот именно тут }
...
прочел число, то в буфере клавиатуры остается код Enter-а, потому что ты завершаешь ввод данных именно Enter-ом. А потом, когда читаешь строку уже в процедуре - то строка-то читается до этого самого кода Enter-а! То есть, там у тебя всегда пустая строка. Выход - один из двух: либо заменить в том фрагменте, который я привел Read на ReadLn, либо после того, как пользователь ввел номер задачи, чистить буфер клавиатуры. Я бы выбрал первый вариант.

Автор: Akejljla 25.08.2008 10:28

Спасибо огромное! очень помог!все робит теперь! respect.gif