Сначала посмотрим, какое из чисел больше. Как в обычной арифметике: если вдруг надо вычесть из меньшего большее, мы вычитаем из большего меньшее и ставим в ответе знак минус. Требуется сделать вычитание (группировка разрядов по 4 сделана для удобства чтения): 111 0001 1011 - 101 0011 0101
Тут все хорошо, из большего вычитается меньшее. Вычитаем "в столбик", как обычные числа, но помним, что система счисления двоичная, поэтому когда из 0 вычитается единица, то мы "занимаем единичку" у старшего разряда, уменьшая его на 1. Но, поскольку цифр-то всего две - 0 и 1, то заняв единицу в старшем разряде, мы понимаем, что там останется 0 или 1. А когда мы занимаем единицу? Да лишь тогда, когда от 0 должны отнять 1. Единичка из старшего разряда - это 10₂, т.е. на самом деле обычная десятичная двойка, и после вычитания из 10₂ единицы, получим единицу. Как итог, в разряде: 0-0=0 1-1=0 1-0=1 0-1=1 и при этом в соседнем слева разряде надо тоже вычесть единицу по этим же правилам.
Вариант 1 var str:string; A,B,i:integer; begin write('введите ваш текст'); readln(str); for i:=1 to length(str) do begin if (str[i]='А')or (str[i]='а') then a:=a+1; if (str[i]='Б')or (str[i]='б') then B:=b+1; end; if (A+B)=0 then write('нет таких букв') else write ('A= ',A,' Б= ',b); end.
вариант 3 var str:string; A,B,i:integer; begin write('введите ваш текст'); readln(str); i:=1; while i<=length(str) do begin if (str[i]='А')or (str[i]='а') then delete(str,i,1); i:=i+1; end; write(str); end.
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota
Оформи подписку