// PascalABC.NET 3.2, сборка 1427 от 24.04.2017 // Внимание! Если программа не работает, обновите версию!
begin var s1:=SeqRandom(ReadInteger('n1='),-50,50); var s2:=SeqRandom(ReadInteger('n2='),-50,50); var p:=ReadInteger('0-по неубыванию, иное- по невозрастанию:'); var q1:=new Queue<integer>; foreach var m in s1 do q1.Enqueue(m); Write('Очередь 1: ',q1); Writeln; var q2:=new Queue<integer>; foreach var m in s2 do q2.Enqueue(m); Write('Очередь 2: ',q2); Writeln; // очереди сформированы var q:=new Queue<integer>; var a:=(q1.ToArray+q2.ToArray); var s:sequence of integer; if p=0 then s:=a.OrderBy(i->i) else s:=a.OrderByDescending(i->i).ToArray; foreach var m in s do q.Enqueue(m); Write('Очередь-результат: ',q); Writeln; end.
Пример n1= 10 n2= 7 0-по неубыванию, иное- по невозрастанию: 1 Очередь 1: [-26,6,26,-48,-21,-29,27,-39,5,-40] Очередь 2: [50,36,37,46,18,41,-39] Очередь-результат: [50,46,41,37,36,27,26,18,6,5,-21,-26,-29,-39,-39,-40,-48]
// Внимание! Если программа не работает, обновите версию!
begin
var s1:=SeqRandom(ReadInteger('n1='),-50,50);
var s2:=SeqRandom(ReadInteger('n2='),-50,50);
var p:=ReadInteger('0-по неубыванию, иное- по невозрастанию:');
var q1:=new Queue<integer>;
foreach var m in s1 do q1.Enqueue(m);
Write('Очередь 1: ',q1); Writeln;
var q2:=new Queue<integer>;
foreach var m in s2 do q2.Enqueue(m);
Write('Очередь 2: ',q2); Writeln;
// очереди сформированы
var q:=new Queue<integer>;
var a:=(q1.ToArray+q2.ToArray);
var s:sequence of integer;
if p=0 then s:=a.OrderBy(i->i)
else s:=a.OrderByDescending(i->i).ToArray;
foreach var m in s do q.Enqueue(m);
Write('Очередь-результат: ',q); Writeln;
end.
Пример
n1= 10
n2= 7
0-по неубыванию, иное- по невозрастанию: 1
Очередь 1: [-26,6,26,-48,-21,-29,27,-39,5,-40]
Очередь 2: [50,36,37,46,18,41,-39]
Очередь-результат: [50,46,41,37,36,27,26,18,6,5,-21,-26,-29,-39,-39,-40,-48]
Объяснение:
#include <iostream>
#include <ctime>
#include <string>
using namespace std;
int main()
{
srand(time(NULL));
int rows, cols; // Розміри матриці
cout << "Enter n: ";
cin >> rows;
cout << "Enter m: ";
cin >> cols;
if (rows != cols) return 0; // Тільки в квадратній матриці є головна та побічна діагоналі
int a, b; // Межі випадкових чисел масиву
cout << "Enter a: ";
cin >> a;
cout << "Enter b: ";
cin >> b;
int Width = max(to_string(a).length(), to_string(b).length()) + 1; // Ширина для cout
int** arr = new int* [rows]; // Динамічний масив
for (int i = 0; i < rows; i++)
{
arr[i] = new int[cols];
}
cout << "n = " << rows << endl
<< "m = " << cols << endl
<< "Interval - [" << a << ";" << b << "]" << endl << endl
<< "Our matrix: " << endl;
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
arr[i][j] = a + rand() % (b - a + 1);
cout.width(Width); // Щоб було красиво
cout << arr[i][j];
}
cout << endl;
}
cout << endl;
int mainOdd = 0, mainEven = 0, sideOdd = 0, sideEven = 0;
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
if (i == j) (arr[i][j] % 2 == 0) ? mainEven++ : mainOdd++;
if (i + j == rows - 1) (arr[i][j] % 2 == 0) ? sideEven++ : sideOdd++;
}
}
int column, minSum;
for (int i = 0; i < cols; i++)
{
int sum = 0;
for (int j = 0; j < rows; j++)
{
sum += arr[j][i];
}
if (i == 0) { minSum = sum; column = i; }
else if (sum < minSum) { minSum = sum; column = i; }
}
cout << "---Main diagonal---" << endl
<< "Even numbers: " << mainEven << endl
<< "Odd numbers: " << mainOdd << endl;
cout << endl << "---Side diagonal---" << endl
<< "Even numbers: " << sideEven << endl
<< "Odd numbers: " << sideOdd << endl;
cout << endl << "Column number: " << column << " (counting from 0)" << endl;
for (int i = 0; i < rows; i++) // Звільнення динамічної пам'яті
{
delete[] arr[i];
}
delete[] arr;
}