Ошибка 201 - Free Pascal (143584)
Формулировка задачи:
Написал прогу на сумму чисел в столбик(используя модуль). В ABC работает отлично, претензий нет. Но в Free дает ошибку 201(помоему ссылка на несущ. переменную). Если записать все в одну прогу(без модуля), то проблем нету. В принципе такого разногласия не должно быть. Что делать, помогите?!
Модуль:
Сама прога:
unit sum;
interface
uses crt;
procedure chasti(a:longint; var e,d,s,t,dt,st,n: longint);
procedure summa(x,y: integer);
implementation
procedure chasti(a:longint; var e,d,s,t,dt,st,n: longint);
begin
e:=a mod 10;
n:=n+1;
if a>=10 then begin
d:=trunc((a-e)/10) mod 10;
n:=n+1; end;
if a>=100 then begin
s:=trunc((a-10*d-e)/100) mod 10;
n:=n+1; end;
if a>=1000 then begin
t:=trunc((a-100*s-10*d-e)/1000) mod 10;
n:=n+1; end;
if a>=10000 then begin
dt:=trunc((a-1000*t-100*s-10*d-e)/10000) mod 10;
n:=n+1; end;
if a>=100000 then begin
st:=trunc((a-10000*dt-1000*t-100*s-10*d-e)/100000) mod 10;
n:=n+1; end;
end;
procedure summa(x,y: integer);
var z: longint;
i,b,n,e1,d1,s1,t1,dt1,st1,n1: longint;
BeGIN
clrscr;
n:=0;
z:=x+y;
chasti(z,e1,d1,s1,t1,dt1,st1,n1);
for i:=1 to n1 do
begin
b:=b+7;
gotoxy(1,b);
writeln(x);
writeln('+');
writeln(y);
writeln('------');
if i=1 then begin
gotoxy(n1,b+4);
writeln(e1); end;
if i=2 then begin
gotoxy(n1-1,b+4);
writeln(d1,e1); end;
if i=3 then begin
gotoxy(n1-2,b+4);
writeln(s1,d1,e1); end;
if i=4 then begin
gotoxy(n1-3,b+4);
writeln(t1,s1,d1,e1); end;
if i=5 then begin
gotoxy(n1-4,b+4);
writeln(dt1,t1,s1,d1,e1); end;
if i=6 then begin
gotoxy(n1-5,b+4);
writeln(st1,dt1,t1,s1,d1,e1); end;
readln;
end;
END;
end.uses crt,sum;
var x1,y1: integer;
BEGIN
clrscr;
write('Vvedite pervoye chislo: ');
readln(x1);
write('Vvedite vtoroye chislo: ');
readln(y1);
summa(x1,y1);
repeat until keypressed;
END.Решение задачи: «Ошибка 201»
textual
Листинг программы
uses crt,sum,um;
var x1,y1: integer;
BEGIN
clrscr;
write('Vvedite pervoye chislo: ');
readln(x1);
write('Vvedite vtoroye chislo: ');
readln(y1);
umnoj(x1,y1);
END.
Объяснение кода листинга программы
- Импортируются модули CRT, SUM и UM.
- Объявляются две переменные типа integer x1 и y1.
- Очищается экран с помощью функции clrscr.
- Выводится сообщение с приглашением ввести первое число.
- Читается значение первого числа с помощью функции readln и сохраняется в переменной x1.
- Выводится сообщение с приглашением ввести второе число.
- Читается значение второго числа с помощью функции readln и сохраняется в переменной y1.
- Производится умножение двух чисел с помощью функции umnoj, где первым аргументом является x1, вторым - y1.
- Программа завершается, так как нет дополнительных инструкций после оператора END.