Задача:
Робот-компостер проверяет билеты в автобусе.
существует 3 типа билетов:
1. по 3 рубля без места
2. по 5 рублей с местом в случае выхожа другого пассажира
3. по 10 рублей с гарантированным сидячим местом
Робот запрашивает у пассажира цену билета и, в зависимости от неё, выдает ответы:
- проезд стоя;
- ждите места;
- присаживайтесь ЗАДАЧУ НАДО СДЕЛАТЬ В ПАСКАЛЕ
===== PascalABC.NET =====
function НОД(a, b: integer): integer;
begin
(a, b) := (Abs(a), Abs(b));
while b <> 0 do
(a, b) := (b, a mod b);
Result := a
end;
function Подходит(a, b: integer) :=
(Sign(a) = Sign(b)) and (b <> 0);
procedure СократитьДробь(var a, b: integer);
begin
var d := НОД(a, b);
if d > 1 then
(a, b) := (a div d, b div d)
end;
begin
Println('Введите соотношения металлов в сплаве.');
Println('Числа частей целые и вводятся через пробел.');
var (a1, b1) := ReadInteger2('Первый сплав:');
var (a2, b2) := ReadInteger2('Второй сплав:');;
var (a3, b3) := ReadInteger2('Нужный сплав:');;
var y1 := (a2 + b2) * (a1 * b3 - b1 * a3);
var y2 := a1 * b2 - a2 * b1;
if not Подходит(y1, y2) then
begin
Println('Решения нет');
exit
end;
var x1 := (a3 + b3) * y2 - y1;
var x2 := y2;
if not Подходит(x1, x2) then
begin
Println('Решения нет');
exit
end;
СократитьДробь(y1, y2);
СократитьДробь(x1, x2);
var (r1, r2) := (x1 * y2, x2 * y1);
СократитьДробь(r1, r2);
var v := ReadReal('Требуемый объем сплава:');
Writeln('Соотношение частей металла ', r1, ' : ', r2);
Writeln('Соотношение объемов: ', v * r1 / (r1 + r2),
' : ', v * r2 / (r1 + r2))
end.
===== PascalABC.NET =====
-№1-
begin
var (Яблок, Апельсинов, Бананов) :=
ReadInteger3('Число яблок, апельсинов и бананов:');
var ВесЯблок := 100 * Яблок;
var ВесАпельсинов := 150 * Апельсинов;
var ВесБананов := 170 * Бананов;
if ВесЯблок > ВесАпельсинов then
if ВесЯблок > ВесБананов then
Print('Берем яблоки')
else
Print('Берем бананы')
else if ВесАпельсинов > ВесБананов then
Print('Берем апельсины')
else
Print('Берем бананы')
end.
-№2-
begin
var n := ReadInteger('Введите натуральное число;');
var P := new HashSet<integer>; // это множество целых
while n > 0 do
begin
P += n mod 10; // очередную цифру добавляем ко множеству
n := n div 10
end;
P.Count.Println // в множестве все элементы уникальны
end.