Решение 50 типовых задач по программированию на языке Pascal Дата размещения сборника в сети


Данил Душистов: «Решение 50 типовых задач по программированию на языке Pascal»


Download 1.52 Mb.
Pdf ko'rish
bet41/77
Sana03.02.2023
Hajmi1.52 Mb.
#1152062
TuriРешение
1   ...   37   38   39   40   41   42   43   44   ...   77
Bog'liq
Задачи на Pascal

Данил Душистов: «Решение 50 типовых задач по программированию на языке Pascal» 
36 
максимуму». В остальном нужно было экспериментировать, чтобы найти наиболее легкое и нагляд-
ное решение. Конечно, псевдографика – это не алгоритмическое программирование, и в нем тести-
рование и эксперимент играют чуть ли не самую важную роль. 
Код: 
1.
program MyTable; 
2.
3.
var 
4.
i, n: byte; 
5.
6.
begin 
7.
readln(n); 
8.
writeln('/-----------------------------------------------
---------\'); 
9.
writeln('| x | x^2 |
x^3 |'); 
10.
writeln('|-----------------------------------------------
---------|'); 
11.
for i := 1 to n do begin 
12.
writeln('|', i:9, '|':10, i * i:9, '|':10, i * i * i:9, 
'|':10) 
13.
end; 
14.
writeln('\-----------------------------------------------
---------/') 
15.
end. 
Задача № 31. Сформировать реверсную запись заданного числа 
Формулировка. Дано натуральное число n заранее неизвестной разрядности. Сформировать 
и вывести на экран число, представляющее собой реверсную запись n
Решение. Это более общий случай задачи 4, в которой при случае трехзначного n отчетливо 
видны повторяющиеся фрагменты кода. Попытаемся получить общий алгоритм решения через 
цикл. 
Пусть дано число 25893. Возьмем его последнюю цифру как остаток от деления на 10 – это 3. 
Очевидно, она должна быть первой. Отбросим ее у числа n и возьмем последнюю цифру 9 – она 
должна быть второй. Чтобы сформировать две цифры реверсного числа, умножим 3 на 10 и приба-
вим 9, потом добавим третью цифру и т. д. 
Так как разрядность числа неизвестна, мы будем использовать цикл с предусловием. Его тело 
будет выглядеть так: 
r := r * 10; 
r := r + n mod 10; 
n := n div 10; 
Поначалу результат r должен быть равен 0, и тогда умножение нуля на 10 в первом шаге не 
разрушает формирование реверсной записи, которое теперь может быть заключено в один цикл. 
Каким же будет условие продолжения? Нетрудно понять, что когда мы будем добавлять по-
следнюю оставшуюся цифру исходного числа n к реверсной записи r, мы умножим r на 10, приба-
вим к ней как n mod 10 (в данном случае этот остаток равен n) и разделим n на 10. Тогда n станет 
равно 0 и цикл должен закончиться, так что условие его продолжения – n < > 0

Download 1.52 Mb.

Do'stlaringiz bilan baham:
1   ...   37   38   39   40   41   42   43   44   ...   77




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling