• условие: нужно ввести 4 значное целое число и определить является ли оно палиндромом("перевертышем").
    Для определения отдельных разрядов числа используется операции div и mod

    Что в Паскале обозначает:
    program n1;
    var
    a,b,i,q,l:integer;
    constLimit=4
    begin
    readln(a);
    l:=a;b:=0;
    while a>0 do
    begin
    q:=a mod 10;
    b:=b*10+q;
    a:=a div 10;
    end;
    if(l=b)then writeln('yes')else writeln('no');
    end.
    1. while a>0 do
    2. q:=a mod 10;
        b:=b*10+q;
        a:=a div 10;
        Я не совсем понимаю, для чего в переменную b мы присвоили значение где b умножено на 10 и к произведению прибавлена q?
    3. l:=a;b:=0;
    и я не понимаю, почем мы здесь присвоили b значение равное 0?
    Объясните пожалуйста!

Ответы 1

  • while a>0 dobeginq:=a mod 10;b:=b*10+q;a:=a div 10;end;Этот фрагмент формирует число, обратное заданному числу а, это число в конце будет находится в ячейке b. Для примера рассмотрим короткое число. Пусть а=123123>0 поэтому все команды будут выполняться:q:=a mod 10; Остаток от деления  123 на 10: q=3 b:=b*10+q;    Записываем ее в b   b=0*10+3=3 (Вот поэтому сначала b должен быть 0)a:=a div 10;  Откидываем от а последний разряд: а=12 (берем целую часть деления 123 на 10)идем в начало цикла12>0 поэтому все команды будут выполняться:q:=a mod 10; Остаток от деления  12 на 10: q=2b:=b*10+q;    Записываем ее в b   b=3*10+2=32a:=a div 10;  Откидываем от а последний разряд: а=1 (берем целую часть деления 12   на 10)идем в начало цикла1>0 поэтому все команды будут выполняться:q:=a mod 10; Остаток от деления  1 на 10: q=1b:=b*10+q;    Записываем ее в b   b=32*10+1=321a:=a div 10;  Откидываем от а последний разряд: а=0 (берем целую часть деления 1   на 10)идем в начало цикла. Условие 0>0 не выполняется, переходим к командам после цикла. А в b находится число, перевернутое по отношению к исходному.
    • Автор:

      alisawszd
    • 5 лет назад
    • 0
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years