Версия для печати темы
Форум «Всё о Паскале» _ Задачи _ Задачи на матрицы (двумерные массивы)
Автор: Леха 17.12.2004 23:04
1.Создать 2-х мерный массив 20х15 целых чисел заданных через randomize и найти их сумму.
2.Создать матрицу 5х5 значение каждого элемента = сумме № строки и столбца на пересечении которого он находиться. Вычислить сумму элементов каждой строки.
3.Создать 2-х мерный массив 4х4 и найти максимальный по абсолютному значению а также укажите номер строки и столбца содержащие этот элемент.
4.Создать 2-х мерный массив через randomize и определите и определите есть ли в нем элементы с одинаковым значением
5.Создать 2-х мерный массив вещественных чисел 3х5 выведите на экран затем разделить каждый элемент на среднее арифметическое значение элементов строки в котором они расположены.
6.Создайте программу проверяющую образуют ли элементы массива "Магический квадрат".(маг. квадрат- суммы по всем горизонталям вертикалям и 2-ум диагоналям - равны
Автор: Altair 17.12.2004 23:10
1.
Код
var
a:array[1..20,1..15] of integer;
i,j,s:integer;
begin
randomize
for i:=1 to 20 do for j:=1 to 15 do begin a[i,j]:=random(200); s:=s+a[i,j] end;
end.
Автор: Altair 17.12.2004 23:14
2.
Код
var
a:array[1..5,1..5] of integer;
i,j:integer;
begin
for i:=1 to 5 do for j:=1 to 5 do a[i,j]:=i+j;
end.
3.
Код
var
a:array[1..4,1..4] of integer;
i,j,m,si,sj:integer;
begin
randomize
for i:=1 to 4 do for j:=1 to 4 do
begin
a[i,j]:=random(200);
If a[i,j]>m then
begin
m:=a[i,j]; si:=i,sj:=j;
end;
end;
writeln(m,' ',si,' ',sj);
end.
Автор: mithquessir 18.12.2004 2:33
4.
Код
const
n = 10;
var
a:array[1..n] of integer;
i,j:integer;
begin
for i := 1 to n do
a[i] := random(10);
for i := 1 to n-1 do
begin
for j := i+1 to n do
begin
if a[i] = a[j] then
break;
end;
if j < 10 then break;
end;
if i < 9 then writeln('Все элементы массива одинаковы')
else writeln('Есть различный элементы');
end.
Автор: mithquessir 18.12.2004 2:52
5. (Если я правильно понял условие)
Код
const
n = 3;
m = 5;
var
a:array[1..n,1..m] of real;
i,j:integer;
sum,mdl:real;
begin
for i := 1 to n do
for j := 1 to m do
begin
a[i,j] := random;
end;
for i := 1 to n do
begin
WriteLn;
for j := 1 to m do
Write(a[i,j]:4:3,' ');
end;
for i := 1 to n do
begin
sum := 0;
for j := 1 to m do
sum := sum + a[i,j];
mdl := sum/m;
for j := 1 to m do
a[i,j] := a[i,j] / mdl;
end;
end.
Автор: volvo 18.12.2004 3:00
mithquessir
В решении 4-ой задачи не имел ли ты в виду вот это:
Код
if i < 9 then writeln('В массиве есть одинаковые элементы')
else writeln('все элементы различны');
Автор: mithquessir 18.12.2004 3:03
volvo
maybe, maybe :D
Автор: Леха 21.12.2004 15:45
Спасибо за помощь! :D
Автор: klem4 21.12.2004 19:16
Извиняюсь, чушь написал.
Щас попробую 6-ю написать.
Автор: volvo 21.12.2004 19:47
klem4
Все просто:
Код
const
n = 3;
a: array[1 .. n, 1 .. n] of integer =
((1, 2, 1), (1, 1, 1), (1, 1, 1));
var
i, j, s, main: integer;
b: boolean;
begin
s := 0; b := true;
for i := 1 to n do
s := s + a[i, i];
main := s;
for i := 1 to n do
s := s - a[i, n - i + 1];
b := b and (s = 0);
if b then
for i := 1 to n do
begin
s := main;
for j := 1 to n do
s := s - a[i, j];
b := b and (s = 0)
end;
if b then
for j := 1 to n do
begin
s := main;
for i := 1 to n do
s := s - a[i, j];
b := b and (s = 0)
end;
writeln('magic: ', b)
end.
Автор: klem4 21.12.2004 20:10
Ага, а я так жестоко раскатал .... :D
Код
uses crt;
const n=3;
var x:array[1..n,1..n] of integer;
i,j,s,snew:integer;
bo:boolean;
Begin
clrscr;
randomize;
{*************************************}
for i:=1 to n do
begin
for j:=1 to n do
begin
readln(x[i,j]);
write(x[i,j]);
write(' ');
end;
writeln;
end;
{**************************************}
bo:=true;
s:=0;
j:=1;
{**************************************}
for i:=1 to n do
s:=s+x[i,j];
writeln('s=',s);
{**************************************}
j:=1;
while j<=n do
begin
snew:=0;
for i:=1 to n do
snew:=snew+x[i,j];
if snew<>s then
bo:=false;
if bo=false then break;
inc(j);
end;
{***************************************}
i:=1;
while i<=n do
begin
snew:=0;
for j:=1 to n do
snew:=snew+x[i,j];
if snew<>s then
bo:=false;
if bo=false then break;
inc(i);
end;
{***************************************}
snew:=0;
for i:=1 to n do
snew:=snew+x[i,i];
if snew<>s then
bo:=false;
{***************************************}
snew:=0;
j:=1;
for i:=n downto 1 do
begin
snew:=snew+x[i,j];
inc(j);
end;
if snew<>s then
bo:=false;
{***************************************}
writeln(bo);
if bo=true then writeln('Magichesky')
else writeln('Ne mahichsky');
readln;
end.