26.02.2022

Множества в языке Паскаль (описание, хранение, операции, вывод, использование)

Множества в языке Паскаль: описание, хранение, операции, вывод, использование

Когда мы произносим слово множество, подразумеваем большое количество объектов:

  • множество целых чисел,
  • множество латинских букв,
  • множество слов.

В этой публикации расскажем, как использовать множества в языке Паскаль.

Множество - это набор уникальных неупорядоченных значений одного типа.

Описание (объявление) множества

var m:set of базовый тип;

 Примеры 

Целые числа

Символы

Строки


Множество

[0,2,4,6,8,10,12]

[’a’,’b’,’c’,’d’,’e’]

[’Mazda’,’BMW’,’Audi’]

Описание
 в блоке var

m:set of integer;

p:set of char;

s:set of string;


Хранение данных в множестве

m:=[3,4,6,8,9];  элементы множества заключаются в квадратные скобки и перечисляются через запятую

m:=[0..9]; диапазон значений через две точки


Операции над множествами

  • пересечение
  • объединение
  • вычитание


Применение операций над множествами

m:=[3,4,6,8,9];

m1:=[3,4,9,15,20];

m2:=m*m1; пересечение [3,4,9]

m2:=m+m1; объединение [3,4,6,8,9,15,20]

m2:=m1-m;  разность [15,20]


Пустое множество

m:=[];


Как добавить значение в множество

m:=m+[x];  значение переменной x добавили в множество m

inlude(m, x); в среде PascalABC.NET


Операция вхождения in

Обратиться к элементу множества непосредственно нельзя. Но можно использовать операцию вхождения in.


Вывод множества на экран

m:=[10,12,14,15,16,18,20,21,22,24];

for k:=10 to 24 do

 if k in m then write(k);//если значение k принадлежит множеству m, то вывести k

В версии PascalABC.NET 3.8.2 множество можно вывести целиком:

write(m);

Результат будет таким:

{10,12,14,15,16,18,20,21,22,24}

Использование множеств в задачах

Задача 1. Дано натуральное число. Сформировать множество его цифр (найти различные цифры числа)

В цикле while будем разбивать число на цифры и добавлять цифру в множество. 

Исходные данные: n – натуральное число (тип integer)

Промежуточные данные: d – цифра числа (тип integer) 

Выходные данные: m – множество цифр числа 

Программа решения на языке Паскаль

var m:set of integer;

    d,n:integer;

begin

 m:=[]; //пустое множество

 writeln('Введите натуральное число');

 readln(n);

 while n<>0 do

   begin

    d:=n mod 10;

    m:=m+[d];

    n:=n div 10;

   end;

 writeln('Множество цифр числа');

 write(m);

End.

Результат выполнения программы

Множество цифр числа

Задача 2. Дан алфавит строчных русских букв, получить множество согласных букв вычитанием множества гласных букв.

Воспользуемся тем, что char является порядковым типом данных, в качестве букв алфавита возьмем множество b:=['а'..'я'].

Множество гласных букв получим перечислением: g:=['у','е','ы','а','о','э','я','и','ю']

Множество согласных букв получим вычитанием  s:=b-g;

Исходные данные:

b – множество строчных русских букв

g – множество строчных гласных букв

Выходные данные: s – множество строчных согласных букв 

Программа решения на языке Паскаль

var b,g,s:set of char;k:char;

begin

  b:=['а'..'я'];

  g:=['у','е','ы','а','о','э','я','и','ю'];

  s:=b-g;

  for k:='а' to 'я' do

    if k in s then write(k,' '); 

 {либо вывод сразу всего множества write(s), цикл for k:='а' to 'я' do тогда не нужен}

end.

Задача 3. Дана строка символов. Сколько в этой строке символов цифр?

Будем проверять принадлежность символа строки множеству символов цифр ['0'..'9'] и копить счетчик.

Программа решения на языке Паскаль

var s:string;

    c:char;

    m:set of char;

    k,t:integer;

begin

  writeln('Введите строку');

  readln(s);

  m:=['0'..'9'];

  for k:=1 to length(s) do

    if s[k] in m then t:=t+1;

  writeln('Символов цифр в строке: ',t);

end.

Еще одна задача на применение операции вхождения in. Как проверить, есть ли в строке заданная подстрока.

Результат выполнения программы

Символы цифры в строке

Задача 4. Как найти все уникальные (неповторяющиеся) значения в массиве чисел?

Мы знаем, что множество хранит уникальные значения. Возьмем пустое множество.

Добавим значение элемента в множество. В множестве сохранятся значения элементов массива, и они будут уникальными.

Программа решения на языке Паскаль

var a:array[1..100] of integer;

    k,n:integer;

    m:set of integer;

begin

  writeln('Введите количество элементов массива');

  readln(n);

  m:=[]; //пустое множество

  writeln('Массив чисел');

  for k:=1 to n do 

  begin

    a[k]:=random(1,10);//случайные числа из промежутка [1;10]  

    write(a[k],' ');

    include(m,a[k]);//или m:=m+[a[k]]; добавить значения элемента a[k] в множество m

    end;

  end;

  writeln;

  writeln('Уникальные элементы массива');

  for k:=1 to 10 do //цикл по числам из промежутка от 1 до 10

  begin

    if k in m then write(k,' '); //если число k принадлежит множеству, вывести число k

  end;

//либо вывод сразу всего множества write(m), цикл for k:=1 to 10 do тогда не нужен

end.

Результат выполнения программы

Уникальные элементы массива

Вопросы:

  • Можно ли в множестве сохранить вещественное число?
  • Как узнать длину множества?

21.02.2022

Как найти расстояние между двумя точками (язык Паскаль)

Задача. Необходимо вычислить расстояние между двумя точками, заданными своими целочисленными координатами.

Формула расстояния между двумя точками:

формула расстояния между двумя точками

Исходные данные:

x1, y1 – координаты первой точки (тип integer);

x2, y2 – координаты второй точки (тип integer).

Выходные данные:

d – расстояние между двумя точками (тип real).

Необходимые функции:

sqr() – возведение в квадрат

sqrt() - извлечение квадратного корня (выдает значение типа

Опишем переменные в блоке Var

18.02.2022

Зачем нужны массивы (язык Паскаль)

Зачем нужны массивы (язык Паскаль)

На уроках информатики при изучении темы «Массив», ученики нередко задают вопрос: «Зачем? Неужели нельзя вводить данные с клавиатуры и обрабатывать их по пути?»

Действительно, когда речь идет об определении понятия массив, мы даем, например, такое:

Массив – это упорядоченный и хранимый в памяти набор данных одного типа.

13.02.2022

Линейные программы на языке Паскаль

С помощью языков программирования описываются алгоритмы. Алгоритмы по своей структуре делят на следующие типы:

  • линейный
  • разветвляющийся
  • циклический

Линейные программы - описания на языке программирования линейных алгоритмов.

В линейном алгоритме действия выполняются последовательно, шаг за шагом, в таком алгоритме отсутствуют условные переходы и повторения. В линейной программе на языке программирования присутствуют только простые операторы, такие как, операторы ввода/вывода, присваивания. В линейных программах не используются операторы ветвления или цикла.

Ветвление в языке программирования Паскаль

В этой статье расскажем о ветвлениях в языке программирования Паскаль:

  • условный оператор if
  • оператор безусловного перехода goto
  • оператор выбора case

Условный оператор if

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

Конструкция условного оператора в полной форме

if условие then оператор1 else оператор2;

Перевод служебных слов с англ. яз.:

  • if - если
  • then - тогда
  • else - иначе

Как работает условный оператор

Если условие принимает значение ИСТИНА (TRUE), то выполняется оператор1, иначе (условие принимает значение ЛОЖЬ - FALSE) выполняется оператор2.

Конструкция условного оператора в краткой форме

if условие then оператор;

Оператор ветвления в краткой форме имеет только ветвь ИСТИНА.

Задача. С клавиатуры вводится целое число. Если оно четно, то увеличить его в три раза, иначе уменьшить на 5.

Исходные данные: целое число N (тип integer)

Выходные данные: измененное число N (тип integer)

Как будем решать задачу

  1. Поставим условие проверки на четность: вычислим остаток от деления на 2 операцией mod: N mod 2.
  2. Если остаток от деления на 2 равен 0, то число N увеличим в три раза N:=N*3, иначе уменьшим число на 5: N:=N-5.

Программа решения на языке Паскаль

var N:integer;

begin

    write('Введите целое число N=');

    readln(N);

    if N mod 2 = 0 then N:=N*3 else N:=N-5;

    writeln('Измененное число N=',N);

end.

Результат выполнения программы

Ветвление в Паскаль


Оператор безусловного перехода goto

goto метка;

Пример использования: проверка формата введенного числа.

Задача. Ввести натуральное число не более 100.

Исходные данные: n - число (тип integer)

Выходные данные: сообщение "Введено корректное число" или "Неверное число. Повторите ввод"

Программа решения на языке Паскаль

label vvod;

var n:integer;

begin

vvod:readln(n);

   if (n<1) or (n>100) then 

     begin

       writeln('Неверное число. Повторите ввод');

       goto vvod;

     end

   else 

     writeln('Введено корректное число');

end.

Для описания меток используется раздел label.

Примеры правильных меток:

  • 10 (число)
  • t2 (строка)
  • ch (строка)

Как работает оператор безусловного перехода

Когда выполняется оператор goto, происходит безусловный переход к оператору, обозначенному меткой (через знак двоеточие)

метка: оператор;

Например:

vvod: readln(n);

Переход к метке vvod вызывает выполнение оператора readln(n), а затем следующих за ним операторов.

Таким образом, оператор goto меняет порядок выполнения операторов в программе.

Оператор выбора case

Приведем в пример задачу, которую можно решить с использованием оператора выбора case.

Задача. Пользователь вводит свой год рождения. Программа сообщает, сколько полных лет пользователю.

Разберемся с окончаниями и русским языком.

1 год, 2 года, 3 года, 4 года, 5-20 лет, 21 год, 22-24 года, 25-30 лет

Исходные данные:

n - год рождения пользователя (тип integer)

t - текущий год (тип integer)

Выходные данные:

сообщение о возрасте с окончанием год, года, лет

Как будем решать задачу

  1. вычислим последнюю цифру числа (возраста)
  2. организуем выбор значения последней цифры из вариантов 1, 2-4, прочих

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

1: программа должна вывести окончание год

2-4: года

иначе: лет

Программа решения на языке Паскаль

var n,t:integer;

begin

   writeln('Введи свой год рождения');

   readln(n);

   t:=2022;

   case (t-n) mod 10 of

   1: writeln('Тебе в этом году ',t-n,' год');

   2..4: writeln('Тебе в этом году ',t-n,' года');

   else

      writeln('Тебе в этом году ',t-n,' лет'); 

   end;

end.

Формат оператора выбора

case выражение of

константа 1: оператор 1; 

константа 2: оператор 2; 

константа 3: оператор 3;

 ... 

константа N: оператор N

else оператор 

end;  

Как работает оператор выбора

Если значение выражения равно значению Константы N, то выполняется Оператор N, в противном случае выполняется Оператор после слова else, если же ветка else отсутствует, то действие переходит к следующему оператору в программе. В качестве выражения и константы должны выступать значения порядкового типа (например, integer, char). В качестве константы можно использовать список (например, 1,2,3) или диапазон (например, 10..99).

А что, если пользователь введет не положительное число?

Задан проходной балл. Запрашиваются оценки абитуриента на трех экзаменах и сообщается о результате приема в институт.

Читать

Определить, делителем каких целых чисел из А, В и С является целое число N.

Читать

Дано трехзначное число. Определить, является ли сумма его цифр двузначным числом

Читать

Является ли число двузначным

Читать

Известен рост трех человек. Определить, одинаков ли их рост?

Читать

12.02.2022

Головоломка Делители

Количество делителей натурального числа

Делители числа

Делитель - это такое число, которое делит число без остатка.

Например, у числа 6 ровно 4 делителя - 1, 2, 3, 6. При делении числа 6 на эти числа не остается остатка.

Можете ли вы назвать в промежутке от 1 до 100 пяти чисел, у которых ровно 12 делителей?

Для ответа на данный вопрос воспользуемся формулой расчета количества делителей и основной теоремой математики.

11.02.2022

Язык Паскаль. Сформировать массив случайных чисел

Сформировать массив случайных чисел (язык Паскаль)

Будем получать случайное целое число функцией random из промежутка [-30, 70].

В цикле for для счетчика k от 1 до N будем получать случайное число и присваивать его ячейке массива a[k], значение ячейки будем выводить на экран оператором write(a[k],' ')

Генератор случайных чисел в Паскале

Функция random для генерации случайного числа

В средах программирования или в приложениях электронных таблиц имеется возможность генерации случайного числа.

Рассмотрим получение случайных чисел:

  • вещественных
  • целых

 Будем использовать среду программирования PascalABC.NET.

Решим также задачу с использованием случайного числа.

Выполним присваивание

a:=random;

a:=random;

При использовании такого выражения и переменной типа integer возникает ошибка.

Делаем вывод

Функция random выдает значение типа real в диапазоне [0; 1)

a:=random;a:=random;

Значит для использования функции random и получения вещественного числа будет использовать переменную типа real.

Для получения целого числа воспользуемся присваиванием

a:=random(10); 


В данном случае будут случайно сгенерированы первые 10 неотрицательных чисел в промежутке от 0 до 9.

a:=random(10);

Чтобы получить целое число из промежутка [a; b], воспользуемся формулой:

a+random(b-a+1)



Пусть нужно получить случайное число из промежутка [-2; 10]


Формула примет такой вид:

 -2 + random(10-(-2)+1) = -2 + random(13)


Если random(13) сгенерирует 0, то будет получена левая граница промежутка -2 + 0 = -2, если random(13) сгенерирует 12, то будет получена правая граница -2+12 = 10.

a:=-2+random(13);

Для получения случайного числа из промежутка также можно  воспользоваться функцией random с двумя аргументами - левой и правой границами промежутка (в среде Free Pascal работать не будет).

a:=random(-2,12);

Задача. Получить 30 случайных чисел из промежутка [-2;12] и вывести их на экран.

Воспользуемся циклом for с счетчиком x от 1 до 30, сгенерируем и выведем на экран 30 случайных чисел.

a:=random(-2,12);

Итоги

Как использовать функцию random для генерации случайного числа

  • Вещественное число

a1:=random*10;

  • Целое число

a2:=random(100);

a3:=random(20,50);

a4:=-40+random(41);

Напишите в комментариях, какие числа будут получены с помощью таких присваиваний?

Программа получения массива случайных чисел.

Язык Паскаль. Количество упаковочной бумаги для коробки

Как упаковать коробку в бумагу

Перед каждым человеком, наверное, когда-либо стояла задача упаковать подарок. Подсчитаем количество упаковочной бумаги, необходимой для коробки с заданными размерами.

Задача. Есть коробка с размерами x, y, h (длина, ширина, высота в см). Каким должен быть по своему размеру лист упаковочной бумаги? Вычислить его длину и ширину.

Длина листа упаковочной бумаги рассчитывается по формуле: 2y + 2h + 4 (см)

Ширина листа упаковочной бумаги рассчитывается по формуле: x + 2h (см)

Программа решения задачи на языке Паскаль

var x,y,h,xL,yL:integer;

begin

   println('Введите размеры коробки в см: длину, ширину, высоту');

   readln(x,y,h);

   xL:=2*y+2*h+4;

   yL:=x+2*h;

   println('Вам понадобится лист упаковочной бумаги');

   println('длиной:',xL,'см');

   println('шириной:',yL,'см');

end.

Результат запуска программы

запуск программы

Язык Паскаль. Рассчитать количество плитки

Задача. Имеется поверхность пола длиной x и шириной y и плитка размерами x1 на y1. Какое количество плитки понадобится для укладки пола?

Размеры пола и плитки будем задавать в мм.

При укладке базовым (традиционным) способом края плитки параллельны стенам помещения.

Количество плитки рассчитывается по формуле: k = xy/(x1y1).

Программа решения задачи на языке Паскаль

var x,y,x1,y1:integer; k:real;

begin

   writeln('Введите размеры пола в мм (длину и ширину)');

   readln(x,y);

   writeln('Введите размеры плитки в мм (длину и ширину)');

   readln(x1,y1);

   k:=x*y/(x1*y1);

   writeln('Вам понадобится ',k,' плиток');

end.

Если количество плиток не целое число, то придется купить на 1 больше.

Например, если расчет 77.7 плитки, покупаем 78.

Результат запуска программы

результат запуска

09.02.2022

Язык Паскаль. Является ли число простым?

Задача. Дано натуральное число N. Верно ли, что данное число простое?

Простое число - это натуральное число, имеющее ровно 2 делителя (единицу и само число).

Для ответа на вопрос задачи будем перебирать натуральные числа i в диапазоне от 1 до N, если число i делит N без остатка, будем увеличивать значение переменной k (счетчик делителей). Если значение k = 2, то число простое, иначе не простое.

Программа решения на языке Паскаль

var i,n,k:integer;

begin

   writeln('Введите натуральное число N ');

   readln(n);

   k:=0;

   for i:=1 to n do

    if n mod i=0 then k:=k+1;

   if k=2 then writeln('число простое') else writeln('число не простое');

end.

Результат запуска программы

Выполнение программы

Выполнение программы

Похожим алгоритмом можно искать совершенные числа, такие как:
6, 28, 496..

Совершенное число - натуральное число, равное сумме своих делителей, не считая само число.

6 = 1 + 2 + 3

28 = 1 + 2 + 4 + 7 + 14

Напишите программу и найдите 4, 5, 6-ое совершенные числа.

08.02.2022

Язык Паскаль. Найти максимум и его номер

Известны максимальные скорости каждой из 10 иномарок легковых автомобилей. Определить, какой автомобиль (по номеру) самый быстрый.

Скорость 1-ого автомобиля возьмем за начальное значение искомого максимума m, а искомый номер тогда возьмем за 1. Будем вводить скорости и сравнивать их с m, если очередная введенная скорость больше m, то значение m будем менять на значение этой скорости, также будем сохранять порядковый номер в переменной k.

Программа решения:

var i,a,k,m:integer;

begin

   writeln('Введите максимальные скорости 10 автомобилей ');

   readln(m);k:=1;

   for i:=2 to 10 do

    begin

     readln(a);

     if a>m then begin m:=a;k:=i;end;

    end;

   writeln('Скорость самого быстрого автомобиля ',m);

   writeln('Номер автомобиля ',k);

end.

Результат выполнения программы:

Выполнения программы

Найдите максимальную скорость автомобиля вторую по величине и номер этого автомобиля.

Например: всего 5 автомобилей

Максимальные скорости автомобилей: 150 180 220 250 210

Ответ: 220, 3

Напишите программу в комментариях


07.02.2022

Язык Паскаль. Найти в предложении самое длинное слово

Задача. Дано предложение s. Найти и вывести самое длинное слово.

Будем пользоваться алгоритмом выделения слов из предложения, мы рассматривали его ранее в этом блоге. Длины слов сравним, осуществляя алгоритм поиска максимума, само слово сохраним в переменной ymax.

Программа решения задачи на языке Паскаль

var s,y,ymax:string; k,m:integer;

begin

  writeln('Введите предложение');

  readln(s);

  s:=s+' ';

  y:='';

  for k:=1 to length(s) do

   if s[k]=' ' then begin

                     if length(y)>m then begin m:=length(y); ymax:=y; end;

                     y:='';

                    end

               else y:=y+s[k];

  writeln('Самое длинное слово: ',ymax);

end.

Результат запуска программы

результат запуска

06.02.2022

Язык Паскаль. Числа с заданным числом делителей

Задача. В промежутке от 1 до 100 найти числа с 6 делителями.

Воспользуемся конструкцией вложенных циклов

for k:=1 to 100 do

 begin

  for j:=1 to k do

   begin

     if k  mod j = 0 then...

   end;

 end;

Где k - это число от 1 до 100, j - предполагаемый делитель числа k.

Если число k делится на j без остатка, то будем копить количество делителей s. Если количество делителей для данного числа k равно 6, то число k выводим на экран, для каждого числа k количество делителей s обнуляем во внешнем цикле.

Программа решения задачи на языке Паскаль

var k,s,j:integer;

begin

    for k:=1 to 100 do

    begin

      s:=0;

      for j:=1 to k do

        if k mod j=0 then s:=s+1;

      if s=6 then write(k,' ');

    end;

end.

Результат запуска программы

результат запуска

А что, если в заданном промежутке нужно найти числа ровно с 1000 делителями?

Напишите свои предположения в комментариях.

Основная теорема арифметики

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

Например: число 1260 = 22 * 3* 5 * 7

Зная такое разложение можно подсчитать количество натуральных делителей.

Для числа 1260 количество делителей равно (2+1)*(2+1)*(1+1)*(1+1) = 36.

Если разложение числа представить в виде:
a = p1s1p2s2p3s3…pnsn,

тогда количество делителей рассчитывается по формуле: 
(s1+1)*(s2+1)*(s3+1)*..*(sn+1)

Найдем числа, имеющие ровно 6 делителей.

Язык Паскаль. Вывести слова предложения в столбец

Задача. Дано предложение s. Вывести все его слова в столбец.

Будем считать, что слова разделяются одним пробелом. Будем идти вдоль строки, если символ равен пробелу, то выводим накопленное слово y и обнуляем его, иначе копим слово y.

При таком условии необходимо заранее в конец предложения положить пробел, чтобы вывести последнее накопленное слово.

Программа решения задачи на языке Паскаль

var s,y:string; k:integer;

begin

  writeln('Введите предложение');

  readln(s);

  s:=s+' ';

  y:='';

  for k:=1 to length(s) do

   if s[k]=' ' then begin

                     writeln(y);

                     y:='';

                    end

               else y:=y+s[k];

end.

Результат запуска программы

результат запуска

Обратите внимание, что знак препинания "прилипает" к слову и в данном случае является его частью.

05.02.2022

Верно ли, что в строке имеется заданная подстрока?

Дана строка s. Верно ли, что в строке s имеется заданная подстрока y?

Для определения принадлежности некоторой подстроки заданной сроке будем использовать операцию вхождения in.

Программа решения на языке Паскаль:

var s,y:string;

begin

  writeln('Введите строку');

  readln(s);

  writeln('Введите подстроку');

  readln(y);

  if y in s then writeln('верно, подстрока ',y,' входит в строку ',s) else writeln('неверно, подстрока ',y,' не входит в строку ',s);

end.

04.02.2022

Верно ли, что четных цифр больше, чем нечетных

Задача. Дано натуральное число N. Верно ли, что четных цифр больше, чем нечетных?

Воспользуемся циклом while с условием продолжения: n не равно 0.

Пока число n не равно 0, будем вычислять остаток от деления на 10 - это будет цифра числа, будем уменьшать число n в 10 раз операцией div (деление нацело). Также будем выяснять, какая перед нами цифра, четная или нечетная, и копить два счетчика k и c (количество четных и количество нечетных цифр).

После цикла сравним значения счетчиков k и c.

Программа решения задачи на языке Паскаль:

var n,k,c:integer;

begin

readln(n);

k:=0; c:=0;

while n<>0 do

begin

d:=n mod 10; //цифра

if (d mod 2=0) then k:=k+1 else c:=c+1;

n:=n div 10;

end;

if k>c then writeln('верно') else writeln('неверно');

end.

Программа решения задачи на языке Python

n = int(input('Введите натуральное число: ')) k = 0 c = 0 while n!=0: d = n % 10 if d % 2 == 0: k+=1 else: c+=1 n//=10 if k>c: print('Верно') else: print('Неверно')

Вывести на экран цифры заданного числа

Задача. Дано натуральное число N. Вывести на экран в столбец цифры данного числа

Воспользуемся циклом while с условием продолжения n не равно 0. Пока число n не равно 0, будем вычислять остаток от деления на 10,  и это будет цифра числа, будем уменьшать число n в 10 раз операцией div (деление нацело).

Программа решения на языке Паскаль

var n, d:integer;

begin

readln(n);

while n<>0 do

begin

d:=n mod 10;

println(d);

n:=n div 10;

end;

end.

Программа решения на языке Python

n = int(input('Введите число n = '))
while n!=0:
    d = n % 10
    print(d)
    n = n // 10

Результат запуска программы


Обратим внимание на то, что цифры выводятся в обратном порядке.

03.02.2022

Вывести на экран все натуральные двузначные числа

Вывести на экран в столбец все натуральные двузначные числа

Запустим цикл for для счетчика i с начальным значением 10 (наименьшее двузначное число) и конечным значением 99 (наибольшее двузначное число), в теле цикла выведем значение счетчика на экран.

Программа решения на языке Паскаль:

var i:integer;

begin

for i:=10 to 99 do

writeln(i);

end.