В языке С/С++ любое ненулевое значение считается истинным.
Цикл с заголовком while (a(x)) выполнятся до тех пор. пока a(x) ненулевое, следовательно, при выходе из цикла a(x)=0.
Первоначально х=1 и если a(1) окажется равным нулю, то тело цикла не выполнится ни разу. В этом случае у будет равен начальному значению, т.е. у=1.
Если же а(1) не равняется нулю, то будет выполняться тело цикла. При у<0 переменная х получает значение 2, у получает значение 10. Мы должны полагать что а(2) ложно и тогда произойдет выход из цикла. Если же это не так, то тело цикла будет выполняться повторно. Ветка при y>=0 дает присваивание х=1, а мы рассматриваем вариант, когда такое значение не приводит к выходу из цикла, следовательно у=20 никогда не будет последним присваиванием значения у. Тогда возможен только вариант ответа 1 (у=1 или 10)
<em><u>Ответ:</u></em> Вариант 1
Например с помощью оператора if:
Неполное if {условие} then do {...}
Полное
if {условие} then do {...}
else do {в противном случае}
В конце XIX века Герман Холлерит в Америке изобрел счетно-перфорационные машины. Он основал фирму по производству этих машин, которая затем была преобразована в фирму IBM.
N=2^i
256=2^8
i=8 (один символ кодируется восемью битами или одним байтом)
I=ki=256*1=256 байт
Var
s: string;
n: byte;
begin
readln(s);
foreach i: char in s do
if (Char.IsDigit(i)) then
n += 1;
writeln(n);
end.
------------------------
var
s: string;
n: byte;
begin
readln(s);
for i: byte := 1 to length(s) do
if (s[i] in ['0'..'9']) then
n += 1;
writeln(n);
end.