Помогите решить задачи с двумерном массивом.
a. расчет элементов квадратной матрицы A = (aij), i,j – 1,2,…,n по заданной формуле:
b. упорядочить элементы главной диагонали матрицы А по возрастанию значений.
2. Дан массив из п натуральных шестизначных чисел. Вывести на экран только те, у которых сумма первых трёх цифр равна сумме трёх последних.
Для отладки программы исходный массив сформировать с помощью генератора случайных чисел.
2.
Код:
program Project1;
{$APPTYPE CONSOLE}
{$R *.res}
//uses
// System.SysUtils;
const
m = 1000;
var
n,i:integer;
a: array[1..m] of integer;
begin
randomize;
write('array size = '); readln(n);
writeln;
for i:= 1 to n do
begin
a[i]:= random(899999)+100000;
if a[i] div 100000 +
a[i] div 10000 mod 10 +
a[i] div 1000 mod 10 =
a[i] div 100 mod 10 +
a[i] div 10 mod 10 +
a[i] mod 10
then write(a[i]:7);
end;
readln
end.
{$APPTYPE CONSOLE}
{$R *.res}
//uses
// System.SysUtils;
const
m = 1000;
var
n,i:integer;
a: array[1..m] of integer;
begin
randomize;
write('array size = '); readln(n);
writeln;
for i:= 1 to n do
begin
a[i]:= random(899999)+100000;
if a[i] div 100000 +
a[i] div 10000 mod 10 +
a[i] div 1000 mod 10 =
a[i] div 100 mod 10 +
a[i] div 10 mod 10 +
a[i] mod 10
then write(a[i]:7);
end;
readln
end.
Код:
program Project1;
{$APPTYPE CONSOLE}
{$R *.res}
//uses
// System.SysUtils;
const
m = 1000;
var
a: array[1..m,1..m] of double;
n,i,j: integer;
begin
write('array size = '); readln(n);
for i:= 1 to n do
begin
for j:= 1 to n do
begin
a[i,j]:= i/j - ln(i*j);
write(a[i,j]:7:3)
end;
writeln;
writeln
end;
writeln;
for j:= 1 to n-1 do
for i:= 1 to n-j do
if (a[i,i] > a[i+1,i+1]) then
begin
a[i,i]:= a[i,i] - a[i+1,i+1];
a[i+1,i+1]:= a[i,i] + a[i+1,i+1];
a[i,i]:= a[i+1,i+1] - a[i,i]
end;
for i:= 1 to n do
begin
for j:= 1 to n do
begin
write(a[i,j]:7:3)
end;
writeln;
writeln
end;
readln
end.
{$APPTYPE CONSOLE}
{$R *.res}
//uses
// System.SysUtils;
const
m = 1000;
var
a: array[1..m,1..m] of double;
n,i,j: integer;
begin
write('array size = '); readln(n);
for i:= 1 to n do
begin
for j:= 1 to n do
begin
a[i,j]:= i/j - ln(i*j);
write(a[i,j]:7:3)
end;
writeln;
writeln
end;
writeln;
for j:= 1 to n-1 do
for i:= 1 to n-j do
if (a[i,i] > a[i+1,i+1]) then
begin
a[i,i]:= a[i,i] - a[i+1,i+1];
a[i+1,i+1]:= a[i,i] + a[i+1,i+1];
a[i,i]:= a[i+1,i+1] - a[i,i]
end;
for i:= 1 to n do
begin
for j:= 1 to n do
begin
write(a[i,j]:7:3)
end;
writeln;
writeln
end;
readln
end.
Код:
begin
a[i]:= random(899999)+100000;
if a[i] div 100000 +
a[i] div 10000 mod 10 +
a[i] div 1000 mod 10 =
a[i] div 100 mod 10 +
a[i] div 10 mod 10 +
a[i] mod 10
then write(a[i]:7);
a[i]:= random(899999)+100000;
if a[i] div 100000 +
a[i] div 10000 mod 10 +
a[i] div 1000 mod 10 =
a[i] div 100 mod 10 +
a[i] div 10 mod 10 +
a[i] mod 10
then write(a[i]:7);
Извините меня, но можно вот тут по подробней рассказать. Почему random(899999)+100000 набирается так?
random(100) в делфи от 0 до 99, в паскале от 0 до 100
прибавляем к нему другое число, то есть сдвигаем диапозон на указанное число
в итоге random (899999) это в пскале от 0 до 899999
приьавляем 100000 диапозон от 100000 до 999999
это весь диапозон шестизначных(!) чисел который нам и требуется
а далее в if берутся сумма первых трех цифр шестизначного числа и сравнивается с суммой трех последних цифр этого же шестизначного числа
Спасибо большое тебе, очень помогли вы мне:)