Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Помогите срочно кто может по двумерному массиву

Автор: ainp 4.06.2006 7:56

1. даны целые чисала А1, А2, А3...Аn наименьший член последовательности А1, А2, А3...Аn заменить целой частью среднего арифметического всех членов, остальные члены оставить без изменения . Если в последовательности несколько членов со значением min (А1, А2, А3...Аn ), то заменить последний по порядку.

2. var k: integer;
c: array [1..n, 1..m] of char;
определить к-количество различных элементов масссива с (т. е. повторяющиеся элементы считать один раз)

3. Дана (прочно) вещественная матрица размером NxM. перераставляя ее строки и столбцы добиться того чтобы наибольший элемент (один из них) оказался в верхнем левом углу

Автор: Bokul 4.06.2006 8:06

Цитата
Дана (прочно) вещественная матрица размером NxM. перераставляя ее строки и столбцы добиться того чтобы наибольший элемент (один из них) оказался в верхнем левом углу

http://forum.pascal.net.ru/index.php?showtopic=2836&st=0&p=24848&#entry24848
Цитата
var k: integer;
c: array [1..n, 1..m] of char;
определить к-количество различных элементов масссива с (т. е. повторяющиеся элементы считать один раз)

Вот похожая задача
http://forum.pascal.net.ru/index.php?showtopic=3794&st=5&p=33951&#entry33951

Автор: Unknown 4.06.2006 15:09

Цитата
1. даны целые чисала А1, А2, А3...Аn наименьший член последовательности А1, А2, А3...Аn заменить целой частью среднего арифметического всех членов, остальные члены оставить без изменения . Если в последовательности несколько членов со значением min (А1, А2, А3...Аn ), то заменить последний по порядку.


uses crt;
var a:array[1..100] of integer; sr,i,n,min:integer;
begin
randomize;
clrscr;
writeln;
write('Введите количество элементов в последовательности: '); readln(n);
writeln;
for i:=1 to n do
begin
a[i]:=random(10);
write(a[i],' ');
sr:=sr+a[i]
end;
sr:=sr div n;
min:=1;
for i:=2 to n do
if a[i]<=a[min] then min:=i;
a[min]:=sr;
writeln;
for i:=1 to n do
write(a[i],' ');
writeln;
readkey
end.

Автор: volvo 4.06.2006 15:16

Unknown, ты уверен, что здесь:

min:=a[1];
for i:=2 to n do
if a[ i ]<=min then min:=a[ i ];
a[ i ]:=sr; { <--- Здесь !!! }

будет производиться то, что было в задании:
Цитата
наименьший член последовательности А1, А2, А3...Аn заменить целой частью среднего арифметического всех членов
а не будет банально заменен ПОСЛЕДНИЙ элемент последовательности? i чему будет равно там, где я отметил, напомни-ка мне...

Может, все-таки, запоминать индекс минимального элемента?

Автор: Unknown 4.06.2006 15:24

Прошу прощения, уже сам все заметил и исправил... unsure.gif

Автор: Unknown 4.06.2006 16:12

Цитата
3. Дана (прочно) вещественная матрица размером NxM. перераставляя ее строки и столбцы добиться того чтобы наибольший элемент (один из них) оказался в верхнем левом углу

Вот еще одна похожая задача и ее решение:
Путем перестановки элементов квадратной вещественной матрицы добиться того, чтобы ее максимальный элемент находился в левом верхнем углу, следующий по величине – в позиции (2,2), следующий по величине – в позиции (3,3) и т.д., заполнив таким образом всю главную диагональ.

program T4_V1_3;
uses crt;
var
a:array[1..5,1..5] of integer;
i,j,k,l,n,m,z,x:integer;
begin
clrscr;
randomize;
writeln;
write('Vvedite n: ');
readln(n);
writeln;

for i:=1 to n do
for j:=1 to n do
a[i,j]:=random(10);

for i:=1 to n do
begin
for j:=1 to n do
write(a[i,j],' ');
writeln;
end;

m:=1;
while m<=n do
begin
k:=m;l:=m;
for i:=1 to n do
for j:=1 to n do
if ((i<>j) or ((i=j) and (i>m))) and (a[i,j]>a[k,l])
then begin k:=i; l:=j end;
if not ((k=m) and (l=m)) then
begin
a[m,m]:=a[k,l]-a[m,m];
a[k,l]:=a[k,l]-a[m,m];
a[m,m]:=a[k,l]+a[m,m]
end;
inc(m);
end;

writeln;
for i:=1 to n do
begin
for j:=1 to n do
write(a[i,j],' ');
writeln;
end;

readkey
end.