Страница 1 из 1

Обработка массива

Добавлено: 16 апр 2009, 19:46
Volnyi
Pascal

1. Дана матрица A(n*m) целых чисел. Получить два новых вектора логических значений B(n) и C(m) . Положить Bi равным истина, если в i-ой строке матрицы есть положительные элементы, и ложь, если нет. Аналогично, элемент вектора Ci должен показывать наличие в соответствующем столбце отрицательных элементов.

[*разнотипные задачи удалены*]

Re: Обработка массива

Добавлено: 17 апр 2009, 00:38
Esgal

Код: Выделить всё

for i:=1 to n do
  for j:= 1 to m do
     begin
        if A[i,j]>0 then B[i]:=true;
        if A[i,j]<0 then C[j]:=true;
     end;
помоему както так, причём массивы Б и Ц должны быть иициализированны ложью

Re: Обработка массива

Добавлено: 17 апр 2009, 11:05
Volnyi
Esgal, спасибо.

Re: Обработка массива

Добавлено: 17 апр 2009, 13:44
Naeel Maqsudov
Так это на паскале и есть. См. правила раздела "Решите мне задачу", так об это м есть комментарий.

Вот что вышло

Добавлено: 17 апр 2009, 19:42
Volnyi

Код: Выделить всё

program task01;
uses WinCRT;
const M = 3;
      N= 4;
var
  Mi: integer;
  B:array[1..N] of boolean;
  C:array[1..M] of boolean;
  i,j,v:integer;
 Begin
  for j:=1 to M do C[j]:=false;
  for i:=1 to N do
  begin
    B[i] := false;
    for j:=1 to M do
    begin
      write('Enter value at ',i,',',j,':');read(Mi);
      if Mi>0 then B[i]:=true;
      if Mi<0 then C[j]:=true;
    end;
  end;
  writeln('Vector B:');
  for i:=1 to N do write(B[i],' ');
  writeln;
  writeln; writeln('Vector C:');
  for j:=1 to M do write(C[j],' ');
  writeln;

Re: Обработка массива

Добавлено: 17 апр 2009, 20:21
Naeel Maqsudov
хорошо, только где же массив А, который по условию тоже "дан"? :)

Код: Выделить всё

program task01;
uses WinCRT;
const
   M=3;N=4;
var
   A:array[1..N,1..M] of integer;
   B:array[1..N] of boolean;
   C:array[1..M] of boolean;
   i,j:integer;
 Begin
   {инициализация трех массивов и контрольный вывод массива A}
   for i:=1 to N do for j:=1 to M do begin
     write('Enter value at ',i,',',j,':');
     read(A[i,j]);
   end;
   for i:=1 to N do begin
     for j:=1 to M do write(A[i,j]:10);
     writeln;
     B[i]:=false;
   end;
   for j:=1 to M do C[j]:=false;

   {теперь вычисления}
   for i:=1 to N do for j:=1 to M do begin
     if A[i,j]>=0 then B[i]:=true;
     if A[i,j]<0 then C[j]:=true;
   end;

   {вывод результата}
   writeln('Vector B:');
   for i:=1 to N do write(B[i],' ');
   writeln;
   writeln; writeln('Vector C:');
   for j:=1 to M do write(C[j],' ');
   writeln;
end.

Re: Обработка массива

Добавлено: 17 апр 2009, 20:35
Volnyi
:rolleyes:
ой... Спасибо))) (кстати кнопочки спасибо не вижу нигде???? )