Procedure GetRV(var r, v: real; var Final: boolean); { Организует ввод и возвращает значения роста и веса. Значение параметра Final=true - сигнал окончить ввод данных, для чего вводят нули } begin Write('Введите рост (см) и вес (кг) ->'); Readln(r, v); Final := ((r > 0) and (v > 0)) end;
function DefDesk(r: real): string; begin if r <= 140 then DefDesk := 'S' else if r < 150 then DefDesk := 'M' else DefDesk := 'L' end;
var rost, ves: real; flag: boolean;
begin repeat GetRV(rost, ves, flag); if flag then Writeln('Нужна парта типа ', DefDesk(rost)) until (not flag) end.
Тестовое решение: Введите рост (см) и вес (кг) ->135 31 Нужна парта типа S Введите рост (см) и вес (кг) ->143 41 Нужна парта типа M Введите рост (см) и вес (кг) ->151 48 Нужна парта типа L Введите рост (см) и вес (кг) ->0 0
Чтобы не искать число за числом по калькулятору, будем рассуждать логически:
Попробуем составить уравнение, которое нам.
Нам нужно, чтобы двузначное число делилось на произведение своих цифр. Представим само число как сумму десятков и единиц:
10x + y
А произведение представим просто:
x × y
Теперь уравняем их:
10x + y = x × y
x ≠ 0
y ≠ 0
1. Возьмём x = 1
10 × 1 + y = 1 × y
10 + y = y
Теперь разделим левую часть на правую. Суть этого уравнения состоит в том, что левая часть уравнения должна делиться на правую без остатка. Таким образом мы и найдём все двузначные числа, которые кратны произведению своих цифр.)
Значится:
(10 + y) ÷ y = 10/y + y/y = 10/y + 1
Смотрим. В сумме должно получится ЦЕЛОЕ число. Чтобы оно получилось, надо знать, на что делится десятка без остатка. А делится она на 1, 2 и 5.) Значит, "игрек" будет равен этим числам. первые три числа уже нашли. Это:
11, 12 и 15.
2. Теперь возьмём x = 2
10 × 2 + y = 2 × y
20 + y = 2y
(20 + y) ÷ 2y = 20/2y + y/2y = 10/y + 1/2
Опять же - в сумме должно получится ЦЕЛОЕ число. Значит надо думать, на что поделить десятку, чтобы потом полученное число сложить с дробью 1/2 (0,5) и в конечном счёте получить целое число.
Очевидно, что это цифра "4", т.к. 10 ÷ 4 = 2,5. А 2,5 + 0,5 = 3 - целое число.)
Значит, y = 4. В итоге получаем ещё одно число, кратное произведению своих цифр:
24.
3. Теперь x = 3
10 × 3 + y = 3 × y
30 + y = 3y
(30 + y) ÷ 3y = 30/3y + y/3y = 10/y + 1/3
Те же манипуляции. Ищем, на что дожна делиться десятка, чтобы полученное число прибавить к 1/3 и получить целое число.)
Это цифра "6". y = 6
10/6 = 5/3 = 1 целая и 2/3. 1 целая и 2/3 + 1/3 = 3.
Нашли ещё одно число:
36.
4. x = 4
10 × 4 + y = 4 × y
40 + y = 4y
(40 + y) ÷ 4y = 40/4y + y/4y = 10/y + 1/4
Думаем. Но думать здесь нечего. Единственное число от 1 до 9, на которое можно поделить десятку - это 8. Но если мы поделим:
10/8 = 5/4 = 1 целая и 1/4,
то мы увидим, что, прибавив 1/4 к полученному результату, целое число мы не получим. Здесь не подходит.
Во всех остальных значениях "икс" - 5, 6, 7, 8 и 9 - цифру "игрек" также нельзя найти.
Всё. То, что мы получили - и есть все двузначные числа, которые кратны произведению своих цифр:
{ Организует ввод и возвращает значения роста и веса.
Значение параметра Final=true - сигнал окончить ввод данных,
для чего вводят нули }
begin
Write('Введите рост (см) и вес (кг) ->');
Readln(r, v);
Final := ((r > 0) and (v > 0))
end;
function DefDesk(r: real): string;
begin
if r <= 140 then DefDesk := 'S'
else if r < 150 then DefDesk := 'M'
else DefDesk := 'L'
end;
var
rost, ves: real;
flag: boolean;
begin
repeat
GetRV(rost, ves, flag);
if flag then Writeln('Нужна парта типа ', DefDesk(rost))
until (not flag)
end.
Тестовое решение:
Введите рост (см) и вес (кг) ->135 31
Нужна парта типа S
Введите рост (см) и вес (кг) ->143 41
Нужна парта типа M
Введите рост (см) и вес (кг) ->151 48
Нужна парта типа L
Введите рост (см) и вес (кг) ->0 0
Чтобы не искать число за числом по калькулятору, будем рассуждать логически:
Попробуем составить уравнение, которое нам.
Нам нужно, чтобы двузначное число делилось на произведение своих цифр. Представим само число как сумму десятков и единиц:
10x + y
А произведение представим просто:
x × y
Теперь уравняем их:
10x + y = x × y
x ≠ 0
y ≠ 0
1. Возьмём x = 1
10 × 1 + y = 1 × y
10 + y = y
Теперь разделим левую часть на правую. Суть этого уравнения состоит в том, что левая часть уравнения должна делиться на правую без остатка. Таким образом мы и найдём все двузначные числа, которые кратны произведению своих цифр.)
Значится:
(10 + y) ÷ y = 10/y + y/y = 10/y + 1
Смотрим. В сумме должно получится ЦЕЛОЕ число. Чтобы оно получилось, надо знать, на что делится десятка без остатка. А делится она на 1, 2 и 5.) Значит, "игрек" будет равен этим числам. первые три числа уже нашли. Это:
11, 12 и 15.
2. Теперь возьмём x = 2
10 × 2 + y = 2 × y
20 + y = 2y
(20 + y) ÷ 2y = 20/2y + y/2y = 10/y + 1/2
Опять же - в сумме должно получится ЦЕЛОЕ число. Значит надо думать, на что поделить десятку, чтобы потом полученное число сложить с дробью 1/2 (0,5) и в конечном счёте получить целое число.
Очевидно, что это цифра "4", т.к. 10 ÷ 4 = 2,5. А 2,5 + 0,5 = 3 - целое число.)
Значит, y = 4. В итоге получаем ещё одно число, кратное произведению своих цифр:
24.
3. Теперь x = 3
10 × 3 + y = 3 × y
30 + y = 3y
(30 + y) ÷ 3y = 30/3y + y/3y = 10/y + 1/3
Те же манипуляции. Ищем, на что дожна делиться десятка, чтобы полученное число прибавить к 1/3 и получить целое число.)
Это цифра "6". y = 6
10/6 = 5/3 = 1 целая и 2/3. 1 целая и 2/3 + 1/3 = 3.
Нашли ещё одно число:
36.
4. x = 4
10 × 4 + y = 4 × y
40 + y = 4y
(40 + y) ÷ 4y = 40/4y + y/4y = 10/y + 1/4
Думаем. Но думать здесь нечего. Единственное число от 1 до 9, на которое можно поделить десятку - это 8. Но если мы поделим:
10/8 = 5/4 = 1 целая и 1/4,
то мы увидим, что, прибавив 1/4 к полученному результату, целое число мы не получим. Здесь не подходит.
Во всех остальных значениях "икс" - 5, 6, 7, 8 и 9 - цифру "игрек" также нельзя найти.
Всё. То, что мы получили - и есть все двузначные числа, которые кратны произведению своих цифр:
11, 12, 15, 24 и 36.