<u><em>Задача 1.</em></u>
const
n=30;
var
a,b:array[1..n] of integer;
i,j,k:integer;
begin
{ самое сложное - создать такой массив,
где положительные и отрицательные элементы будут случайно
перемешаны и их будет по n/2.
Если организовать ввод с клавиатуры, то это гораздо проще.
}
Randomize;
{ инициализация "флажком" - значением 1000 }
for i:=1 to n do a[i]:=1000;
{ сначала генерируем n/2 случайных отрицательных на случайных местах }
for i:=1 to (n div 2) do
begin
k:=Random(50)-50; { случайное отрицательное значение }
{ а теперь ищем случайное свободное место }
repeat
j:=Random(30)+1
until a[j]=1000;
a[j]:=k
end;
{ теперь осталось сгенерировать n/2 случайных положительных чисел
и разместить их на свободных местах }
for i:=1 to (n div 2) do
begin
k:=Random(50)+1; { случайное положительное значение }
{ а теперь ищем свободное место }
j:=0;
repeat
Inc(j)
until a[j]=1000;
a[j]:=k
end;
{ и только отсюда начинается собственно задание }
Writeln('Исходный массив');
for i:=1 to n do Write(a[i]:4);
Writeln;
{ j - количество обработанных отрицательных,
k - количество положительных,
а массив строим так, что отрицательные элементы на нечетных местах }
if a[1]<0 then begin b[1]:=a[1]; j:=1; k:=0 end
else begin b[2]:=a[1]; j:=0; k:=1 end;
for i:=2 to n do
if a[i]<0 then
begin Inc(j); b[2*j-1]:=a[i] end
else begin Inc(k); b[2*k]:=a[i] end;
Writeln('Результирующий массив');
for i:=1 to n do Write(b[i]:4);
Writeln
end.
<em><u>Тестовое решение:</u></em>
Исходный массив
43 44 34 21 14 -26 32 35 -25 -8 42 -35 -37 12 45 -25 31 8 -16 -5 8 -25 -19 -15 -27 -16 12 26 -14 -41
Результирующий массив
-26 43 -25 44 -8 34 -35 21 -37 14 -25 32 -16 35 -5 42 -25 12 -19 45 -15 31 -27 8 -16 8 -14 12 -41 26
Делите последовательно на 2 и остаток от деления записываете справа налево - получаете двоичное представление числа
40(10) 40/2=20 - остаток = 0
20/2=10 - остаток = 0
10/2=5 - остаток =0
5/2 =2 , остаток = 1
2/2=1 остаток =0
1
если после последнего деления результат меньше 2
то частное записываем в представление
получили биты: 101000 - это и есть двоичное представление числа 40(10)
для числа 8
8/2=4 - остаток 0
4/2 =2 - остаток 0
2/2=1
двоичное представление числа 8(10) 100(2)
так же вычисляете для 54(10) и 9(10)
9(10) = 8(10) + 1 = 100(2) + 1 = 101(2)
54/2=27 ->0
27/2=13 ->1
13/2=6 ->1
6/2=3 -> 0
3/2=1 -> 1
-> 1
двоичное представление числа 54(10)
110110(2) = 54(10)
110110 = 2(в пятой)+2(в четвертой) +2(во второй)+
2(в первой) степенях =32+16+4+2=48+6=54
1.
5|10|19|12
диск
2.
64*32*10=20480
65536=2^16
16*20480=327680/8=40960КБ
3.
1280*1024=1310720
32=2^5
1310720*5=65513600Б
Var Ax,Ay,Ox,Oy,R:real;
Begin
WriteLn('Точка А:');
Write(' x = ');ReadLn(Ax);
Write(' y = ');ReadLn(Ay);
WriteLn('Центр окружности:');
Write(' x = ');ReadLn(Ox);
Write(' y = ');ReadLn(Oy);
Write('Радиус окружности: ');ReadLn(R);
if sqr(Ax-Ox)+Sqr(Ay-Oy) < R*R then WriteLn('Точка лежит внутри окружности')
else if sqr(Ax-Ox)+Sqr(Ay-Oy) = R*R then WriteLn('Точка лежит на окружности')
else WriteLn('Точка находится вне окружности')
End.
Var
Ax,Ay,Bx,By,Cx,Cy,AB,BC,CA:real;
Begin
WriteLn('Координаты первой вершины');
Write(' x = ');ReadLn(Ax);
Write(' y = ');ReadLn(Ay);
WriteLn('Координаты второй вершины');
Write(' x = ');ReadLn(Bx);
Write(' y = ');ReadLn(By);
WriteLn('Координаты третьей вершины');
Write(' x = ');ReadLn(Cx);
Write(' y = ');ReadLn(Cy);
AB:=Sqr(Ax-Bx)+Sqr(Ay-By);
BC:=Sqr(Bx-Cx)+Sqr(By-Cy);
CA:=Sqr(Cx-Ax)+Sqr(Cy-Ay);
if (AB+BC=CA)or(BC+CA=AB)or(CA+AB=BC) then WriteLn('Треугольник - прямоугольный')
else WriteLn('Данный треугольник не является прямоугольным')
End.