
Вопрос задан 28.10.2023 в 11:54.
Предмет Информатика.
Спрашивает Узакбай Динара.
объединить два случайным образом созданных массива в один упорядочить новый массив по убыванию
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]<a[j+1] then
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.
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]<a[j+1] then
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.



Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.
Для объединения двух массивов в один в языке Pascal ABC мы можем воспользоваться командой "concat".
Пусть у нас есть два случайным образом созданных массива arr1 и arr2:
```pascal
var
arr1, arr2, newArr: array of Integer;
i: Integer;
begin
// Создание и заполнение первого массива
SetLength(arr1, 5);
for i := 0 to Length(arr1) - 1 do
arr1[i] := Random(100); // Заполняем случайными числами от 0 до 99
// Создание и заполнение второго массива
SetLength(arr2, 7);
for i := 0 to Length(arr2) - 1 do
arr2[i] := Random(100); // Заполняем случайными числами от 0 до 99
// Объединение двух массивов
newArr := Concat(arr1, arr2);
// Сортировка нового массива по убыванию
for i := 0 to Length(newArr) - 1 do
for j := i + 1 to Length(newArr) - 1 do
if newArr[i] < newArr[j] then
begin
temp := newArr[i];
newArr[i] := newArr[j];
newArr[j] := temp;
end;
// Вывод отсортированного массива
for i := 0 to Length(newArr) - 1 do
Write(newArr[i], ' ');
Readln;
end.
```
В данном коде мы сначала создаем и заполняем два массива arr1 и arr2 случайными числами от 0 до 99. Затем, используя команду "concat", объединяем их в новый массив newArr.
Далее, используя вложенные циклы, мы сортируем новый массив по убыванию, сравнивая каждый элемент с остальными и меняя их местами при необходимости.
Наконец, мы выводим отсортированный массив newArr на экран.
0
0
Пусть у нас есть два случайным образом созданных массива arr1 и arr2:
```pascal
var
arr1, arr2, newArr: array of Integer;
i: Integer;
begin
// Создание и заполнение первого массива
SetLength(arr1, 5);
for i := 0 to Length(arr1) - 1 do
arr1[i] := Random(100); // Заполняем случайными числами от 0 до 99
// Создание и заполнение второго массива
SetLength(arr2, 7);
for i := 0 to Length(arr2) - 1 do
arr2[i] := Random(100); // Заполняем случайными числами от 0 до 99
// Объединение двух массивов
newArr := Concat(arr1, arr2);
// Сортировка нового массива по убыванию
for i := 0 to Length(newArr) - 1 do
for j := i + 1 to Length(newArr) - 1 do
if newArr[i] < newArr[j] then
begin
temp := newArr[i];
newArr[i] := newArr[j];
newArr[j] := temp;
end;
// Вывод отсортированного массива
for i := 0 to Length(newArr) - 1 do
Write(newArr[i], ' ');
Readln;
end.
```
В данном коде мы сначала создаем и заполняем два массива arr1 и arr2 случайными числами от 0 до 99. Затем, используя команду "concat", объединяем их в новый массив newArr.
Далее, используя вложенные циклы, мы сортируем новый массив по убыванию, сравнивая каждый элемент с остальными и меняя их местами при необходимости.
Наконец, мы выводим отсортированный массив newArr на экран.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
Предметы
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili