Помощь - Поиск - Пользователи - Календарь
Полная версия: Простенькая задача (матрица)
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Gleb
Дана действительная квадратная матрица порядка 9. Получить логическую квадратную матрицу того же порядка, в которой элемент имеет значение "истина", если соответствующий ему элемент исходной матрицы имеет значение больше элемента, расположенного в его строке на главной диагонали, и имеет значение "ложь" в противном случае!




И вторая кому не сложно.....пожалуйста!

Найти максимальный среди всех элементов тех строк заданной матрицы, которые упорядочены (либо по возрастанию,либо по убыванию)
volvo
Первая:
...
for i := 1 to n do
for j := 1 to n do
b[i, j] := (a[i, j] > a[i, i]);
...

где a - исходная матрица, b - результат...
Gleb
Огромное спасибо!!! !!!!!!Просто Громадное!

Если кому не лень помочь со второй ...будет совсем превосходно !! Я буду спасен!
click
блин, задание не понятное... может переведёшь, что сделать то нужно
Gleb
Большое спасибо что помогаешь..!

Нужно найти строки в матрице упорядоченные либо по убыванию либо по возрастанию(одно из двух)
а затем найти в этих строках максимальный элемент
Shura
Основная заморочка возникает, когда нужно определить, упорядочена ли строка, и при сравнении первого элемента со вторым, оказывается что они равны! smile.gif Тогда приходится идти по строке дальше, и еще хлеще, если ВСЕ элементы равны. Тогда это уже отдельная ветка условия. Вобщем, я сделал так, что если все элементы строки равны, то они считаются упорядоченными (например, по неубыванию). Это можно изменить, я оставил комментарий. Весьма громоздко, зато надежно.

Код

Program Zadacha_2;

Uses
Crt;

Const
n = 3;

Var
a: Array [1..n,1..n] of Byte;
i,j: Byte;
b,f: Boolean;

{****************************************************************************}

Begin
Randomize;
ClrScr;
for i:=1 to n
do begin
     for j:=1 to n
     do begin
     a[i,j]:=Random(5);
     Write(a[i,j]:3)
    end;
     WriteLn
    end;
WriteLn;

for i:=1 to n
do begin
     Write('Stroka #', i, ': ');
      j:=1;
      repeat
       if a[i,1] > a[i,2]
       then f:=false
       else f:=true;
       Inc(j)
      until (a[i,1] <> a[i,2])or(j = n);
     if j = n
     then Write(a[i,n])  {<---------- если все елем. равны, и считается, что они НЕ упорядоч., }
                    {вместо a[i,n] вставить 'не упорядочена'                  }
     else begin
       b:=true;
       while (j <= n-1)and(b)
       do begin
           if (f = (a[i,j] > a[i,j+1]))and(f <> (a[i,j] < a[i,j+1]))
           then b:=false;
           Inc(j)
          end;
       if b
       then if f
        then Write(a[i,n])
        else Write(a[i,1])
       else Write('ne uporyadochena')
      end;
     WriteLn('.')
    end;
ReadLn
End.
Gleb
Ну я даже не знаю как Вас отблагодарить! Вы мой спаситель! Спасибо Вам большое !

Здаровья и удачи Вам в наступившем году!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.