27 апреля 2024, 05:02:01

Новости:

Чтобы использовать все возможности форума на смартфоне или планшете необходимо в браузере выбрать настройку "Версия для ПК".


S

2 задачи в TP по двусерным массивам

Автор Skiler 666, 24 апреля 2007, 14:37:41

0 Пользователей и 1 гость просматривают эту тему.

Skiler 666

24 апреля 2007, 14:37:41 Последнее редактирование: 24 апреля 2007, 14:39:45 от Skiler 666
Помогить пожалуйста решить: 1)В задаваемой квадратной матрице обнулить элементы, расположенные выше главной и побочной диагонали;  2)В задаваемой вещественной матрице поменять местами к-ю и i-ю строки. Спасибо!

Shinji

24 апреля 2007, 17:26:19 #1 Последнее редактирование: 24 апреля 2007, 17:26:52 от Shinji
По первой:

var M: array[1..N,1..N] of integer;
     H,W0,W1,i,j:integer;

....

H := N div 2;
if (N mod 2=0) then H := H-1;
W0 := 2;W1 := N-1;
for i:=1 to H do
begin
 for j:=W0 to W1 do
     M[i,j]:=0;
 W0:=W0+1;
 W1:=W1-1;
end;



По второй:

var M:array[1...N,1..N] of real;
  i,k,j:integer;
 Buf:real;
....

for j:=1 to N do
begin
  Buf := M[i,a];
  M[i,a]:=M[k,a];
  M[k,a]:=Buf;
end;



Надеюсь, сделать ввод и печать матриц сможете самостоятельно.

Skiler 666

Конечно, спасибо за помощь!  ;)  

Skiler 666

07 мая 2007, 13:36:12 #3 Последнее редактирование: 07 мая 2007, 13:40:04 от Skiler 666
В задаваемой квадратной матрице обнулить элементы, расположенные ниже главной и побочной диагонали;

[/CODE]Program _2;
type mtr=array[1..20,1..20] of integer;
Var A:mtr; i,j,n,m:Integer;
Begin
  Write('Введите количество строк матрицы n=');
  Readln(n);
  Write('Введите количество столбцов матрицы m=');
  readln(m);
  Writeln('Введите',n,'строк по',m,'элементов через пробел');
  Writeln('В конце строки Enter');
  for i:=1 to n do for j:=1 to m do read(A[i,j]);
  for i := n div 2 to n do
    for j := n - i + 2 to i - 1 do a[i, j] := 0;
  For i:=1 to n do
  Begin
    For j:=1 to n do write(a[i,j]);
    Writeln;
  End;
  Readln;
  Readln;
End. [CODE]

апускаю программу,ввожу числа, а нужного результата нет,числа не обнуляются. Помогите,может,что нибудь исправить надо или дописать.

Shinji

ИМХО, вот в этом цикле
for j := n - i + 2 to i - 1 do a[i, j] := 0;

надо махнуть местами границы.
То есть for j:= i-1 to n-i+1  

Skiler 666

Получилось! :D Спасибо большое Shinji за помощь!!! ;)  



По всем вопросам пишите по адресу gratispp@mail.ru