Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Уроки программирования на Turbo Pascal


Информационный Канал Subscribe.Ru


Уроки программирования на Turbo Pascal #6

Подписчиков на 2002-08-06 - 591 человек(а).

Рассылка проекта "Олимпиада.com.ru".


Главная Архив задач Конкурс Рассылки Форум Гостевая книга Контакты

Здравствуйте, уважаемые подписчики!


Урок 6


  Продолжим знакомство с целочисленной арифметикой. Очень часто необходимо чтобы программа определила, из каких цифр состоит число, или определила разряд заданной цифры или наоборот цифру в заданном разряде. Если вы попросите человека решить эту задачу, проблем не возникнет, а как быть с компьютером. Для него любое число это набор нулей и единиц, т.е. двоичный код. В отличие от нас компьютер все действия выполняет в двоичной системе. Например, число 27 хранится в его памяти как 11011. И где здесь 2 и 7?

  Для решения этих задач надо вспомнить, что собой представляет любое число десятичной системы счисления (т.е. той, к которой мы с вами привыкли).В позиционной системе счисления (к которой относится десятичная система) величина, обозначаемая цифрой в записи числа, зависит от ее позиции. Например, в числе 333 первая цифра обозначает три сотни, вторая - три десятка, третья - три единицы. Любое число можно записать в виде:


32478=3*10000+2*1000+4*100+7*10+8=3*104+2*103+4*102+7*101+8*100

  Поэтому для обработки десятичных чисел используется 10 в соответствующей степени. Например, надо получить число, образованное при перестановке цифр заданного числа.

Program prim_6;
Var n,x1,x2,m:integer;
Begin
  Write('введите двузначное число');
  Readln(n);
  X1:=n mod 10;    {выделяем из числа единицы}
  X2:=n div 10;    {получает число десятков в числе}
  M:=x1*10+x2;    {число единиц умножаем на 10, получаем десятки}
  Writeln(m);
  Readln
End.

Пусть дано n=27.
X1:= 27 mod 10 = 7
X2:= 27 div 10 = 2
M:=7*10+2 = 72, что и требовалось получить.

  К сожалению, таким образом, мы можем определить лишь крайние цифры числа. А если цифра, которая нам нужна, стоит не с краю? Не беда, сделаем ее крайней. Например, дано трехзначное число, надо определить среднюю цифру числа.


Пусть а=246
B:=a div 10 = 24
B:=b mod 10 = 4

Или по другому:
B:=a mod 100 = 46
B:=b div 10 = 4

Задания для тренировки.
1. Дано двузначное число. Найти:
   a. число десятков в нем;
   b. число единиц в нем;
   c. сумму его цифр;
   d. произведение его цифр.

2. Дано трехзначное число. Найти:
   a. Число единиц в нем;
   b. Число десятков в нем;
   c. Сумму его цифр;
   d. Произведение его цифр.

3. Дано трехзначное число. Найти число, полученное при прочтении его цифр справа налево.

4. Дано трехзначное число. В нем зачеркнули первую слева цифру и приписали ее в конце. Найти полученное число.

5. Дано трехзначное число. В нем зачеркнули последнюю справа цифру и приписали ее в начале. Найти полученное число.

6. Дано трехзначное число. Найти число, полученное при перестановке первой и второй цифр заданного числа.

7. Дано трехзначное число. Найти число, полученное при перестановке второй и третьей цифр заданного числа.

8. *Дано вещественное число А, содержащее два знака до запятой и два после. Получить новое число, поменяв в числе А целую и дробную части.

9. *В кассе имеются купюры достоинством в К рублей и в 1 рубль. Выдать N рублей минимальным набором купюр заданного достоинства.

Разбор тренировочного задания урока 5.

6.*Дано целое число k (1 <= k <= 365). Присвоить целочисленной величине n значение 1, 2,...,6 или 0 в зависимости от того, на какой день недели (понедельник, вторник, ..., суббота или воскресенье) приходится k-й день года, в котором 1 января - понедельник.
Так как 1 января приходится на понедельник, то легко определить на какой день приходится k-й день года. Для этого достаточно разделить нацело на 7, а полученный остаток и будет днем недели.

Program prim_5;
Var n,k:integer;
Begin
  Write('введите день года');
  Readln(k);
  n:=k mod 7;
  Writeln(k,' день года - это ', n,' день недели ');
  Readln
End.

Желаю успехов!
Ганилова Татьяна Евгеньевна school6@rikt.ru


Реклама в рассылке:

RLE    

  


Подпишитесь на наши рассылки:

Новости проекта "Олимпиада.com.ru" [Алексей Шамис]
Новости проекта "Olimpiada.com.ru". Новые темы на форуме. Информация о пополнениях в архиве задач. Оперативно и своевременно!

Уроки программирования на Turbo Pascal [Татьяна Ганилова]
Хотите стать Великим Программистом? Начните свой путь к вершине славы с изучения языка Turbo Pascal. Он как нельзя лучше подходит для начинающих программистов и в то же время используется для разработки сложных "профессиональных" программ.

Олимпиадные задачи с решениями на Turbo Pascal [Алексей Шамис]
В рассылке публикуются решения интересных олимпиадных задач различного уровня. Содержит много теоретической информации. Периодичность - 2-3 раза в неделю.

Задача в неделю. Олимпиадные задачи по информатике [Александр Алексеев]
Каждый понедельник в рассылке публикуется задача, которую необходимо решить и в следующий понедельник прислать программу на тестирование. Решения проверяются, и в пятницу публикуется разбор и итоги тестирования.



Всегда рады видеть Вас на нашем сайте. Жду ваших предложений и замечаний, Алексей Шамис

Copyright © 2002 by Ganilova Tatyana.



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное