Продолжение, начало см. МК № 3, 8, 16, 27 (226, 231, 239, 250) Вот и встретились мы в очередной раз на страницах всеми любимого еженедельника. А это значит, что пора загружать Паскаль. Загрузили? Тогда читайте дальше.

Сначала разберемся с домашним заданием:

Задача №17

Получить 100 случайных чисел, не превышающих число 500. Вывести на экран построчно эти числа, а также подсчитать количество и вывести на экран те из них, которые заканчиваются цифрой 7.

Построчно вывести числа — значит, в каждой строке должно печататься одно число. Остальное, я думаю, понятно:

var mas, mas1: array[1..100] of 0..500; // Объявляем массивы i, j, kolvo: integer; // Объявляем переменные begin Randomize; // Инициализируем генератор случайных чисел for i := 1 to 100 do begin mas[i] := Random(501); // Заполняем массив случайными числами не превышающими 500 writeln(mas[i]); // Выводим массив на экран j := mas[i]-Trunc(mas[i]/10)*10; // Находим последнюю цифру if j = 7 then begin inc(kolvo); // Увеличиваем количество чисел с цифрой 7 в конце на единицу mas1[kolvo] := mas[i]; // Запоминаем числа, оканчивающиеся на 7 end; end; writeln; writeln(kolvo, ' чисел заканчиваются на 7.'); // Выводим результат for i := 1 to kolvo do writeln(mas1[i]); readln; end.

Обратите внимание, что в этой задаче числа не надо разбивать на сотни и десятки. Достаточно лишь найти десятки. Например, в числе 473 — 47 десятков.

Еще одно замечание к условию задачи. В данном случае мы заполняем массив числами от 0 до 500. Но отрицательные числа не превышают 500, поэтому нужно всегда уточнять, входят ли отрицательные числа в диапазон. Если да, то включить их в интервал немудрено. Например, заполнить массив числами от –500 до 500 можно так: mas[i] := Random(1001) — 500. То есть, получаем случайные числа от 0 до 1000 и отнимаем от них 500, в результате имеем числа в интервале от –500 до 500.

Вот такие пироги :-). Решаем следующую задачу:

Задача №18

Составить программу получения целых случайных чисел, не превышающих 1000. Вывести на экран в строку по 5 чисел те из них, которые кратны числам 2 и 7. Количество получаемых случайных чисел задавать с помощью оператора READLN_._

Опять-таки не следует забывать, что числа могут быть отрицательными. В моем решении случайные числа принадлежат диапазону от –1000 до 1000. Хотя вы можете установить другой диапазон — главное, чтобы числа не были больше тысячи.

uses crt; // Подключаем модуль Crt к программе var i, i1, ch: Integer; // Объявляем переменные begin clrscr; // Очищаем экран Randomize; // Инициализируем генератор случайных чисел writeln('Введите количество чисел:'); read(i); // Считываем с клавиатуры количество получаемых случайных чисел writeln; // Для красоты for i1 := 1 to i do begin ch := Random(2001) — 1000; // Получаем случайные числа if (ch mod 2 = 0) and (ch mod 7 = 0) then write(ch:16); // Проверка на кратность end; repeat until keypressed; // Для удобства end.

Сначала подробнее объясню, что такое clrscr. Данная процедура очищает экран и устанавливает курсор в левый верхний угол окна. Это очень удобно, если вы, к примеру, запустили программку два раза. На экране вы видите их обе, и первая мешает сконцентрироваться на второй. К тому же это не очень красиво. Используя же процедуру clrscr, вы видите на мониторе только работающую в данный момент программу.

Функция keypressed играет в нашем случае ту же роль, что и привычный readln в конце программы. То бишь она (программа) не завершится, пока пользователь не нажмет любую клавишу. Учтите, если используется readln, то нужно нажать Enter, а для keypressed сойдет любая клавиша. Точное определение функции keypressed звучит так: она определяет, была ли нажата клавиша на клавиатуре.

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

Задача №19

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

Для тех, кто не знает, что такое десятичная запись, объясняю. Десятичная запись состоит из десяти цифр: 0, 1, 2, …, 8, 9. Это стандартная форма записи чисел, которой все привыкли пользоваться. Вы, наверное, слышали, что для вычислений компьютер использует двоичную форму представления (записи) чисел. Она состоит всего лишь из двух цифр — 0 и 1. Кроме предыдущих двух форм записи чисел довольно часто упоминается еще одна — шестнадцатеричная. Думаю, вы уже поняли, что она состоит из шестнадцати знаков: десять из них — стандартные цифры от 0 до 9, остальные шесть — буквы латиницы: A, B, C, D, E, F. Про разные системы исчислений можно рассказывать еще очень долго, но это не тема нашей статьи, поэтому перейдем к решению поставленной задачи.

uses crt; // Подключаем модуль Crt к программе var n, n1, i, c1, c2, c3, c4: 1000..9999; // Объявляем переменные begin clrscr; // Очищаем экран writeln('Введите интервал для четырехзначных чисел (от и до):'); Read(n, n1); // Принимаем с клавиатуры интервал writeln; // Для красоты for i := n to n1 do begin c1 := Trunc(i/1000); // Вычисляем первый знак числа из интервала c2 := Trunc((i-c1*1000)/100); // Вычисляем второй знак числа из интервала c3 := Trunc((i-c1*1000-c2*100)/10); // Вычисляем третий знак числа из интервала c4 := i-c1*1000-c2*100-c3*10; // Вычисляем четвертый знак числа из интервала if (c1=c2) or (c1=c3) or (c1=c4) or (c2=c3) or (c2=c4) or (c3=c4) then else write(i:5); // Если нет одинаковых цифр, выводим число на экран end; repeat until keypressed; // Для удобства end.

Вот на этой лирической ноте и закончим :-). Осталось лишь записать домашнее задание. На этот раз оно будет состоять из двух задач. Но не пугайтесь, они совсем простые:

Задача №20

Составить программу, определяющую количество оставшихся до конца месяца дней. Текущую дату (день, месяц) вводить с помощью оператора READLN_. Количество дней в феврале принять равным 28._

Задача №21

Водителю необходимо преодолеть расстояние в N км, из них М по городу. Какое при этом требуется минимальное время для прохождения всей дистанции без нарушения допустимых скоростей (60 км/час по городу, 80 км/час за городом). M и N принимать с клавиатуры. Результат выводить с соответствующими комментариями.

И не ленитесь делать домашнее задание, иначе вы никогда не станете хорошим программистом. «Тяжело в учении — легко в бою». Удачи вам в этом нелегком деле.