после ввода comandImput программа зацикливается на pascal
после ввода comandImput
программа зацикливается и бесконечно отображается двумерный массив. Я пробовал менять while
на for
,обнулять переменные после каждого цикла ,и менял условия начала работы while
в if else
,однако ничего не менялось и на выходе меня всегда ждал бесконечный столб нулей которые я использую для заполнения массива.
program calcul;
var
sk:array[1..15,1..15]of char;
comandImput:string;
numberImput:integer;
P,k,l,line:integer;
begin
k:=0;
l:=0;
for j:integer:=1 to 15 do begin
for i:integer:=1 to 15 do begin
sk[i,j]:=('0');
end;
end;
for j:integer:=1 to 15 do begin
writeln();
for i:integer:=1 to 15 do begin
write(sk[i,j]);
end;
end;
writeln();
writeln();
writeln('это программа для вычисления периметра многоугольников с прямыми углами');
writeln('чтобы начертить линию:напишите сначала направление(right/left/up/down),а потом количество сантиметров(14)');
writeln('чтобы закончить преведите линию в левый верхний угол не выходя за полотно');
writeln('программа не расчитана на линии вне полотна!');
read(comandImput);
k:=1;
l:=1;
while (line=1)or((k=1)and(l=1)) do begin
read(comandImput);
If comandImput='down' then begin
read(numberImput);
P:=P+numberImput;
numberImput:=numberImput+1;
while l<numberImput do begin
sk[k,l]:='x';
l:=l+1;
end;
end
else If comandImput='right' then begin
read(numberImput);
P:=P+numberImput;
numberImput:=numberImput+1;
while k<numberImput do begin
sk[k,l]:='x';
k:=k+1;
end;
end
else If comandImput='up' then begin
read(numberImput);
P:=P+numberImput;
numberImput:=numberImput+1;
while l<numberImput do begin
sk[k,l]:='x';
l:=l-1;
end;
end
else If comandImput='left' then begin
read(numberImput);
P:=P+numberImput;
numberImput:=numberImput+1;
while k<numberImput do begin
sk[k,l]:='x';
k:=k+1;
end;
end;
for j:integer:=1 to 15 do begin
writeln();
for i:integer:=1 to 15 do begin
write(sk[i,j]);
end;
end;
numberImput:=0;
line:=line+1;
end;
writeln('перимитер равен ',P,'см');
end.