|
|
|
| Вот код приложения (учебный)
{$A+,B-,D+,E+,F-,G-,I+,L+,N-,O-,P-,Q-,R-,S-,T-,V+,X+}
program test;
var i:integer;
procedure ss;
var pp:integer;
begin
writeln(pp);
end;
begin
ss;
readln(i);
end.
|
Результат выполнения 340
Если убрать
{$A+,B-,D+,E+,F-,G-,I+,L+,N-,O-,P-,Q-,R-,S-,T-,V+,X+}
|
то результат 4941.
Откуда эти цифры взялись? Как исправить помогите, пожалуйста! | |
|
|
|
|
|
|
|
для: Ziq
(24.11.2006 в 01:22)
| | Поскольку переменной pp не присвоено никакого значения, Вы выводите мусор, находящийся в памяти. Стоит ли удивляться непредсказуемости результатов? | |
|
|
|
|
|
|
|
для: Trianon
(24.11.2006 в 09:50)
| | 1. Почему в основной программе все ок, при тех же условиях?
2. Если процедура будет рекруссивной, то как сделать так, чтобы переменная скидывала свое значение в 0 только в начале программы. Хотя бы алгоритм, без кода. Можно конечно передавать дополнительный параметр первый это запуск или нет, и там все обнулять. Но хотелось бы узнать как делать правильно.
Заранее ОГРОМНОЕ спасибо. | |
|
|
|
|
|
|
|
для: Ziq
(24.11.2006 в 10:15)
| | 1. Почему в основной программе все ок, при тех же условиях?
Что именно OK?
2. У рекурсивной процедуры, у каждого вызванного экземпляра своя копия переменных. Собственно, в паскале - у нерекурсивной - тоже. И инициализируют их в большинстве случаев именно руководствуясь входными параметрами. | |
|
|
|
|
|
|
|
для: Trianon
(24.11.2006 в 10:22)
| | > Что именно OK?
Переменная равна нулю, если ей ничего не присваивалось.
Спасибо, вроде разобрался...
Тут еще одна проблема возникла, что если строка будет длиннее 255 символов? Как организовать прием данных из файла? Можно что-то попробовать с массивами сделать... но это что-то больно громоздко. Я думаю в Паскале что-то придумано для этого...
Заранее крайне благодарен всем ответившим. Пишите все, что знаете или догадываетесь... Времени на понимание паскаля - 1 день. | |
|
|
|