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;
}
|
|