Задача 1:
Сгенерировать случайное число, вывести на экран это число, а также сумму и произведение его цифр.
Алгоритм решения задачи:
random(900) генерирует случайное число от 0 до 899. Если прибавить к нему 100, то получится диапазон от 100 до 999 включительно, т. е. охватывает все трехзначные числа.
Чтобы извлечь из числа цифру сотен надо его разделить нацело на 100.
Для получения цифры десяток можно сначала разделить нацело на 10, а затем найти остаток от деления на 10.
Единицы извлекаются путем нахождения остатка от деления числа на 10.
Программа на языке Паскаль:
var n: integer; a,b,c: byte; begin randomize; n := random(900) + 100; writeln(n); a := n div 100; b := n div 10 mod 10; c := n mod 10; writeln('Сумма: ',a+b+c); writeln('Произведение: ',a*b*c); end.
Пример выполнения программы:
536 Сумма: 14 Произведение: 90
Задача 2:
Сгенерировать случайные целое число, вещественное число, букву в диапазонах, которые вводит пользователь.
Описание переменных:
min_i, max_i - минимальная и максимальная границы диапазона для целого числа;
n_i - случайное целое число;
min_f, max_f - минимальная и максимальная границы диапазона для вещественного числа;
n_f - случайное вещественное число;
first_c, last_c - первый и последний символ диапазона, в котором должен быть сгенерирован случайный символ;
min_c, max_c - коды-числа, соответствующие указанным символам;
n_c - случайное число, которое будет переведено в символ по таблице ASCII.
Программа на языке Паскаль:
var min_i, max_i, n_i: integer; min_f, max_f, n_f: real; first_c, last_c: char; min_c, max_c, n_c: byte; begin randomize; write('Minimum integer: '); readln(min_i); write('Maximum integer: '); readln(max_i); n_i := random(max_i-min_i+1) + min_i; writeln(n_i); write('Minimum float: '); readln(min_f); write('Maximum float: '); readln(max_f); n_f := random() * (max_f-min_f) + min_f; writeln(n_f:5:2); write('First char: '); readln(first_c); write('Last char: '); readln(last_c); min_c := ord(first_c); max_c := ord(last_c); n_c := random(max_c-min_c+1) + min_c; writeln(chr(n_c)); end.
Пример выполнения программы:
Minimum integer: -100 Maximum integer: 100 -46 Minimum float: 0.23 Maximum float: 0.85 0.53 First char: k Last char: q p
Задача 3:
Найти позицию в алфавите двух английских букв и количество символов между ними.
Определить букву по ее позиции в алфавите.
Алгоритм решения задачи:
Позиция буквы в алфавите определяется ее "смещением" относительно первой буквы алфавита. Если знать коды первой буквы и искомой, то разность их кодов покажет, на сколько позиций они отстоят друг от друга. В языке программирования Pascal код-номер буквы по таблице кодов символов ASCII определяется с помощью функции ord(), которой в качестве значения передается символ.
Для обратного действия - определения буквы по ее известной позиции в алфавите - надо к позиции буквы прибавить код первой буквы алфавита. После этого получить искомую букву по ее коду. Это делается с помощью функции chr(), которой передается число-код символа по таблице ASCII.
Программа на языке Паскаль:
var a,b: char; an, bn, n: byte; begin write('Буква 1: '); readln(a); write('Буква 2: '); readln(b); an := ord(a); bn := ord(b); writeln('Позиция 1: ', an-ord('a')+1); writeln('Позиция 2: ', bn-ord('a')+1); n := abs(bn-an)-1; writeln('Количество букв между ними: ', n); writeln; write('Позиция буквы в алфвите: '); readln(n); n := n+ord('a')-1; writeln('Это буква - ', chr(n)); end.
Пример выполнения программы:
Буква 1: w Буква 2: z Позиция 1: 23 Позиция 2: 26 Количество букв между ними: 2 Позиция буквы в алфвите: 10 Это буква - j
Задача 4:
По координатам двух точек, которые вводит пользователь, определить уравнение прямой, проходящей через эти точки.
Алгоритм решения задачи:
Общий вид уравнения прямой имеет вид y = kx + b. Чтобы найти уравнение для конкретной прямой, необходимо вычислить коэффициенты k и b. Сделать это можно, если известны координаты двух точек, лежащих на этой прямой. В этом случае решается система уравнений:
| y1 = kx1 + b
| y2 = kx2 + b
b = y2 - kx2
y1 = kx1 + y2 - kx2
k = (y1 - y2) / (x1 - x2)
b = y2 - k*x2
Программа на языке Паскаль:
var x1,y1,x2,y2: real; k, b: real; begin write('A(x1;y1): '); readln(x1, y1); write('B(x2;y2): '); readln(x2, y2); k := (y1 - y2) / (x1 - x2); b := y2 - k * x2; writeln('y = ',k:0:2,'x + ',b:0:2); end.
Примеры выполнения программы:
A(x1;y1): 6 9 B(x2;y2): -1 3 y = 0.86x + 3.86
A(x1;y1): 1.2 5.6 B(x2;y2): -3.45 8.2 y = -0.56x + 6.27