На бесконечном поле есть горизонтальная и вертикальная стены. Правый конец горизонтальной стены соединён с верхним концом вертикальной стены. Длины стен неизвестны. В каждой стене есть ровно один проход, точное место прохода и его ширина неизвестны. Робот находится в клетке, расположенной непосредственно в углу под горизонтальной стеной и слева от вертикальной стены. Напишите для Робота алгоритм, закрашивающий все клетки, расположенные непосредственно ниже горизонтальной стены и левее вертикальной стены, кроме клетки, в которой находится Робот перед выполнением программы.
var a, b, c, i, j, n, ch:integer; s, p:array [1..10000] of integer; begin n:=30; for i:=1 to n do s[i]:=random(64000)-32000; writeln('Данный массив'); for i:=1 to n do write (s[i],' '); a:=s[1]; for i:=1 to n do if s[i]>a then a:=s[i]; for i:=1 to n do if s[i]=a then begin j:=j+1; p[j]:=i; end; c:=j; writeln; writeln('Полученный массив'); for i:=1 to n do begin ch:=0; for j:=1 to c do if i=p[j] then inc(ch); if ch=0 then write (s[i],' '); end; end. P.S. Надеюсь на благодарность и лучший ответ.
А) берём 2 из трёх монет и взвешиваем их:если монеты весят одинаково, следовательно оставшаяся монета-лишняя, если одна монета легче другой, следовательно она фальшивая б) на каждую чашу весов ложим по две монеты. берём монеты с той чаши, которая легче и взвешиваем монеты-та что легче и есть фальшивая. г)на каждую чашу ложим по три монеты. чаша с фальшивой монетой окажется легче. а дальше как под (а) берём 2 из трёх монет и взвешиваем их:если монеты весят одинаково, следовательно оставшаяся монета-лишняя, если одна монета легче другой, следовательно она фальшивая) в)ложим на каждую чашу весов по 2 монеты. если монеты весят одинаково, то оставшаяся монета-лишняя, если одна чаша легче, то взвешиваем монеты, лежащие на ней , та монета что легче-фальшивая. (тут всё ок)
s, p:array [1..10000] of integer;
begin
n:=30;
for i:=1 to n do
s[i]:=random(64000)-32000;
writeln('Данный массив');
for i:=1 to n do
write (s[i],' ');
a:=s[1];
for i:=1 to n do
if s[i]>a then
a:=s[i];
for i:=1 to n do
if s[i]=a then
begin
j:=j+1;
p[j]:=i;
end;
c:=j;
writeln;
writeln('Полученный массив');
for i:=1 to n do
begin
ch:=0;
for j:=1 to c do
if i=p[j] then inc(ch);
if ch=0 then write (s[i],' ');
end;
end.
P.S. Надеюсь на благодарность и лучший ответ.
б) на каждую чашу весов ложим по две монеты. берём монеты с той чаши, которая легче и взвешиваем монеты-та что легче и есть фальшивая.
г)на каждую чашу ложим по три монеты. чаша с фальшивой монетой окажется легче. а дальше как под (а) берём 2 из трёх монет и взвешиваем их:если монеты весят одинаково, следовательно оставшаяся монета-лишняя, если одна монета легче другой, следовательно она фальшивая)
в)ложим на каждую чашу весов по 2 монеты. если монеты весят одинаково, то оставшаяся монета-лишняя, если одна чаша легче, то взвешиваем монеты, лежащие на ней , та монета что легче-фальшивая. (тут всё ок)