Задача 3. Работа с цифрами целого числа 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Задача 3. Работа с цифрами целого числа



Условие задачи. Дано трёхзначное натуральное число N. Получить число, содержащее цифры исходного числа в обратном порядке. Например, для N=583 должно быть получено число 385.

Исходным данным в этой задаче является трехзначное натуральное число n, которое вводится с клавиатуры. Наша задача - получить новое число ne w n, в котором цифры исходного числа будут расположены в обратном порядке. Любое натуральное число в десятичной системе счисления можно записать в виде суммы разрядных слагаемых (числа единиц, десятков, сотен и т.д.). Каждая позиция цифры в числе называется разрядом. В трехзначном числе - три разряда: разряд единиц - a, разряд десятков - b и разряд сотен – c. И любое десятичное число можно представить в следующем виде: n = c *100+b*10+ a. Например, число 583 можно записать как сумму 5*100+8*10+3= 583. Нам надо разбить наше число n = 583 на разряды, а затем собрать это число в обратном порядке, т.е. сформировать число вида n = a *100+ b *10+ c (в нашем примере3*100+8*10+5=385). Для того, чтобы выделить разряды числа, используют операции целочисленной арифметики, а именно получение целой части частного от деления целого на целое и остатка от деления целого на целое. Будем использовать обозначение div для операции целочисленного деления, а для операции получения остатка от целочисленного деления – mod. Выделение разрядов числа можно выполнить с помощью разной последовательности действий. Рассмотрим два способа решения задачи.

Первый вариант.

Разряд единицлюбого числа в десятичной системе счисления можно выделить, если получить остаток от деления исходного числа на 10(a =583 mod 10=3). Теперь нужно сделать так, чтобы разряд единиц больше не рассматривать, т.е. дальше работать с двузначным числом, отбросив младший разряд. Для этого уменьшим исходное число n на разряд, взяв частное от деления n на 10 ( 583 div 10=58). Далее выделим младший разряд уже в новом числе 58 (в наших обозначениях это разряд десятков b исходного числа). Для этого надо получить остаток от деления числа 58 на 10(b = 58 div 10=8). Затем опять надо уменьшить на разряд число 58, чтобы отбросить цифру 8 ( 58 div 10=5). Получили однозначное число, которое соответствует разряду сотен (c) исходного числа n. Теперь можем из полученных разрядов сформировать новое число newn, в котором a будет находиться в разряде сотен, b в разряде десятков, а c в разряде единиц. Для этого сформируем сумму new n = a *100+ b *10+ c (3*100+8*10+5=385). Исходное число n и полученное число newn надо вывести на экран.

Структурированная запись алгоритма 3.1

1. Ввод натурального числа n

2. Вывод исходного числа n для контроля

3. Выделение разряда единиц исходного числа a= n mod 10

4. Уменьшение числа n на 1 разряд – получение двузначного числа
n=n div 10

5. Выделение разряда десятков исходного числа b= n mod 10

6. Уменьшение числа n ещё на один разряд – получение однозначного числа
n=n div 10

7. Запись полученного числа в разряд сотен c=n

8. Формирование числа с обратным порядком цифр new n = a *100+ b *10+ c

9. Вывод числа с обратным порядком цифр newn

Схема алгоритма

Программа на языке Си

#include <stdio.h>

#include <conio.h>

int main()

{

int n, newn, a, b, c;

printf("Введите число \n");

scanf("%d",&n);

printf("Исходное число = %d\n",n);

a=n%10;// 3-я цифра - единицы

n=n/10;// уменьшение числа на разряд

b=n%10;// 2-я цифра - десятки

n=n/10;// уменьшение числа на разряд

c=n; // 1–я цифра - сотни

newn=a*100+b*10+c;

printf("Результирующее число =%d \n",newn);

 getch();

 return 0;

}

Программа на языке Паскаль

Program Pr_3_1;

Var

n, newn, a, b, c:integer;

begin

writeln('Введите число');

readln(n);

writeln(' Исходное число=', n);

a:=n mod 10; {3-я цифра - единицы }

n:=n div 10; { уменьшение числа на разряд }

b:=n mod 10; { 2-я цифра - десятки }

n:=n div 10; { уменьшение числа на разряд }

c:=n;     { 1–я цифра - сотни}

newn:= a*100 + b*10+c; { сформ. новое число}

writeln(' Результирующее число= ', newn);

end.

Программа на языке Фортран

Program main_3_1

Implicit none

integer n, newn, a, b, c

print*, 'Введите число'

read *, n

print ‘(A, I3)’, ' Исходное число=', n

a=mod(n,10)! 3-я цифра - единицы

n=n/10! уменьшение числа на разряд

b=mod(n,10)! 2-я цифра - десятки

n=n/10! уменьшение числа на разряд

c=n! 1–я цифра - сотни

newn = a*100 + b*10+c!формирование нового числа

print '(A, I3)', ' Результирующее число=', newn

end

Программа на языке Python

print("Введите трехзначное натуральное число:")

n = int(input())

print("Исходное число:", n)

a = n % 10

n = n // 10

b = n % 10

n = n // 10

c = n

newn = a*100 + b*10 +c

print("Число с обратным порядком цифр:", newn)

Программа в системе Матлаб

n=input('Введите n=')

disp(sprintf('Исходное число=%4d',n))

a=mod(n,10);

n=fix(n/10);

b=mod(n,10);

n=fix(n/10);

c=n;

newn=a*100+b*10+c;

disp(sprintf('Результирующее число=%4d',newn))

 

Второй вариант

Выделение разрядов в трехзначном числе можно выполнить по-другому. Например, для числа 583. Для получения 1-ой цифра числа (разряда сотен) можно разделить исходное число на 100 c = n div 100 (с=583 div 100 =5). Вторую цифру (разряд десятков) можно получить, если взять остаток от деления на 10 уменьшенного в 10 раз исходного числа b = n div 10 mod 10 (b = 583 div 10 mod 10= 58 mod 10= 8). Для получения 3-ей цифры (разряда единиц), надо получить остаток от деления исходного числа на 10 a = n mod 10 (a = 583 mod 10 = 3). Теперь можем из полученных разрядов сформировать новое число newn = 100* a + b *10+ c (newn = 3*100+8*10+5=385)



Поделиться:


Последнее изменение этой страницы: 2021-04-12; просмотров: 147; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 13.59.10.239 (0.017 с.)