письменно) ——————— Создайте структуру базы данных "Картинная галерея", содержащую сведения о полотнах выдающихся художников.
Ход работы:
1)Создайте структуру новой базы данных. 2)Создайте таблицу. 3)Определите входящие в таблицу поля. 4)Задайте ключевое поле. 5)Задайте имя таблице. 6)Заполните таблицу данными.
const n = 5; var a: array [1..n] of integer; i,k,x,l: integer; t: boolean; begin for i := 1 to n do read(a[i]); k := 0; for i := 1 to n do begin t := true; x := a[i]; if x < 0 then x := -x; l := 1; while l <= x do l := l*2; l := l div 2; while t and (l > 1) do begin t := x >= l; if t then x := x - l; t := t = (x mod 2 <> 0); x := x div 2; l := l div 4; end; if t then k := k + 1 end; write(k) end.
{2}
const n = 10; var a,d: array [1..n] of integer; i,j,k: integer; begin for i := 1 to n do a[i] := 100 + random(900); for i := 1 to n do begin d[i] := 0; for j := 1 to a[i] do if a[i] mod j = 0 then d[i] := d[i] + 1; end; for i := 1 to n-1 do begin k := i; for j := i + 1 to n do if d[j] < d[k] then k := j; j := a[k]; a[k] := a[i]; a[i] := j; j := d[k]; d[k] := d[i]; d[i] := j; end; for i := 1 to n do write(a[i],' ') end.
{3}
const n = 10; l = 3; var a: array [1..n] of integer; m: array [1..l] of integer; i,j,k: integer; begin for i := 1 to n do begin a[i] := random(1001); write(a[i],' ') end; writeln; for i := 1 to l do m[i] := -1; for i := 1 to n do begin j := 1; while j <= l do begin if (a[i] = m[j]) then j := l else if (a[i] < m[j]) or (m[j] = -1) then begin for k := l downto j+1 do m[k] := m[k-1]; m[j] := a[i]; j := l end; j := j + 1 end; end; for i := 1 to l do if m[i] <> -1 then write(m[i],' ') end.
Сложение чисел в двоичной системе можно выполнять столбиком, как в десятичной системе (и по правилам её арифметики), но при этом если в десятичной перенос в следующий разряд происходил при сумме по разряду больше или равной десяти, то в двоичной- при сумме больше или равной двум. Из этой суммы мы вычитаем двойки (обычно одну двойку), и остаток (ноль или единицу) записываем в текущий разряд, а к следующему разряду прибавляем число, равное количеству двоек, которое мы вычли (обычно, один, если складываем только два числа). Таким образом можно складывать не только два двоичных числа, а сколько угодно одновременно.
100110 + 10011
111001
1100111 + 10001
1111000
1101 +100101
110010
111001 + 11001
1010010 Про этот пример напишу подробно, как суммировал по разрядам: 1-ый разряд (разряд единиц): 1 + 1 = 2 т.к. в разряд можно записать число не больше единицы, то вычитаем из этой суммы максимальное количество двоек (здесь- одну двойку): 2 - 1*2 = 2 - 2 = 0 (этот ноль мы запишем в первый разряд ответа)
2-ой разряд: 0 + 0 +(1) = 1 (записываем во второй разряд ответа) Единица в скобках- это количество двоек (одна), которое мы вычитали из суммы по предыдущему разряду (то есть, эту единицу перенесли из предыдущего разряда, так как он переполнился)
7-ой разряд: В слагаемых нет седьмого разряда, но мы его добавили в сумму, чтобы перенести в него единицу из предыдущего разряда (складывать её не с чем, поэтому я просто напишу такое равенство): (1) = 1 (записываем в седьмой разряд ответа)
Так как далее переносить ничего не надо, то это был последний разряд, мы получили нашу сумму (перенос на несколько разрядом может возникнуть только если складываем три и более слагаемых).
1101001 + 110010
10011011
100010 - 10011
1111 Разность можно считать так же как сумму, только меняем все знаки (минус на плюс, а плюс на минус). Напишу про этот пример подробнее: 1-ый разряд: 0 - 1 = -1 Так как записывать отрицательное число в разряд мы не можем, до прибавляем к этой разности нужное число двоек, чтобы получить положительный результат, или ноль: -1 + 1*2 = -1 + 2 = 1 (записываем в первый разряд ответа)
2-ой разряд: 1 - 1 - (1) = 0 - 1 = -1 Единица в скобках- это количество двоек (одна), которое мы прибавили к разности в предыдущем разряде (то есть, эту единицу мы заняли из второго разряда, когда считали разность в первом) -1 + 1*2 = -1 + 2 = 1 (записываем в ответ)
6-ой разряд: 1 - (1) = 0 Более разрядов в исходных числах нет. В ответ запишем все вычисленные разряды, кроме двух незначащих нулей, идущих вначале ответа (шестой и пятый разряды).
const
n = 5;
var
a: array [1..n] of integer;
i,k,x,l: integer;
t: boolean;
begin
for i := 1 to n do read(a[i]);
k := 0;
for i := 1 to n do
begin
t := true;
x := a[i]; if x < 0 then x := -x;
l := 1;
while l <= x do l := l*2; l := l div 2;
while t and (l > 1) do
begin
t := x >= l;
if t then x := x - l;
t := t = (x mod 2 <> 0);
x := x div 2;
l := l div 4;
end;
if t then k := k + 1
end;
write(k)
end.
{2}
const
n = 10;
var
a,d: array [1..n] of integer;
i,j,k: integer;
begin
for i := 1 to n do
a[i] := 100 + random(900);
for i := 1 to n do
begin
d[i] := 0;
for j := 1 to a[i] do
if a[i] mod j = 0 then
d[i] := d[i] + 1;
end;
for i := 1 to n-1 do
begin
k := i;
for j := i + 1 to n do
if d[j] < d[k] then k := j;
j := a[k];
a[k] := a[i];
a[i] := j;
j := d[k];
d[k] := d[i];
d[i] := j;
end;
for i := 1 to n do
write(a[i],' ')
end.
{3}
const
n = 10;
l = 3;
var
a: array [1..n] of integer;
m: array [1..l] of integer;
i,j,k: integer;
begin
for i := 1 to n do
begin
a[i] := random(1001);
write(a[i],' ')
end;
writeln;
for i := 1 to l do
m[i] := -1;
for i := 1 to n do
begin
j := 1;
while j <= l do
begin
if (a[i] = m[j]) then j := l else
if (a[i] < m[j]) or (m[j] = -1) then
begin
for k := l downto j+1 do
m[k] := m[k-1];
m[j] := a[i];
j := l
end;
j := j + 1
end;
end;
for i := 1 to l do
if m[i] <> -1 then write(m[i],' ')
end.
Из этой суммы мы вычитаем двойки (обычно одну двойку), и остаток (ноль или единицу) записываем в текущий разряд, а к следующему разряду прибавляем число, равное количеству двоек, которое мы вычли (обычно, один, если складываем только два числа).
Таким образом можно складывать не только два двоичных числа, а сколько угодно одновременно.
100110
+ 10011
111001
1100111
+ 10001
1111000
1101
+100101
110010
111001
+ 11001
1010010
Про этот пример напишу подробно, как суммировал по разрядам:
1-ый разряд (разряд единиц):
1 + 1 = 2
т.к. в разряд можно записать число не больше единицы, то вычитаем из этой суммы максимальное количество двоек (здесь- одну двойку):
2 - 1*2 = 2 - 2 = 0 (этот ноль мы запишем в первый разряд ответа)
2-ой разряд:
0 + 0 +(1) = 1 (записываем во второй разряд ответа)
Единица в скобках- это количество двоек (одна), которое мы вычитали из суммы по предыдущему разряду (то есть, эту единицу перенесли из предыдущего разряда, так как он переполнился)
3-ий разряд:
0 + 0 = 0 (записываем в ответ)
4-ый разряд:
1 + 1 = 2
2 - 1*2 = 2 - 2 = 0 (записываем в ответ)
5-ый разряд:
1 + 1 + (1) = 3
3 - 1*2 = 3 - 2 = 1 (записываем в ответ)
6-ой разряд:
1 + (1) = 2
2 - 1*2 = 2 - 2 = 0 (записываем в ответ)
7-ой разряд:
В слагаемых нет седьмого разряда, но мы его добавили в сумму, чтобы перенести в него единицу из предыдущего разряда (складывать её не с чем, поэтому я просто напишу такое равенство):
(1) = 1 (записываем в седьмой разряд ответа)
Так как далее переносить ничего не надо, то это был последний разряд, мы получили нашу сумму (перенос на несколько разрядом может возникнуть только если складываем три и более слагаемых).
1101001
+ 110010
10011011
100010
- 10011
1111
Разность можно считать так же как сумму, только меняем все знаки (минус на плюс, а плюс на минус). Напишу про этот пример подробнее:
1-ый разряд:
0 - 1 = -1
Так как записывать отрицательное число в разряд мы не можем, до прибавляем к этой разности нужное число двоек, чтобы получить положительный результат, или ноль:
-1 + 1*2 = -1 + 2 = 1 (записываем в первый разряд ответа)
2-ой разряд:
1 - 1 - (1) = 0 - 1 = -1
Единица в скобках- это количество двоек (одна), которое мы прибавили к разности в предыдущем разряде (то есть, эту единицу мы заняли из второго разряда, когда считали разность в первом)
-1 + 1*2 = -1 + 2 = 1 (записываем в ответ)
3-ий разряд:
0 - 0 - (1) = -1
-1 + 1*2 = -1 + 2 = 1 (записываем в ответ)
4-ый разряд:
0 - 0 - (1) = -1
-1 + 1*2 = -1 + 2 = 1 (записываем в ответ)
5-ый разряд:
0 - 1 - (1) = -2
-2 + 1*2 = -2 + 2 = 0
6-ой разряд:
1 - (1) = 0
Более разрядов в исходных числах нет. В ответ запишем все вычисленные разряды, кроме двух незначащих нулей, идущих вначале ответа (шестой и пятый разряды).
11010011
- 11111
10110100
11101
- 1011
10010