Непростая задача...
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
здесь решение на паскале, с блок-схемами давно не работал, ты если что по программе составь, если что-то не понятно будет, то пиши в личку
#9:
bool res = (A % 2 != 0 || B % 2 != 0);
#10:
bool res = (A % 2 != 0 && B % 2 == 0 || A % 2 == 0 && B % 2 != 0);
#11:
bool res = (A % 2 == B % 2);
#12:
bool res = (A >= 0 && B >= 0 && C >= 0);
#13:
bool res = (A >= 0 || B >= 0 || C >= 0);
#14:
bool res = (A >= 0 && B <0 && C < 0 || A < 0 && B >= 0 && C < 0 || A < 0 && B < 0 && C >= 0);
#15:
bool res = (A >= 0 && B >= 0 && C < 0 || A >= 0 && B < 0 && C >= 0 || A < 0 && B >= 0 && C >= 0);
#16:
bool res = (A % 2 == 0 && A % 10 != 0 && A % 100 == 0);
#17:
bool res = (A % 2 != 0 && A % 100 != 0 && A % 1000 == 0);
#18:
bool res = (A == B || A == C || B == C);
#19:
bool res = (A + B == 0 || A + C == 0 || B + C == 0);
1)
program perviynomer;
var
a,b:integer;
begin
write ('Введите 1-ое число: ');
ReadLn(a);
write ('Введите 2-ое число: ');
ReadLn(b);
if a>b then
writeln('Задача решена ',a+b)
else
writeln('Задача решена ',a*b);
readln;
end.
2)
program vtoraya;
var
a:integer;
begin
write('Введите число: ');
ReadLn(a);
if (a>=-5) and (a<=3) then writeln('Число ', a,' лежит в данном промежутке') else
WriteLn('Число ', a,' не лежит в данном промежутке');
readln;
end.
3)
program tretya;
Var
X,Y:real;
Begin
Write('X = ');
ReadLn(X);
Write('Y = ');
ReadLn(Y);
if X>0 then
if Y>0 then Write('Первая четверть')
else Write('Вторая четверть')
else
if Y<0 then Write('Третья четверть')
else Write('Четвёртая четверть')
End.
5)
program chetvertaya;
uses crt;
var
a,b,c:real;
begin
Write('Введите 1-ое число: ');
readln(a);
write('Введите 2-ое число: ');
readln(b);
Write('Введите 3-ие число: ');
readln(c);
if a > b then
if b > c then writeln('Сумма наибольших: ',a+b)
else writeln('Сумма наибольших: ',a+c)
else if a > c then writeln('Сумма наибольших: ',a+b)
else writeln('Сумма наибольших: ',b+c);
readln;
end.