Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Решение. Алгоритм решения. Берется наименьшее натуральное число - единица и находятся остатки от деления его на 2






Алгоритм решения. Б ерется наименьшее натуральное число - единица и находятся остатки от деления его на 2, 3, 4, 5 и 6; если остатки будут равны 1, 2, 3, 4 и 5, тогда это число является искомым, его надо выдать на экран и закончить программу, в противном случае, надо брать следующее натуральное число - 2 и проверять его, и так далее.

Program Problem6;

uses WinCrt;

var

n: integer;

begin

n: = 0;

repeat

n: = n + 1;

until (n mod 2 = 1) and (n mod 3 = 2) and (n mod 4 = 3) and

(n mod 5 = 4) and (n mod 6 = 5);

writeln('Искомое целое число ', n)

end.

Задача 7. Числа, одинаково читающиеся и слева направо, и справа налево, называются палиндромами. Например, числа 42324 или 1331 - палиндромы. Составьте программу, которая будет находить числа - палиндромы из заданного промежутка

Решение

Алгоритм решения. Переставить цифры в числе и сравнить полученное число с заданным.

Пусть заданное число a, тогда введем еще одну переменную b, которой будет присвоено значение переменной a (для чего это делается вы узнаете позже): b: = a;

Заведем еще одну переменную a1 для нового числа, в котором цифры уже будут переставлены.

Первоначальное значение этой переменной - ноль: a1: = 0;

Почему значение этой переменной равно нулю станет ясно из программы.

Далее организуем цикл repeat, в котором будет происходить перестановка цифр числа b:

Repeat

a1: = a1*10 + b mod 10;

b: = b div 10

until b = 0;

 

Итак, в цикле, также как и в цикле while... do..., отделяется последняя цифра:

b mod 10; (например, 343 mod 10 = 3); переменной a1 присваивается значение:

a1: = a1*10 + b mod 10; 0 * 10 + 3 =3;

" отбрасывается " последняя цифра заданного числа с помощью операции целочисленного деления:

b: = b div 10; 343 div 10 = 34;

проверяется условие: b = 0, 34 = 0, условие не выполняется, значит цикл продолжается.

Отделяется последняя цифра уже нового числа:

b mod 10 = 34 mod 10;

новое число a1, уже равное 3, умножается на 10 и к результату прибавляется следующая цифра - 4:

a1: = a1*10 + b mod 10;

" отбрасывается " последняя цифра числа b:

b: = b div 10; 34 div 10 = 3;

проверяется условие: b = 0, 3 = 0; условие не выполняется, значит цикл продолжается.

Отделяется последняя цифра числа:

b mod 10; 3 mod 10 = 3;

формируется новое число:

a1: = a1*10 + b mod 10; 34 * 10 + 3 = 343;

" отбрасывается " последняя цифра числа и получается новое число:

b: = b div 10; 3 div 10 = 0;

проверяется условие: b = 0, 0 = 0; условие выполняется, значит цикл заканчивается.

Теперь становится ясно, почему введена другая переменная b для заданного числа, ее значение в цикле меняется от начального до нуля и, чтобы сохранить заданное число в переменной a, и вводится, так сказать, " рабочая " переменная - b.

После окончания цикла перестановки цифр числа, сравнивается первоначальное число, которое " сохранилось " в переменной a и число, которое получилось после перестановки цифр и " накопилось " в переменной a1.

Если a = a1, тогда значение a выдается на экран, так как это число является палиндромом.

Далее, значение a увеличивается на 1, т. е. берется для рассмотрения следующее по порядку натуральное число и снова продолжается внешний цикл. Цифры числа переставляются, полученное новое число после перестановки цифр - a1, сравнивается с первоначальным a и так далее.

Внешний цикл заканчивается, когда значение a становится равным правой границе интервала - n.

Program Problem7;

uses Crt;

var

m, n, a, b, a1: longint;

begin

write('Введите левую границу промежутка '); readln(m);

write('Введите правую границу промежутка '); readln(n);

a: = m;

writeln('Числа палиндромы из [', m, '; ', n, ']');

repeat

b: = a; a1: = 0;

repeat

a1: = a1*10 + b mod 10;

b: = b div 10

until b=0;

if a1 = a then write(a, ' ');

a: = a + 1

until a > n;

end.

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.