Нужны истинные программисты pascal! pascal находит ошибку там, где её нет: в большой программе он находит ошибку, а если скопировать и отдельно проверить эту часть программы она хорошо работает!
вот эта часть программы:
var a,d: array [0..100] of string; b,i,j,l: integer; t: text; g,p,k: string; x,h,e: boolean;
begin
for i: =1 to 100 do begin
g: =a[i];
for j: =1 to length(g) do if g[j]='h' then break;
if g[j]='h' then break;
end;
writeln('x=',j,' y=',i);
end.
здесь, если внести необходимые данные, то программа будет работать, но, если обратиться к основной - то не будет.
вот вся программа:
program keygame; {p-пустая клетка; #-запертая решётка; @-выход; & -ключ; ^> v< -шипы(вверх вправо вниз влево); *-стена; $-магазин; /\-зеркала; h-герой; o-камень; -|-транспорт; %-динамит}
var a,d: array [0..100] of string; b,i,j,l: integer; t: text; g,p,k: string; x,h,e: boolean;
begin
writeln('1.play');
writeln('2.level editor (do not work)');
readln(b);
case b of
1: begin
writeln('choose level: ');
writeln('1.level1');
writeln('1.level2');
writeln('1.level3');
writeln('1.level4');
writeln('1.level5');
readln(b);
case b of
1: begin
assign(t, 'c: \pabcwork.net\myprograms\games\keygame\level1.txt');
reset(t);
for i: =2 to 100 do begin
readln(t,a[i]);
if a[i]=p then break;
end;
close(t);
end;
end;
for i: =1 to 100 do d[i]: =a[i];
for i: =1 to 100 do begin
g: =d[i];
l: =length(g);
for j: =1 to l do begin
if g[j]='p' then g[j]: =' ';
if g[j]='-' then g[j]: ='▬';
if g[j]='|' then g[j]: ='│';
if g[j]='v' then g[j]: ='▼';
if g[j]='^' then g[j]: ='▲';
if g[j]='< ' then g[j]: ='◄';
if g[j]='> ' then g[j]: ='►';
if g[j]='*' then g[j]: ='▓';
if g[j]='h' then g[j]: ='☺';
end;
d[i]: =g;
end;
for i: =1 to 100 do begin
if d[i]< > p then writeln(d[i]);
end;
for i: =1 to 100 do begin
if a[i]< > p then writeln(a[i]);
end;
h: =true; e: =true;
while (h=true) or (e=true) do begin;
x: =true;
b: =0;
while < 10) and (b> 0)) or ((b< 60) and (b> and (b mod 2=0) do begin
writeln('move: ');
writeln('8-up, 2-down, 4-left, 6-right');
writeln('fire: ');
writeln('58-up, 52-down, 54-left, 56-right');
readln(b);
end;
case b of
2: begin
for i: =1 to 100 do begin
g: =a[i];
for j: =1 to length(g) do if g[j]='h' then break;
writeln('x=',j,' y=',i);
if g[j]='h' then break;
end;
end;
4: begin
end;
6: begin
end;
8: begin
end;
52: begin
end;
54: begin
end;
56: begin
end;
58: begin
end;
end;
end;
end;
end;
end.
душу, считайте, вам открыл.
Program z1;Var a,b,c,d,k:integer;BeginWriteln('Введите трехзначное число');REadln(a);While a<>0 do beginWriteln('Введите трехзначное число');REadln(a);b:=a div 100 mod 10;c:=a div 10 mod 10;d:=a mod 10;if b+c+d div 10 >0 then writeln('Сумма цифр- двузначное число') else writeln ('Нет, сумма цифр не двузначное число');if b*C*D div 100 >0 then writeln('Произведение цифр- терхзначное число') else writeln ('Нет, произведение цифр не трехзначное число число');Writeln ('Введите любое число');Readln (k);If b*c*d>k then writeln('Произведение цифр больше числа') else writeln('Произведение меньше числа');if B+c+d div 5 =0 then writeln('Сумма цифр числа кратна 5') else writeln ('Сумма цифр не кратна 5');if B+c+d div k =0 then writeln('Сумма цифр числа кратна числу, введенному с клавиатуры') else writeln ('Сумма цифр не кратна числу, введенному с клавиатуры');End;End.
Есть маленькая проблема в начале, не помню как прописывать, поэтому число первый раз нужно вводить 2 раза, если не устраевает, можете воспользоваться другими ресурсами
n=10;m=7;
var
a:array[1..n,1..m]of integer;
flag,i,j,b:integer;
begin
for i:=1 to n do
begin
writeln;
for j:=1 to m do
begin
a[i,j]:=random(312)-111;
write(a[i,j]:4);
end;
end;
writeln;
Writeln('B ?');
readln(b);
for i:=1 to n do
for j:=1 to m do
if a[i,j]=b then
flag:=1;
if flag=1 then
writeln('Yes')
else
writeln('N');
end.
вариант 2
const
n=10;m=7;
var
a:array[1..n,1..m]of integer;
k,i,j,b:integer;
begin
for i:=1 to n do
begin
writeln;
for j:=1 to m do
begin
a[i,j]:=random(312)-111;
write(a[i,j]:4);
end;
end;
writeln;
Writeln('B ?');
readln(b);
for i:=1 to n do
for j:=1 to m do
if a[i,j]=b then
k:=k+1;
if k<>0 then
writeln('Yes')
else
writeln('N');
end.