Ибрагимова Лариса Фларидовна, 452206, Чекмагушевский район, с. Старокалмашево, ул. Нефтяников, 1А, МБОУ-СОШ с.Старокалмашево Электронная почта: aidy10@rambler.ru Задание 1 Разработайте программу, которая формирует таблицу 10 на 10, заполняет ее случайными числами и сортирует по строкам. program Project2; {$APPTYPE CONSOLE} uses SysUtils; const infile='input.txt'; outfile ='output.txt'; var n,i,min,k,r,j:integer; x:array [1.. 10,1..10] of integer; begin assign (input,infile); reset (input); assign (output,outfile); rewrite (output); Randomize; for i:=1 to 10 do for j:=1 to 10 do x[i,j]:=Random(1000)+1;{Создаем массив случайных чисел} for i:=1 to 10 do for j:=1 to 9 do for n:=j+1 to 10 do if x[i,j]>x[i,n] then begin min:=x[i,j]; {Упорядочиваем строку методом пузырька} x[i,j]:=x[i,n]; x[i,n]:=min; end; for i:=1 to 10 do begin for j:=1 to 10 do write (x[i,j]:4); writeln ; end; close (input); close (output); end. Задание 2 Разработайте программу, которая формирует таблицу 10 на 10, заполняет ее случайными числами и сортирует по столбцам. program Project2; {$APPTYPE CONSOLE} uses SysUtils; const infile='input.txt'; outfile ='output.txt'; var n,i,min,k,r,j:integer; x:array [1.. 10,1..10] of integer; begin assign (input,infile); reset (input); assign (output,outfile); rewrite (output); Randomize; for i:=1 to 10 do for j:=1 to 10 do x[i,j]:=Random(1000)+1;{Создаем массив случайных чисел} for j:=1 to 10 do for i:=1 to 9 do for n:=i+1 to 10 do if x[i,j]>x[n,j] then begin min:=x[i,j]; {Упорядочиваем столбец методом пузырька} x[i,j]:=x[n,j]; x[n,j]:=min; end; for i:=1 to 10 do begin for j:=1 to 10 do write (x[i,j]:4); writeln ; end; close (input); close (output); end. Задание 3 Разработайте программу, которая формирует таблицу 10 на 10, заполняет ее случайными числами и находит наибольшие четные значения в каждом столбце. program Project2; {$APPTYPE CONSOLE} uses SysUtils; const infile='input.txt'; outfile ='output.txt'; var n,i,min,k,r,j:integer; x:array [1.. 4,1..4] of integer; max:array [1..4] of integer; begin assign (input,infile); reset (input); assign (output,outfile); rewrite (output); Randomize; for i:=1 to 10 do begin for j:=1 to 10 do begin x[i,j]:=Random(100)+1; {Создаем массив случайных чисел} write (x[i,j]:3);end; writeln;end; for j:=1 to 10 do begin if x [1,j] mod 2 =0 then max[j]:=x[1,j]; for i:=1 to 10 do {ищем наибольшее четное число} if (max[j]< x[i,j]) and (x[i,j] mod 2=0) then max[j]:=x[i,j]; end; Write ('Наибольшее четное число в каждом столбце ='); for i:=1 to 10 do begin write (max[i]:3) end; close (input); close (output); end. Задание 4 Разработайте программу для кодирования последовательности из N символов, которая использует неравномерный минимальный двоичный код, позволяющий однозначно декодировать полученную двоичную последовательность. program Project2; {$APPTYPE CONSOLE} uses SysUtils; const infile='input.txt'; outfile ='output.txt'; var i:integer; A,B,C,D,E,F,n,s1:string; begin assign (input,infile); reset (input); assign (output,outfile); rewrite (output); A:='000'; {коды букв} B:='10'; C:='01'; D:='110'; E:= '001'; readln (n); for i:=1 to length (n) div 2 do begin s1:=copy ( n, 1, 2);{декодируем двоичную последовательность} if C=s1 then begin write ( 'C'); delete (n, 1,2);end else if B=s1 then begin write ('B'); delete (n, 1,2);end else begin s1:= copy ( n,1,3); if s1=A then begin write ('A'); delete (n, 1,3);end else if s1 =D then begin write ('D');delete (n, 1,3);end else if s1=E then begin write ('E');delete (n, 1,3); end end; end; close( input);close(output); end. Задание 5 Разработайте программу, которая по четырехбайтовому IP-адресу узла и IP-адресу маски подсети вычисляет сетевой адрес. program Project21; {$APPTYPE CONSOLE} uses SysUtils; const infile='input.txt'; outfile ='output.txt'; var i,j,f,o,y,r,x1,x32,l:integer; m,s,e: array [1..8] of integer; a,h,b:array [1..4] of integer; function up( ol,om :integer): integer; {возводим число во 2 степень} var el,si : integer; begin si:=1; for el:=1 to ol do si:=si*om; up:=si;end; begin assign (input,infile); reset (input); assign (output,outfile); rewrite (output); for o:=1 to 4 do read (a[o]) ; {ввод IP-адреса} for o:=1 to 4 do read (b[o]); {ввод маски} for o:=1 to 4 do begin for i:=1 to 8 do {числа переводим в двоичную систему} begin m[i]:=a[o] mod 2; a[o]:=a[o] div 2; end; for r:=1 to 8 do begin e[r]:=b[o] mod 2; b[o]:=b[o] div 2; end; for r:=1 to 8 do begin s[r]:=m[r]*e[r]; j:=r-1; h[o]:=s[r]*up(j , 2)+h[o]; end; end; for o:=1 to 4 do write (h[o],' '); close (input); close (output); end. Задание 6 Разработайте программу для выдачи денег банкоматом по заданной клиентом сумме денег M кратной 50 рублям и наличию в банкомате X1 купюр по 50 рублей, X2 купюр по 100 рублей, X3 купюр по 1000 рублей, X4 купюр по 5000 рублей. Известно, что максимальная сумма для выдачи M не превышает 50000 рублей, минимальная сумма выдачи денег 50 рублей. После каждой выдачи денег, программа подсчитывает минимально возможные количества купюр X1, X2, X3, X4 и выдает сообщение "Банкомат временно не работает" в случае нехватки купюр для следующей выдачи денег по указанным условиям. Программа выполняет сначала учет ввода денег в банкомат для выдачи, а затем выдачу произвольных сумм клиентам банка. var M,x1,x2,x3,x4,r1,r2,r3,r4,k1,k2,k3,k4,a:integer; begin M:=50000; X1:=50;X2:=100;X3:=1000;X4:= 5000; r4:=4;r3:=10;r2:=100;r1:=200; {количество купюр} While M<>0 do begin Write ('Введите сумму: '); readln (a); k1:=0;k2:=0; k3:=0;k4:=0; {количество выданных купюр } if M-a>=0 then begin M:=m-a; if r4>0 then while a-x4>=0 do begin a:=a-x4;k4:=k4+1; r4:=r4-1; end; if r3>0 then while a-x3>=0 do begin a:=a-x3;k3:=k3+1; r3:=r3-1; end; if r2>0 then while a-x2>=0 do begin a:=a-x2;k2:=k2+1; r2:=r2-1; end; if r1>0 then while a-x1>=0 do begin a:=a-x1; k1:=k1+1; r1:=r1-1; end; end else writeln ('Банкомат временно не работает'); writeln ('Купюр по 5000 выдал = ',k4); writeln('Купюр по 1000 выдал = ',k3); writeln('Купюр по 100 выдал = ',k2); writeln('Купюр по 50 выдал = ',k1);end;end. Задание 7 Представим себе бесконечную последовательность цифр, составленную из записанных друг за другом возрастающих степеней десятки. Вот начало этой последовательности: 110100100010000… Всё, что надо — определить, какая цифра находится в такой последовательности на определённом месте. Исходные данные В первой строке находится целое число N (1 ≤ N ≤ 65535). В i-й из N последующих строк записано целое число Ki — номер позиции в последовательности (1 ≤ Ki ≤ 231 − 1). Результат Выведите через пробел N цифр. i-я цифра должна равняться цифре, которая находится в описанной выше последовательности на позиции с номером Ki. Пример исходные данные 4 3 14 7 6 program Project2; {$APPTYPE CONSOLE} uses SysUtils; const infile='input.txt'; outfile ='output.txt'; var N,b,r,u,i:integer; x:array [1.. 4,1..4] of integer; max:array [1..4] of integer; begin assign (input,infile); reset (input); assign (output,outfile); rewrite (output); readln(N); for i:=1 to N do begin readln(b); if b=1 then write ('1',' ') else begin u:=1; r:=1; repeat {1 находится в определенном позиции} u:=u+r; r:=r+1; until b-u<=0; if b=u then write ('1',' ') else write('0',' '); end; end; close (input); close (output); end. результат 0 0 1 0 Задание 8 Условие этой задачи очень простое: вам всего лишь надо определить, сколько клеток находится под боем шахматного коня, одиноко стоящего на шахматной доске. На всякий случай напомним, что конь ходит буквой «Г» — на две клетки по горизонтали или вертикали в любом направлении, и потом на одну клетку в направлении, перпендикулярном первоначальному. Исходные данные В первой строке находится единственное число N, 1 ≤ N ≤ 100 — количество тестов. В каждой из последующих Nстрок содержится очередной тест: два символа (маленькая латинская буква от 'a' до 'h' и цифра от 1 до 8) — стандартное шахматное обозначение клетки, на которой стоит конь. При этом буква обозначает вертикаль, а цифра — горизонталь. Результат Выведите N строк: в каждой из них должно находиться единственное число — количество клеток шахматной доски, находящихся под боем коня. Пример исходные данные результат 3 2 a1 8 d4 6 g6 program Project2; {$APPTYPE CONSOLE} uses SysUtils; const rx: array[1..8] of integer=(1, 2, 2, 1,-1,-2,-2,-1);{ходы шахматного коня} ry: array[1..8] of integer=(2, 1,-1,-2,-2,-1, 1, 2); infile='input.txt'; outfile ='output.txt'; var i, j, x, y, n, s: integer; e: char; begin assign (input,infile); reset (input); assign (output,outfile); rewrite (output); readln (n); for i:=1 to n do begin read (e); x:=1+ord(e)-ord('a'); {дает положения коня по горизонтали} readln (e); y:=1+ord(e)-ord('1'); { дает положения коня по вертикали} s:=0; for j:=1 to 8 do if ((x+rx[j]) in [1..8]) and ((y+ry[j]) in [1..8]) then s:=s+1; writeln (s); end; close (input); close (output); end.