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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.03.2009, 18:37   #1
bpystep
Форумчанин
 
Регистрация: 25.02.2009
Сообщений: 180
По умолчанию Матрицы Pascal

Ребята, не могу понять принцип

Задание:
Дана целочисленная прямоугольная матрица. Определить:
1. сумму эл-тов в тех строках, которые содержат хотя бы
один отрицательный эл-т ( оформить в виде функции );
2. номера строк и столбцов всех седловых точек матрицы
( оформить в виде процедуры ).
Примечание. Матрица А имеет седловую точку Аij, если
Аij является минимальным элементом в i-й строке и макси-
мальным в j-м столбце.


Я вот написал вот так вот:

Код:
program lab1;
uses crt;

const n=6;
type
 matr = array[1..n,1..n] of integer;

{формирование матрицы}
procedure formir(var a:matr;k:integer);
var
 i,j:integer;
begin
 randomize; {включаем генератор случайных чисел}
 for i:=1 to k do {генерируем матрицу}
  for j:=1 to k do
   a[i,j]:=Random(20)-10;
end;

{вывод матрицы}
procedure vivod(a:matr;k:integer);
var
 i,j:integer;
begin
 for i:=1 to k do
  begin
   for j:=1 to k do
    write(a[i,j]:4);
   writeln;
  end;
end;

{функция, вычисляющая количество строк, не содержащих ни одного нулевого элемента*}
function kolvo(a:matr):integer;
var
 i,j,t,s,k:integer;
begin
s:=0;
for i:=1 to n do
 t:=0; k:=0;
 for j:=1 to n do begin
     t:=t+a[i,j];
        if (a[i,j]<0) then inc(k);
      end;
     if k>0 then
      s:=s+t;
writeln('Сумма элементов строки содержащей хотя бы один отрицательный элемент = ',s);
end;

procedure nomera(a:matr;k:integer);
var
 max,min,i,stroka,j,stolbez:integer;
begin
for i:=1 to n do
    for j:=1 to n do
        begin
             a[i,1]:=max;
             if (a[i,j]>max) then
                max:=a[i,j];
                stroka:=i;
        end;
for j:=1 to n do
    for i:=1 to n do
        begin
             a[1,j]:=min;
             if (a[i,j]<min) then
                min:=a[i,j];
                stolbez:=j;
        end;
if max=min then writeln('строка = ',stroka,' Столбец = ',stolbez);
end;

var
 a:matr;
 i:integer;

begin
 clrscr;
 formir(a,n);
 writeln('Целочисленная квадратная матрица: ');
 vivod(a,n);
 kolvo(a);
 nomera(a,n);
end.
но что-то мне подсказывает, что я не правильно нахожу номера строк и столбцов. Помогите чем сможете...
Запомните, вы едете в Россию, поэтому когда компьютер попросит вас набрать пароль, наберите слово "Пароль"
bpystep вне форума Ответить с цитированием
Старый 26.03.2009, 19:59   #2
Chudo4258
Форумчанин
 
Аватар для Chudo4258
 
Регистрация: 19.02.2009
Сообщений: 622
По умолчанию

Тебе для начала нужно изучить чем отличается Procedure от Function
Жми на весы!!!
Chudo4258 вне форума Ответить с цитированием
Старый 26.03.2009, 20:10   #3
bpystep
Форумчанин
 
Регистрация: 25.02.2009
Сообщений: 180
По умолчанию

Может расскажешь?

Будьте добры подкиньте идейку, я не могу придумать((

Кто-нибудь поможет в разроботке алгоритма?
Запомните, вы едете в Россию, поэтому когда компьютер попросит вас набрать пароль, наберите слово "Пароль"

Последний раз редактировалось Stilet; 02.04.2009 в 13:29.
bpystep вне форума Ответить с цитированием
Старый 29.03.2009, 07:30   #4
Chudo4258
Форумчанин
 
Аватар для Chudo4258
 
Регистрация: 19.02.2009
Сообщений: 622
По умолчанию

Цитата:
Может расскажешь?
Учебник расскажет.
Жми на весы!!!
Chudo4258 вне форума Ответить с цитированием
Старый 02.04.2009, 03:10   #5
bpystep
Форумчанин
 
Регистрация: 25.02.2009
Сообщений: 180
По умолчанию

народ хэлп ми плиз не могу придумать алгоритм нахождения координат седлых точек(((
Запомните, вы едете в Россию, поэтому когда компьютер попросит вас набрать пароль, наберите слово "Пароль"
bpystep вне форума Ответить с цитированием
Старый 02.04.2009, 03:15   #6
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
не могу придумать алгоритм нахождения координат седлых точек
Перебираете строки и ищете минимумы. Для каждого минимума: проходитесь по стобцу (где минимум) и находите максимум. Если индексы совпадают - точка седловая.

Примерно так (писал прямо тут):
Код:
for i:=1 to M do
 begin
 min := 1;
 for j:=1 to N do
  if matr[i,j]<matr[i,min] then min := j;
 max := 1;
 for k:=1 to M do
   if matr[k,min]<matr[max,min] then max := k;
 if max = i then writeln('Точка matr[',max,',',min,'] седловая');
 end;
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]

Последний раз редактировалось Sazary; 02.04.2009 в 03:23.
Sazary вне форума Ответить с цитированием
Старый 02.04.2009, 13:04   #7
bpystep
Форумчанин
 
Регистрация: 25.02.2009
Сообщений: 180
По умолчанию

Спасибо парни=)

Выше указаный код подправил

Код:
program lab1;
uses crt;

const n=6;
type
 matr = array[1..n,1..n] of integer;

{формирование матрицы}
procedure formir(var a:matr;k:integer);
var
 i,j:integer;
begin
 randomize; {включаем генератор случайных чисел}
 for i:=1 to k do {генерируем матрицу}
  for j:=1 to k do
   a[i,j]:=Random(20)-10;
end;

{вывод матрицы}
procedure vivod(a:matr;k:integer);
var
 i,j:integer;
begin
 for i:=1 to k do
  begin
   for j:=1 to k do
    write(a[i,j]:4);
   writeln;
  end;
end;

{функция, вычисляющая количество строк, не содержащих ни одного нулевого элемента*}
function kolvo(a:matr):integer;
var
 i,j,t,s,k:integer;
begin
s:=0;
for i:=1 to n do
 t:=0; k:=0;
 for j:=1 to n do begin
     t:=t+a[i,j];
        if (a[i,j]<0) then inc(k);
      end;
     if k>0 then
      s:=s+t;
writeln('Сумма элементов строки содержащей хотя бы один отрицательный элемент = ',s);
end;

procedure nomera(a:matr;k:integer);
var
 max,min,i,j:integer;
begin
for i:=1 to n do
 begin
 min := 1;
 for j:=1 to N do
  if a[i,j]<a[i,min] then min := j;
 max := 1;
 for k:=1 to n do
   if a[k,min]<a[max,min] then max := k;
 if max = i then writeln('Точка matr[',max,',',min,'] седловая');
 end;
end;

var
 a:matr;
 i:integer;

begin
 clrscr;
 formir(a,n);
 writeln('Целочисленная квадратная матрица: ');
 vivod(a,n);
 kolvo(a);
 nomera(a,n);
end.
Запомните, вы едете в Россию, поэтому когда компьютер попросит вас набрать пароль, наберите слово "Пароль"

Последний раз редактировалось Stilet; 02.04.2009 в 13:30.
bpystep вне форума Ответить с цитированием
Старый 02.04.2009, 13:42   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Я конечно нуб в программировании но может первую задачу так лучше решить:
Код:
 var a:array[1..10,1..10] of integer;
  b,c:array[1..10] of integer;
 i,j:byte;
begin
for i:=1 to 10 do begin
 for j:=1 to 10 do begin
  a[i,j]:=90-random(100);
  b[i]:=b[i]+a[i,j];
  if a[i,j]<0 then c[i]:=1;
  write(a[i,j]:5);
 end;
 writeln;
end;
writeln;
 for j:=1 to 10 do begin
  if c[j]=1 then write(j,' строка =',b[j]:5);
 end;
readln;
  { TODO -oUser -cConsole Main : Insert code here }
end.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.04.2009, 19:12   #9
bpystep
Форумчанин
 
Регистрация: 25.02.2009
Сообщений: 180
По умолчанию

Логики действий я не понял=) но тот вариант прекрасно работает=) так что я думаю пойдёт=0 но спасибо за содействие всем!!!
Запомните, вы едете в Россию, поэтому когда компьютер попросит вас набрать пароль, наберите слово "Пароль"
bpystep вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка матрицы по спирали {pascal} Влдислаав3911 Помощь студентам 3 10.04.2012 22:05
Обращение матрицы методом союзной матрицы dofmat Помощь студентам 6 03.10.2011 15:01
Помогите с задачей по Pascal - тема Матрицы!!! bilba Помощь студентам 3 05.03.2009 23:03
произведение всех элементов, расположенных на главной диагонали и выше ее матрицы размером 4х4, Pascal __FIRST__ Помощь студентам 2 12.12.2008 02:43