Непростая задача...
const
n = 16;
type
R = record
v: integer;
p: integer
end;
mR = array[1..n] of R;
function SummOfDigits(n: integer): integer;
{ Сумма цифр в трехзначном числе }
begin
SummOfDigits := (n div 100) + ((n mod 100) div 10) + (n mod 10)
end;
procedure Swp(var a, b: R);
{ Меняет местами элементы a и b }
var
t: R;
begin
t.v := a.v; t.p := a.p;
a.v := b.v; a.p := b.p;
b.v := t.v; b.p := t.p
end;
procedure Shell(var a: mR; n: integer);
{ сортировка методом Шелла }
var
i, j, step: integer;
begin
step := n div 2;
while step > 0 do
begin
for j := n - step downto 1 do
begin
i := j;
while i <= n - step do
begin
if a[i].v > a[i + step].v then Swp(a[i], a[i + step]);
i := i + step
end
end;
step := step div 2
end
end;
var
a: array[1..n] of integer;
b: mR;
i: integer;
begin
Randomize;
Writeln('*** Исходные элементы массива ***');
for i := 1 to n do
begin
a[i] := Random(900) + 100;
b[i].v := SummOfDigits(a[i]);
b[i].p := i;
Write(a[i]:4)
end;
Writeln;
Shell(b, n);
Writeln('*** Упорядоченные по возрастанию суммы цифр элементы массива ***');
for i := 1 to n do
begin
Write(a[b[i].p]:4)
end;
Writeln
end.
Тестовое решение:
*** Исходные элементы массива ***
862 244 599 379 595 840 551 151 614 383 185 893 131 172 139 256
*** Упорядоченные по возрастанию суммы цифр элементы массива ***
131 151 244 172 551 614 840 139 256 185 383 862 595 379 893 599
<span>Microsoft Visual Studio</span>
<<A>>
a = [int(x) for x in input("Введите три целых числа:\n").split()]
max = a[0]
for i in a:
if i > max:
max = i
print("Максимальное число: {}".format(max))
<<B>>
a = [int(x) for x in input("Введите пять целых чисел:\n").split()]
max = a[0]
for i in a:
if i > max:
max = i
print("Максимальное число: {}".format(max))
<<C>>
ages = []
names = ["Антон", "Борис", "Виктор"]
for name in names:
ages.append(int(input("Возраст {}а: ".format(name))))
j = 0
M = []
m = max(ages)
for age in ages:
if age == m:
M.append(j)
j += 1
if len(M) == 1:
print("{} старше всех.".format(names[M[0]]))
elif len(M) == 2:
for i, v in enumerate(names):
if i not in M:
young = v
print("{} и {} старше {}а.".format(names[M[0]], names[M[1]], young))
else:
print("Все трое одного возраста.")
Program Zadacha;
Var s: String;
c: Char;
i, pos, count:
Integer;
Begin
WriteLn('Введите слово:');
ReadLn(s);
WriteLn('Введите символ:');
ReadLn(c);
pos := 0;
count := 0;
For i := 1 To Length(s) Do
If s[i] = c Then
Begin
count := count + 1;
If pos = 0 Then
pos := i;
End;
WriteLn('Позиция символа в строке: ', pos);
WriteLn('Количество вхождений символа в строку: ', count);
ReadLn;
<span>End.</span>
Var k,n:integer;
begin
readln(k);
n:=k mod 7;
writeln('n = ',n);
end.
Пример:
34
n = 6