Песни о Паскале - [105]
>repeat
> Write('Основание системы= '); Readln(B);
> if B in [2..16] then begin
> Write('Преобразуемое число= '); Readln(N);
> Writeln(ConvertFromNumber(B, N));
> end
>until not (B in [2..16]);
>end.
Эта простая программа подарит вам счастье наблюдать знакомые десятичные числа в экзотических системах счисления, например, в троичной или пятеричной.
Теперь займемся обратной задачей: пусть дана строка символов, изображающая некое число в известной системе счисления; требуется преобразовать эту строку в число и напечатать в десятичной системе.
Сборка числа из десятичных цифр нами освоена. Она выполнялась умножением накопленной суммы на десять с прибавлением очередной цифры, начиная со старшей. Надо ли объяснять, что сборка в других системах выполняется точно так же? Только умножать будем не на десять, а на основание системы счисления. В следующей ниже программе сборка выполняется функцией ConvertToNumber – «преобразовать в число».
>{ P_47_2 – Преобразование из других систем счисления }
>function ConvertToNumber(aBase: integer; aNumber: string): integer;
>var i,n, Sum : integer;
> c : char;
>begin
>Sum:=0; { Накопитель результата }
>for i:=1 to Length(aNumber) do begin
> c:= Upcase(aNumber[i]);
> if c in ['0'..'9']
> then n:= Ord(c)-Ord('0') {0..9}
> else n:= 10+Ord(c)-Ord('A'); {10..15}
> Sum:= aBase*Sum + n; { Накопление суммы }
>end;
>ConvertToNumber:= Sum; { готово! }
>end;
>var B : integer; { Основание системы }
> N : string; { Изображение числа в виде строки }
>begin {=== Главная программа ===}
>repeat
> Write('Основание системы= '); Readln(B);
> if B in [2..16] then begin
> Write('Преобразуемое число= '); Readln(N);
> Writeln(ConvertToNumber(B, N));
> end
>until not (B in [2..16]);
>end.
Как обычно, здесь выделены операторы, стоящие внимания. Функция UpCase преобразует строчные латинские буквы в заглавные. Ведь шестнадцатеричные цифры от «A» до «F» могут быть введены пользователем в любом регистре, а последующие операторы преобразования цифры в число предполагают заглавные буквы – вот потому и понадобилась функция UpCase.
Теперь о превращении символов в числа. Цифры от «0» до «9» преобразуются вычитанием из кода цифры кода символа «0». Для цифр от «A» до «F» после вычитания кода буквы «A» к разности прибавляем число 10. Все сказанное относится к следующему условному оператору.
> if c in ['0'..'9']
> then n:= Ord(c)- Ord('0') {0..9}
> else n:= 10 + Ord(c)- Ord('A'); {10..15}
Вот, пожалуй, и вся премудрость. Испытание этой программы убедит вас в том, что волшебства случаются не только в сказках!
• Способ изображения чисел посредством знаков называется системой счисления.
• Одно и то же число может быть изображено в разных системах счисления.
• Все современные системы счисления – позиционные. Это значит, что вес цифры определяется позицией в числе.
• Преобразование числа в любую систему счисления (строку цифр) начинается с младших разрядов, а обратная сборка – со старших.
А) Напишите функцию для преобразования числа из одной системы счисления в другую. Функция должна принимать три параметра:
• строку в исходной системе счисления;
• основание исходной системы;
• основание конечной системы счисления.
Воспользуйтесь вызовами готовых функций ConvertToNumber и ConvertFromNumber.
Б) У программиста Ника была привычка запоминать сумму цифр в номерах автомобилей, попадавшихся ему на глаза. Однажды он стал свидетелем аварии, виновник которой скрылся. Ник сообщил полицейским только сумму цифр в номере нарушителя (сам номер Ник не помнил). Помогите полиции, и напишите программу, выводящую все трехзначные номера (от 001 до 999), сумма цифр которых равна N (значение N вводит пользователь).
В) Напишите функцию для представления чисел словами. Например, число 45 должно быть преобразовано в строку «сорок пять». Решайте задачу постепенно: сначала для однозначных и двузначных чисел, затем для более крупных. Или слабо?
Г) В романе «Евгений Онегин» есть такие строки: «Все предрассудки истребя, мы почитаем всех нулями, а единицами – себя». О какой системе счисления упомянул Александр Сергеевич?
Д) В функцию передаются три параметра: 1) число, 2) основание системы счисления, 3) символ цифры. Функция должна возвратить количество вхождений этой цифры в представление числа для указанной системы счисления.
Е) Напечатать все трехзначные числа, цифры которых (в десятичном представлении) различны, например: 123, 702.
Ж) Найти все шестизначные счастливые билеты. Счастливыми называют билеты, у которых сумма первых 3-х цифр равна сумме следующих 3-х. Например: 123 411. Напишите булеву функцию, определяющую «счастливость» билета.
З) В заморской стране обращались денежные купюры достоинством в 1, 2, 5, 10 и 25 пиастров. Напишите программу для кассового аппарата, определяющую наименьший набор купюр, необходимый для выдачи сдачи на указанную сумму. Например, для сдачи 33 пиастров программа напечатает: 25 + 5 + 2 + 1.
И) Программа шифрования текстового файла заменяет каждый символ двумя шестнадцатеричными цифрами его кода. Например, три символа ‘405’ заменяются на шесть символов ‘343035’. Символы разбивки строк не затрагиваются. Напишите программу для зашифровки и расшифровки файла по этой системе.
Вторая часть трилогии "Мир Артефакта". Хранительница Артефакта, сама выбирает за кого ей выходить замуж, после, чего они привыкают к своим мужам, а некоторые из них влюбляются в них.
Книга «Горькое молоко» состоит из двух частей. Первая часть — «Золотой брегет» — повествует о сложной судьбе футболиста Ивана Беды, крёстном сыне известного вора в законе, который на свадьбу подарил Ивану золотой брегет. Вторая часть романа «Тюремный шлейф» рассказывает о племяннике Ивана Беды Сергее, которому тоже придётся повторить серьёзные жизненные моменты своего дяди, связанные с лишением свободы.
Решив учиться в магической Академии, я пошла против воли отца. Ему не хотелось, чтобы я выходила за пределы нашей территории. В его глазах моя судьба — сидеть дома в четырех стенах, со временем выйдя замуж за того, на кого он укажет, за того, кому он сможет доверить нашу семейную тайну, размер и важность которой очень велики. Но меня такое решение не устроило и я, забрав с собой верного друга, сбежала, впервые в жизни поведя себя таким образом. Что ждет меня на этом пути? Что за таинственные личности появляются на моем пути? И что за судьба уготовлена мне пророчеством?
Бог умер на кресте и сгнил, согласно научной картине мира, оставив своих детей. Либеральная Цивилизация решает покончить с "колыбелью человечества" и запускает в Солнце шаттлы с ядерными боеголовками. Теперь над Землей довлеет Багровый глаз. И он растет каждый час. Сможет ли Цивилизация сделать новый эволюционный шаг в виртуальный мир и вырезать из своих мозгов Архетип? Или Рай и жизнь для удовольствия – лишь дегенеративная сказка? Выдержит ли Прогресс экспансию Евразии или он обречен быть утопленным в животной религиозности? Знакомьтесь! Дьявол, заточенный в теле инвалида-гомосексуалиста, хлыстовка, ставшая Великой блудницей, самозванец, занявший опустевший трон Бога, а также отважные психонавты и другие неординарные личности сойдутся в напряженной схватке, чтобы решить, сохранит ли человек Образ Божий или станет чем-то другим? Роман-антиутопия "Разбитый Адам" повествует о развитии и столкновении апокалиптических проектов Евразии и западной цивилизации в середине 27-го столетия.
Давняя вражда между эльфами и людьми вспыхнула с новой силой. Эльфы завоевывают все новые территории и мечтают уничтожить Империю людей. Армия чудовищ, запечатанная в древнем эльфийском городе, оказалась на свободе. Неведомым образом все это связано с магией Круга Камней, о которой люди ничего не знают. Дознаватель Кристиан Уорден, несостоявшийся боевой маг, мечтавший о спокойной жизни советника лорда-правителя, оказался в эпицентре войны. Теперь ему придется совершить невозможное, чтобы выяснить правду о таинственном Круге и остановить врагов.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.