{Из числового промежутка выведите те числа, в записи которых
есть хотя бы одна нечетная цифра. Например, 12, 23, 98,99.}
var x,xt:integer;//само число и его дубликат
a,b:integer; //границы промежутка (ну я так понял условие, что промежуток можно задать)
flag:boolean; //логическая переменная, которая определить является ли данное число необходимым для вывода
BEGIN
writeln('введите границы отрезка');readln(a,b);
for x:=a to b do begin //перебираем все значения в числовом промежутке
xt:=x; //берем копию числа x, дабы не трогать сам х, который идет как счетчик цикла
flag:=false; //предполагаем, что число не подходящее
while (xt>0) do begin
//(xt mod 10) - последняя цифра числа, т.е. разряд единиц и если она нечетная
//(ее остаток от деления на 2 не равен 0), то flag ставим true - число подходит и выходим из цикла
if ((xt mod 10) mod 2<>0) then begin flag:=true; break end;
xt:=xt div 10; //таким делением отбрасываем разряд единиц, мы его уже проверили и в цикле снова проверяем подходит ли число
end;
if flag=true then write(x,' ');//если flag стал true, значит мы определили, что в числе есть нечетная цифра и значит его можно вывести на экран
end;
END.
Объяснение:
в комментариях все объяснения)
Поделитесь своими знаниями, ответьте на вопрос:
Заполните массив 10-юслучайными числами в интервале [1000, 2000] и подсчитать число элементов, у которых последняя и третья с конца цифры - чётные.
pascal
Объяснение:
const
n = 10;
var
k, i: integer;
a: array[1..n] of integer;
begin
for i:= 1 to n do
begin
a[i] := round(random(1000)) + 1000;
Write(a[i], ' ');
if (a[i] mod 2 = 0) and ((a[i] div 100) mod 2 = 0) then inc(k);
end;
WriteLn;
WriteLn('Количество искомых элементов равно ', k);
end.