Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Решение. Алгоритм.Пусть пользователем введено число 4538
Алгоритм. Пусть пользователем введено число 4538. После перестановки первой и последней цифр число станет таким: 8534. Определить последнюю цифру числа нетрудно. Это можно сделать уже известным нам способом: 4538 mod 10. Чтобы найти и отделить первую цифру числа, надо использовать прием, который применялся в предыдущих программах для вывода цифр числа и для подсчета суммы цифр, т. е. отделять по одной цифре справа. Но, если в предыдущих программах такой процесс продолжался до тех пор пока n < > 0 (n не равнялось нулю), а когда n становилось равным нулю, то цикл заканчивался т. е. все цифры, включая первую, отделялись, то теперь надо этот процесс остановить на одну цифру раньше и тогда последним значением переменной n будет первая цифра числа. В нашем примере она равна 4. Итак, первая и последняя цифры найдены. Как переставить их в числе. Для введенного нами числа это можно сделать так. Вычесть из него первую цифру, умноженную на 1000 и вычесть последнюю цифру: 4538 - 4 1000 - 8 = 530. К полученному результату прибавить последнюю цифру - 8, умноженную на 1000 и прибавить первую цифру: 530 + 8 1000 + 4 = 8534. Две последние операции можно записать в одной строке: 4538 - 4 1000 - 8 + 8 1000 + 4 = 8534. Возникает одна трудность. Как определить разряд, в котором находится первая цифра числа (первая слева) и на сколько надо умножить ее при вычитании? Тысячи ли это, десятки тысяч или другой разряд? Для того, чтобы это выяснять заведем переменную, первоначальное значение которой 1, а затем, каждый раз при отделении цифры она умножается на 10. Посмотрим весь процесс на примере того же числа 4538. Первоначальные значения: n = 4538, i = 1. Цикл продолжается пока n 10, 4538 10 - истина, значит операторы цикла выполняются первый раз: i: = i*10 = 1*10 = 10; - переменная i получает первое значение, n: = 4538 div 10 = 453. Проверка условия: 453 10 - условие выполняется, значит цикл выполняется второй раз: i: = i*10 = 10*10 = 100; n: = 453 div 10 = 45. Проверка условия: 45 10 - истина, значит цикл выполняется третий раз: i: = i*10 = 100*10 = 1000, n: = 45 div = 4. Проверка условия: 4> =10 - ложь, значит операторы цикла не выполняются. Цикл заканчивается. Конечные значения переменных: n = 4 - первая цифра числа, i = 1000. Теперь остается выполнить сам процесс перестановки цифр и выдать результат на экран.
Program Problem2; { Перест. первой и последней цифр числа } uses Crt; var n, n1, p, a, i: integer; begin write('Введите натуральное число n '); readln(n); a: = n; i: = 1; p: = n mod 10; {последняя цифра введенного числа} while n > = 10 do begin i: = i*10; n: = n div 10; end; n1: = a - n*i - p + n + p*i; writeln('Число после перестановки цифр ', n1); end.
|