Інформатика.Будь ласка іть. Створити вікно програми з певним малюнком (обрати на власний смак) використовуючи команди модуля turtle. Можна доповнити програму кнопками, за до модуля tkinter.
Там целая история... проще на калькуляторе, а если так то приравнивая к десятичной системе счисления, выбором остатков.. . Вычитание двоичных чисел. Вычитать числа, будем также столбиком и общее правило тоже, что и для десятичных чисел, вычитание выполняется поразрядно и если в разряде не хватает единицы, то она занимается в старшем. Решим следующий пример: 1101 - 110 = 111
Первый разряд. 1 - 0 =1. Записываем 1.
Второй разряд 0 -1. Не хватает единицы. Занимаем её в старшем разряде. Единица из старшего разряда переходит в младший, как две единицы (потому что старший разряд представляется двойкой большей степени ) 2-1 =1. Записываем 1.
Третий разряд. Единицу этого разряда мы занимали, поэтому сейчас в разряде 0 и есть необходимость занять единицу старшего разряда. 2-1 =1. Записываем 1.
Проверим результат в десятичной системе
1101 - 110 = 13 - 6 = 7 (111) Верное равенство.
Еще один интересный выполнения вычитания связан с понятием дополнительного кода, который позволяет свести вычитание к сложению. Получается число в дополнительном коде исключительно просто, берём число, заменяем нули на единицы, единицы наоборот заменяем на нули и к младшему разряду добавляем единицу. Например, 10010, в дополнительном коде будет 011011.
Правило вычитания через дополнительный код утверждает, что вычитание можно заменить на сложение если вычитаемое заменить на число в дополнительном коде.
Пример: 34 - 22 = 12
Запишем этот пример в двоичном виде. 100010 - 10110 = 1100
Дополнительный код числа 10110 будет такой
01001 + 00001 = 01010. Тогда исходный пример можно заменить сложением так 100010 + 01010 = 101100 Далее необходимо отбросить одну единицу в старшем разряде. Если это сделать то, получим 001100. Отбросим незначащие нули и получим 1100, то есть пример решён правильно
Uses crt;var ADR:array[1..10] of string; sub:array[1..10] of string; i,k:integer; s:string; begin; for i:=1 to 10 do begin; writeln('Input town of ',i,'student'); readln(s); ADR[i]:=ADR[i]+s+' '; writeln('Input street of ',i,'student'); readln(s); ADR[i]:=ADR[i]+s+' '; writeln('Input house of ',i,'student'); readln(s); ADR[i]:=ADR[i]+s+' '; writeln('Input apartament of ',i,'student'); readln(s); ADR[i]:=ADR[i]+s; if pos('Краснодар',ADR[i])<>0 then begin; inc(k); sub[k]:=ADR[i]; end; end; TextColor(4); writeln('Result:'); for i:=1 to k do writeln(sub[i]); end.
Вычитание двоичных чисел. Вычитать числа, будем также столбиком и общее правило тоже, что и для десятичных чисел, вычитание выполняется поразрядно и если в разряде не хватает единицы, то она занимается в старшем. Решим следующий пример:
1101
-
110
=
111
Первый разряд. 1 - 0 =1. Записываем 1.
Второй разряд 0 -1. Не хватает единицы. Занимаем её в старшем разряде. Единица из старшего разряда переходит в младший, как две единицы (потому что старший разряд представляется двойкой большей степени ) 2-1 =1. Записываем 1.
Третий разряд. Единицу этого разряда мы занимали, поэтому сейчас в разряде 0 и есть необходимость занять единицу старшего разряда. 2-1 =1. Записываем 1.
Проверим результат в десятичной системе
1101 - 110 = 13 - 6 = 7 (111) Верное равенство.
Еще один интересный выполнения вычитания связан с понятием дополнительного кода, который позволяет свести вычитание к сложению. Получается число в дополнительном коде исключительно просто, берём число, заменяем нули на единицы, единицы наоборот заменяем на нули и к младшему разряду добавляем единицу. Например, 10010, в дополнительном коде будет 011011.
Правило вычитания через дополнительный код утверждает, что вычитание можно заменить на сложение если вычитаемое заменить на число в дополнительном коде.
Пример: 34 - 22 = 12
Запишем этот пример в двоичном виде. 100010 - 10110 = 1100
Дополнительный код числа 10110 будет такой
01001 + 00001 = 01010. Тогда исходный пример можно заменить сложением так 100010 + 01010 = 101100 Далее необходимо отбросить одну единицу в старшем разряде. Если это сделать то, получим 001100. Отбросим незначащие нули и получим 1100, то есть пример решён правильно
sub:array[1..10] of string;
i,k:integer;
s:string;
begin;
for i:=1 to 10 do
begin;
writeln('Input town of ',i,'student');
readln(s);
ADR[i]:=ADR[i]+s+' ';
writeln('Input street of ',i,'student');
readln(s);
ADR[i]:=ADR[i]+s+' ';
writeln('Input house of ',i,'student');
readln(s);
ADR[i]:=ADR[i]+s+' ';
writeln('Input apartament of ',i,'student');
readln(s);
ADR[i]:=ADR[i]+s;
if pos('Краснодар',ADR[i])<>0 then
begin;
inc(k);
sub[k]:=ADR[i];
end;
end;
TextColor(4);
writeln('Result:');
for i:=1 to k do
writeln(sub[i]);
end.