iİnformatikanın məktəbdə tədrisi

2-5r

2.1                Дано натуральное число n. Удалить в этом числе все единицы и пятёрки, оставив порядок цифр прежним. Например, число 527012 преобразуется в 2702.

 

Как мы увидели во всех предыдущих задачах, операция mod 10 (%10) выделяет последнюю цифру справа. Если выделенную цифру добавлять к числу справа, то получим число с обратным порядком цифр. В нашей задаче порядок цифр не должен меняться, значит мы должны добавлять выделяемые цифры слева. Это немного сложнее. Если число  m однозначное, то добавить к нему цифру q слева можно так  m:=q*10+m; Если число  m двухзначное, то m:=q*100+m; трехзначное - m:=q*1000+m;  и так далее. В нашей программе за умножение цифры на 10, 100, 1000 и т.д. отвечает переменная p,  значение которой увеличивается в 10 раз после добавления очередной цифры (строка 13).  А чтобы по условию задачи удалить из числа все единицы и пятёрки, то в строке 10 мы и проверяем, добавлять ли цифру к числу или нет (1 и 5 не будут добавлены).

Можно, конечно, в этой программе не запоминать n (и не вводить дополнительную переменную n1), но здесь мы это сделали просто для того, чтобы вы привыкли не портить исходные данные.

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

Program A2_5;

Var

  n,n1,m,q,p:integer;

  begin

    readln(n);

    n1:=n; m:=0; p:=1;

    while (n1<>0)  do

    begin

      q:=n1 mod 10;

      if (q<>1) and (q<>5)  then

        begin

          m:=q*p+m;

          p:=p*10;

        end;

        n1:=n1 div 10;

    end;

      writeln(m);

      readln;

end.

// Program A2.5;

 

#include <iostream>

 

using namespace std;

 

int main()

{

    int n,n1,m=0,q,p=1;

    cin>>n;

    n1=n;

    while (n1)

    {  q=n1%10;

        if (q!=1 && q!=5)

        {m=q*p+m;

        p=p*10;}

        n1=n1/10;

    }

    cout<<m<<endl;

    return 0;

}