Помощь - Поиск - Пользователи - Календарь
Полная версия: Помогите с задачей, она вроде простая....
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Roofless
Дали вот такую задачу: Дана матрица A(n*n) целых чисел. Получить вектор C(n), элементы которого равны произведениям элементов, стоящих на главной и побочной диагоналях матрицы. В полученном векторе найти min и max элементы. На место min элемента записать 0, а на место max элемента записать max возможное целое число. [b]
Она вроде как простая, но что то не получается; Помогите решить. Если можно с описанием.
Michael_Rybak
Показывай - что делал, что не получается.
Roofless
Ну что то вроде этого...



Program MinMax;
Const
Nmax=9;
Type Matrix=array [1..nmax,1..nmax] of integer;
Vektor=array [1..nmax] of integer;
Var n,m,i,j:integer;
b:matrix;
result:vektor;
ch:char;
Var p,max,min:integer;
begin
p:=0;
for i:=1 to (n+1) div 2 do begin
max:=a[i,i];
min:=a[i,i];
for j:=i to n+1-i do begin
if a[i,j]>max then
max:=a[i,j];
if a[i,j]<min then
min:=a[i,j];
end;
inc(p);
res[p]:=max+min;
end;
if n mod 2=1 then dec(p);
for i:=n div 2+1 to n do begin
max:=a[i,n+1-i];
min:=a[i,n+1-i];
for j:=n+1-i to i do begin
if a[i,j]>max then
max:=a[i,j];
if a[i,j]<min then
min:=a[i,j];
end;
inc(p);
res[p]:=max+min;
end;
end;
Roofless
правильно?
Гость
Цитата(Roofless @ 18.12.2007 17:56) *

правильно?

Боюсь, что нет. И даже совсем не похоже.
Давай, начинай делать эту задачу. И приходи за помощью, если что.
Гость
Стоп!
Раздел-то Задачи На Заказ smile.gif
Ты хочешь за нее заплатить? Говори сроки.
Цена - 10 WMZ
Расчет через Форум.
Решение по факту оплаты, не ранее чем через сутки после договоренности.
Roofless
Вот вроде ьы так:



const
nn=9;
Type Matrix=array[1..nn,1..nn] of integer;
vector=array[1..nn] of integer;
Var n,i,j:integer;
a:matrix; {?б室­ п ¬ ваЁж }
b:vector;
Procedure matr(k:integer; var a:matrix; var b:vector);
Var
i,j,p,s,p1,s1:integer;
Begin
k:=0;
for i:= 1 to n do
for j:= 1 to n do begin
k:=k+1;
a[i,j]:=k;
end;
for i:= 1 to n do
b[i]:=a[i,i]*a[i,n+1-j];
s:=0;
p:=32000;
for i:= 1 to n do begin
if s<b[i] then begin
s:=b[i];
s1:=i;
end;
if p>b[i] then begin
p:=b[i];
p1:=i;
end;
end;
b[s1]:=0;
b[p1]:=32000;
end;




Мне нужно процедуру составить...
Lapp
Последние два поста - мои. Можешь контактировать со мной здесь либо в личке.
Roofless
я хочу чтобы мне помогли
Lapp
Roofless, здесь задачи не обсуждают. Здесь решают за деньги.
Если хочешь - перенесу в раздел Задачи. Хочешь?
Roofless
перенеси
Roofless
Что то у меня здесь не получается
Lapp
В целом программа вроде нормальная, за исключением некоторых недочетов. Например, почему у тебв k - формальный параметр? Что ты туда собирался передавать? Может, ты имел в виду n?
Дальше, вместо 32000 лучше использовать MaxInt. И вообще, вместо куска:
      s:=0;
p:=32000;

- лучше сделать:
      s:=b[1];
p:=b[1];

В этом случае программа сможет работать с отрицательными значениями тоже.
А в конце перепутаны максимум и минимум. Максимум у тебя - s, а ты в него кладешь 0, и наоборот.

Цитата(Roofless @ 18.12.2007 21:48) *
Мне нужно процедуру составить...
Так ты вроде ее сделал.. Осталось внизу приписать основную программу.
Roofless
Большое спасибо, посмотрю
Roofless
Поздравте меня! Все! Сделал! Выкладываю в виде прцедур:


Procedure Proizv(n:byte; {Є®«ЁзҐбвў® бва®Є}
Var a:Matrix; {?бЇ®«м§гҐ¬ п ¬ ваЁж }
Var C:vector); {‚лў®¤Ё¬л ўҐЄв®а}
Var
i:byte;
Begin
For i:= 1 to n do {ЏҐаҐЎЁа Ґ¬ Є ¦¤го бва®Єг}
c[i]:=a[i,i]*a[i,n-i+1]; {Ќ е®¦¤Ґ­ЁҐ н«Ґ¬Ґ­в®ў Ј« ў­®© Ё Ї®Ў®з­®© ¤Ё Ј®­ «Ё}
End;
{====‡ ¬Ґ­  ¬Ё­Ё¬ «м­®Ј® Ё ¬ ЄбЁ¬ «м­®Ј® н«Ґ¬Ґ­в =====}
Procedure Zamena(n:byte; {Є®«ЁзҐбвў® бва®Є}
Var c:vector); {ўлў®¤Ё¬л© ўҐЄв®а}
Var
i,max,min,imax,imin:integer;
Begin
max:=c[1]; {Њ ЄбЁ¬г¬г ЇаЁбў Ёў Ґ¬ §­ зҐ­ЁҐ ЇҐаў®Ј® н«Ґ¬Ґ­в }
imax:=1; {Ќ®¬Ґаг ¬ ЄбЁ¬г¬  ЇаЁбў Ёў Ґ¬ Ґ¤Ё­Ёжг}
min:=max; {ЊЁ­Ё¬г¬г ЇаЁбў Ёў Ґ¬ §­ зҐ­ЁҐ ЇҐаў®Ј® н«Ґ¬Ґ­в , ­ е®¤п饥бп ў max}
imin:=1; {Ќ®¬Ґаг ¬Ё­Ё¬г¬  ЇаЁбў Ёў Ґ¬ Ґ¤Ё­Ёжг}
For i:= 2 to n do begin {ЏҐаҐЎЁа Ґ¬ н«Ґ¬Ґ­вл ўҐЄв®а , ­ зЁ­ п б® ўв®а®Ј®}
If c[i]>max then begin {Ќ е®¤Ё¬ §­ зҐ­ЁҐ ¬ ЄбЁ¬г¬  Ё ҐЈ® ­®¬Ґа}
imax:=i;
max:=c[i];
end
else If c[i]<min then begin {Ќ е®¤Ё¬ §­ зҐ­ЁҐ ¬Ё­Ё¬г¬  Ё ҐЈ® ­®¬Ґа}
imin:=i;
min:=c[i];
end;
end;
c[imax]:=99; {ќ«Ґ¬Ґ­вг б ­®¬Ґа®¬ ¬ ЄбЁ¬г¬ ЇаЁбў Ёў Ґ¬ 99}
c[imin]:=0; {ќ«Ґ¬Ґ­вг б ­®¬Ґа®¬ ¬Ё­Ё¬г¬ ЇаЁбў Ёў Ґ¬ 0}
End;
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.