С ИНФОРМАТИКОЙ ПАСКАЛЬ 9 КЛАСС Вводится четырёхзначное число. Определить количество различных чисел, которое можно составить из цифр данного числа (цифру нельзя дублировать, если в исходное число она входит 1 раз). Само число также учитывается при подсчёте.
PascalABC.NET
1. Короткое, внешне изящное, но крайне неэффективное решение, поскольку массив просматривается ПЯТЬ раз.
begin
var a := ArrRandom(40, 0, 120);
a.Println;
Println('Элементов, равных 30:', a.Count(p -> p = 30));
Println('Сумма элементов:', a.Sum);
Println('Среднее арифметическое элементов:', a.Average);
var (imax, imin) := (a.IndexMax, a.IndexMin);
Println('Максимальный элемент №', imax + 1, '=', a[imax]);
Println('Минимальный элемент №', imin + 1, '=', a[imin])
end.
2. Более длинное решение, но с ОДНИМ просмотром массива и поэтому эффективное.
begin
var a := ArrRandom(40, 0, 120);
a.Println;
var (k, s, imax, imin) := (0, 0, 0, 0);
for var i := 0 to a.High do
begin
if a[i] = 30 then
Inc(k);
s += a[i];
if a[i] > a[imax] then
imax := i
else if a[i] < a[imin] then
imin := i
end;
Println('Элементов, равных 30:', k);
Println('Сумма элементов:', s);
Println('Среднее арифметическое элементов:', s / 40);
Println('Максимальный элемент №', imax + 1, '=', a[imax]);
Println('Минимальный элемент №', imin + 1, '=', a[imin])
end.
var
a, b, c, d, l, m, n, p, k, r: integer;
S, u: real;
begin
writeln('Оклейка комнаты обоями. Все размеры в см.');
write('Укажи длину, ширину и высоту комнаты: ');
readln(a, b, c);
write('Укажи ширину и высоту двери: ');
readln(p, k);
write('Укажи ширину и высоту окна: ');
readln(m, n);
write('Укажи длину и ширину рулона обоев: ');
readln(l, d);
S := 2 * c * (a + b) - p * k - m * n; { площадь оклейки }
u := l * d; { площадь одного рулона }
r := Trunc(S / u);
if Frac(S / u) > 0.05 then
r := r + 1;
writeln('Потребуется рулонов: ', r)
end.