Аватар
Информатика, опубликовано 2018-08-22 23:34:35 by Гость

Объединить два случайным образом созданных массива в один упорядочить новый массив по убыванию Pascal ABC по теме: сортировка массива

Аватар
Ответ оставил Гость

1. Примерно так учат писать программы в школе...

const
  nn=100; // предельное кол-во элементов в массиве
type
  mas=array[1..nn] of integer;

procedure RandomArray(var a:mas;n,p,q:integer);
// Заполняет первые n элементов массива a
// случайными числами из интервала [p;q]
var
  i:integer;
begin
  for i:=1 to n do a[i]:=Random(q-p+1)+p
end;

procedure PrintArray(a:mas;n:integer);
// Выводит на экран первые n элементов массива a
var
  i:integer;
begin
  for i:=1 to n do Write(a[i], );
  Writeln
end;

procedure SortByDescending(var a:mas;n:integer);
// Сортирует по невозрастанию первые n элементов массива a.
// Элементарная обменная сортировка
var
  i,j,t:integer;
begin
  for i:=1 to n-1 do
    for j:=1 to n-1 do
      if a[j]        begin t:=a[j]; a[j]:=a[j+1]; a[j+1]:=t end
end;

// Основная программа
var
  i,n1,n2,n3,x,y:integer;
  a,b,c:mas;
begin
  Randomize;
  Write(Кол-во элементов в массиве и границы интервала из значений: );
  Read(n1,x,y);
  RandomArray(a,n1,x,y);
  Write(Кол-во элементов в массиве и границы интервала из значений: );
  Read(n2,x,y);
  RandomArray(b,n2,x,y);
  Write(Первый массив: ); PrintArray(a,n1);
  Write(Второй массив: ); PrintArray(b,n2);
  Writeln(Объединенный массив, отсортированный по невозрастанию);
  n3:=n1+n2;
  for i:=1 to n1 do c[i]:=a[i];
  for i:=1 to n2 do c[i+n1]:=b[i];
  SortByDescending(c,n3);
  PrintArray(c,n3)
end.

Тестовое решение
Кол-во элементов в массиве и границы интервала из значений: 8 10 60
Кол-во элементов в массиве и границы интервала из значений: 6 30 90
Первый массив: 41 56 14 57 52 51 30 54
Второй массив: 76 36 44 39 68 38
Объединенный массив, отсортированный по невозрастанию
76 68 57 56 54 52 51 44 41 39 38 36 30 14

2. На самом деле эту же задачу можно написать гораздо короче

// PascalABC.NET 3.1, сборка 1246 от 23.05.2016
begin
  var n1,n2,x,y:integer;
  Write(Кол-во элементов в массиве и границы интервала из значений: );
  Read(n1,x,y);
  var a:=ArrRandom(n1,x,y);
  Write(Кол-во элементов в массиве и границы интервала из значений: );
  Read(n2,x,y);
  var b:=ArrRandom(n2,x,y);
  Write(Первый массив: ); a.Println;
  Write(Второй массив: ); b.Println;
  Writeln(Объединенный массив, отсортированный по невозрастанию);
  var c:=(a+b).SortedDescending; c.Println
end.

Вопрос
Не нашли ответа?
Если вы не нашли ответа на свой вопрос, или сомневаетесь в его правильности, то можете воспользоваться формой ниже и уточнить решение. Или воспользуйтесь формой поиска и найдите похожие ответы по предмету Информатика.