Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.10.2009, 20:50   #1
alexantonov
 
Регистрация: 14.10.2009
Сообщений: 7
Смущение двумерные массивы

помогите пожалуйста доделать задачку. в матрице a[1..n,1..m]
упорядочить элементы столбца, содержащего наибольшее кол-во отриц. чисел по убыванию.

мне помогли уже с началом - получилось найти максимальное кол-во отриц. чиселб теперь надо найти столбик в котором их больше и упорядочить по убыванию

Код:
uses crt;
const  n=5; m=5;
var a:array[1..n,1..m] of integer;
var b:array[1..m] of integer;
    i,j,k,q:integer;
begin
clrscr;

       {for q:=1 to m do
       b[q]:=0;  }


randomize;
 for i:=1 to n do begin
   for j:=1 to m do begin
   a[i,j]:=-5+random(10);
   write (a[i,j]:4);

end;
writeln;
end;

 for i:=1 to m do begin
   for j:=1 to n do begin
   if (a[i,j]<0) then b[j]:=b[j]+1;
  end;
   end;
  for i:=1 to m do begin
  writeln(b[i]:4);
  end;
end.

Последний раз редактировалось Stilet; 23.10.2009 в 09:40.
alexantonov вне форума Ответить с цитированием
Старый 22.10.2009, 21:09   #2
Deamonig
Форумчанин
 
Аватар для Deamonig
 
Регистрация: 19.09.2009
Сообщений: 166
По умолчанию

Попробуй так:
Код:
program sss;
const n= ;
const m= ;
procedure zamena(var a,b:integer);
var c:integer;
begin
c:=a; a:=b; b:=c;
end;
var
a:array[1..n,1..m] of integer;
b:array[1..m] of integer;
nomerstolba,i,j,max:integer;
begin
{ввод даных}
for i:=1 to n do
for j:=1 to m do
if a[i,j]<0 then 
b[j]:=b[j]+1;

max:=b[1];
nomerstolba:=1;
for j:=1 to m do
if b[j]>max then 
begin
 max:=b[j];
 nomerstolba:=j;
end;

for i:=1 to n-1 do
 for j:=i+1 to n do
if a[i,nomerstolba]<a[j,nomerstolba] then 
zamena(a[i,nomerstolba],a[j,nomerstolba]);

{ВЫвод даных:}
writeln('упорядоченный столбец ',nomerstolba,' :');
for i:=1 to n do
writeln(a[i,nomerstolba]);
end.

Последний раз редактировалось Deamonig; 22.10.2009 в 21:29.
Deamonig вне форума Ответить с цитированием
Старый 22.10.2009, 21:15   #3
alexantonov
 
Регистрация: 14.10.2009
Сообщений: 7
По умолчанию

а без процедуры никак нельзя
просто я не понимаю там
alexantonov вне форума Ответить с цитированием
Старый 22.10.2009, 21:19   #4
Deamonig
Форумчанин
 
Аватар для Deamonig
 
Регистрация: 19.09.2009
Сообщений: 166
По умолчанию

Тогда так:
Код:
program sss;
const n= ;
const m= ;

var
a:array[1..n,1..m] of integer;
b:array[1..m] of integer;
nomerstolba,zamena,i,j,max:integer;

begin
{ввод даных}
for i:=1 to n do
for j:=1 to m do
if a[i,j]<0 then 
b[j]:=b[j]+1;

max:=b[1];
nomerstolba:=1;
for j:=1 to m do
if b[j]>max then 
begin
 max:=b[j];
 nomerstolba:=j;
end;

for i:=1 to n-1 do
 for j:=i+1 to n do
if a[i,nomerstolba]<a[j,nomerstolba] then 
begin
 zamena:=a[i,nomerstolba]; 
 a[i,nomerstolba]:=a[j,nomerstolba];
 a[j,nomerstolba]:=zamena;
end;

{ВЫвод даных:}
writeln('упорядоченный столбец ',nomerstolba,' :');
for i:=1 to n do
writeln(a[i,nomerstolba]);
end.

Последний раз редактировалось Deamonig; 22.10.2009 в 21:29.
Deamonig вне форума Ответить с цитированием
Старый 22.10.2009, 21:20   #5
Chudo4258
Форумчанин
 
Аватар для Chudo4258
 
Регистрация: 19.02.2009
Сообщений: 622
По умолчанию

Код:
uses crt;
const n=5; m=5;
var a:array[1..n,1..m] of integer;
var b:array[1..m] of integer;
i,j,k,q:integer;
begin
clrscr;

randomize;
for i:=1 to n do begin
for j:=1 to m do begin
a[i,j]:=-5+random(11);
write (a[i,j]:4);
end;
writeln;
end;

for j:=1 to m do
 b[j]:=0;

for i:=1 to n do
 for j:=1 to m do 
  if (a[i,j]<0) then inc(b[j]);

max:=b[1];
maxj:=1;
for j:=2 to m do
 if b[j]>max then 
               begin
                  max:=b[j];
                  maxj:=j;
               end;

for i:=1 to n do
 {вот тут бирешь любую сортировку одномерного массива и сортируешь по элементам a[i,jmax], jmax постоянное и не меняется в этом цикле}         

end.
Жми на весы!!!
Chudo4258 вне форума Ответить с цитированием
Старый 25.10.2009, 14:08   #6
alexantonov
 
Регистрация: 14.10.2009
Сообщений: 7
Смущение

то есть так надо писать да а индекс точно jmax или все таки maxj

for i:=1 to n do begin

a[i,jmax]:=buf;
a[i+1,jmax]:= a[i,jmax];
buf := a[i+1,jmax]; end;
for i:= 1 to n do
begin for i:=1 to n do write(a[i,j]:4);
writeln; end;
end.

а если так то выводит ошибку выход за границы диапазона

Последний раз редактировалось alexantonov; 25.10.2009 в 14:15.
alexantonov вне форума Ответить с цитированием
Старый 25.10.2009, 16:00   #7
alexantonov
 
Регистрация: 14.10.2009
Сообщений: 7
Восклицание

помогите найти ошибку
задачка таже: в матрице a[1..n,1..m] упорядочить эл-ты столбца, содержащего наибольшее кол-во отриц. чисел по убванию


uses crt;
const n=5; m=5;
var a:array[1..n,1..m] of integer;
var b:array[1..m] of integer; pr:boolean;
i,j,nom,max,buf,k:integer;
begin
clrscr;

randomize;
for i:=1 to n do begin
for j:=1 to m do begin
a[i,j]:=-5+random(10);
write (a[i,j]:4);

end;
writeln;
end;

for i:=1 to m do begin
for j:=1 to n do begin
if (a[i,j]<0) then b[j]:=b[j]+1; nom:=j;
end;
end;
k:=n;
repeat pr:=false; k:=k-1;
for i:=1 to k do
if a[i,nom]<a[i+1,nom]
then begin buf:=a[i,nom];
a[i,nom]:=a[i+1,nom];
a[i+1,nom]:=buf;
pr:=true;
end;
until not pr;
for i:=1 to n do begin
for j:=1 to m do begin
write(a[i,j]:4);end; writeln;
end;
end.

Последний раз редактировалось alexantonov; 25.10.2009 в 16:30.
alexantonov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
двумерные массивы Pryboy Помощь студентам 3 13.10.2009 13:58
двумерные массивы student2009 Паскаль, Turbo Pascal, PascalABC.NET 3 02.06.2009 09:47
Массивы двумерные Nika_D Помощь студентам 3 19.01.2008 23:45
Двумерные массивы Nata!!!@ Помощь студентам 15 05.12.2007 16:15