Солі
09.11.2021 00:55

ів 1. Як перетворити значення дійсного типу на рядок символів?
2. Як перетворити значення цілого типу на рядок символів?
3. Як перетворити рядок символів на значення числового типу?
4. Як вивести десятковий дріб із заданою кількістю знаків у дробові частині?

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
сказка500
15.01.2022 05:01
Непростая задача...

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
0,0(0 оценок)
Ответ:
Otlichnoik
15.01.2022 05:01
Const dlin = 100;
var b:array[1..dlin,1..2] of integer;
      i,j,x:integer;
begin
writeln('Исходный массив:');
for i:=1 to dlin do
 begin
  b[i,1]:=random(800)+100;
  write(b[i,1],' ');
  b[i,2]:=b[i,1] mod 10 + b[i,1] div 100 + b[i,1] div 10 mod 10;
 end;
writeln;

for i:=1 to dlin-1 do
  for j:=dlin-1 downto i do
     if b[j,2]>b[j+1,2] then
     begin
      x:=b[j,2]; b[j,2]:=b[j+1,2]; b[j+1,2]:=x;
      x:=b[j,1]; b[j,1]:=b[j+1,1]; b[j+1,1]:=x;
     end;

writeln('Отсортированный массив:');
for i:=1 to dlin do
   write(b[i,1],' ');

end.
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота