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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.10.2011, 04:15   #1
lola1990
Пользователь
 
Регистрация: 06.10.2011
Сообщений: 18
По умолчанию Матрицы в Pascal

помогите пожалуйста с задачей по лабораторке..
Используя процедуры и функции из целочисленной матрицы А (n x m) получить вектор, элементами которого будут номера первых отрицательных элементов строк матрицы.
lola1990 вне форума Ответить с цитированием
Старый 06.10.2011, 05:56   #2
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Цитата:
Сообщение от lola1990 Посмотреть сообщение
помогите пожалуйста с задачей по лабораторке..
Используя процедуры и функции из целочисленной матрицы А (n x m) получить вектор, элементами которого будут номера первых отрицательных элементов строк матрицы.
А наличие отрицательных элементов в каждой строке гарантируется? Если да, как-то вот так можно:
Код:
for i:=1 to n do begin
  b[i]:= 1;
  while a[i,b[i]]>=0 do inc(b[i])
end;
А если нет, то нужно уточнить условие.
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Старый 06.10.2011, 08:17   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

С первом приближении
Код:
var m:array[1..5,1..5] of integer;
 i:integer;b:array[1..5] of integer;

function gaga(i:integer);var j:integer;
begin 
 for j:=1 to 5 do
   if m[i,j]<0 then begin 
    gaga:=m[i,j];exit;
   end; 
  gaga:=0;
end;

begin
 Вводим матрицу
 for i:=1 to 5 do b[i]:=gaga(i);
 for i:=1 to 5 do if b[i]<>0 do write(b[i]:5);
readln;
end.
Смысл надеюсь понятен?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.10.2011, 11:34   #4
lola1990
Пользователь
 
Регистрация: 06.10.2011
Сообщений: 18
По умолчанию

у меня с этой программой большие проблемы.. не могу никак ее сделать..
пока что вот что у меня
Цитата:
type matr=array [1..10,1..10] of integer;
type mas=array [1..10] of integer;
var a:matr;
min,i,j,n,m:integer;
b:mas;
procedure input (var a:matr; i,j,n,m:integer);
begin
for i:=1 to n do
begin
for j:=1 to m do
readln(a[i,j]);
end;
end;
procedure output (var a:matr; var b:mas; min,i,j,n,m:integer);
begin
for i:=1 to n do
begin
writeln;
for j:=1 to m do
write (a[i,j]:5);
writeln (b[i]:10);
end;
end;
procedure resh (var a:matr; i,j,n:integer;var b:mas);
begin
for i:=1 to n do
begin
if a[i,j]<0 then
b[j]:=a[i,j];
j:=j+1;
end;
end;
begin
Write('Ââåäèòå êîë-âî ñòðîê ìàòðèöû: ');
read (n);
Write('Ââåäèòå êîë-âî ñòîëáöîâ ìàòðèöû: ');
read (m);
Write('Ââåäèòå ýë-òû ìàòðèöû: ');
writeln;
input(a,i,j,n,m);
resh(a,i,j,n,b);
output (a,b,min,i,j,n,m);
readln;
end.
ошибку выдает: "выход за границы диапазона изменения индекса" =(

Последний раз редактировалось lola1990; 06.10.2011 в 11:35. Причина: дополнение
lola1990 вне форума Ответить с цитированием
Старый 06.10.2011, 12:00   #5
lola1990
Пользователь
 
Регистрация: 06.10.2011
Сообщений: 18
По умолчанию

нашла ошибку.. но теперь все равно что то не так он выводит
Код:
type matr=array [1..10,1..10] of integer;
type mas=array [1..10] of integer;
var a:matr;
    min,i,j,n,m:integer;
    b:mas;
procedure input (var a:matr; i,j,n,m:integer);
begin
  for i:=1 to n do
    begin
    for j:=1 to m do
    readln(a[i,j]);
    end;
end;
procedure output (var a:matr; var b:mas; min,i,j,n,m:integer);
  begin
    for i:=1 to n do
     begin
    writeln;
    for j:=1 to m do
    write (a[i,j]:5);
    writeln (b[i]:10);
    end;
  end;
procedure resh (var a:matr; i,j,n:integer;var b:mas);
begin
  for i:=1 to n do
  begin
    for j:=1 to m do
    if a[i,j]<0 then
      b[j]:=j;
    j:=j+1;
  end;
end;
begin
  Write('Ââåäèòå êîë-âî ñòðîê ìàòðèöû: ');
  read (n);
  Write('Ââåäèòå êîë-âî ñòîëáöîâ ìàòðèöû: ');
  read (m);
  Write('Ââåäèòå ýë-òû ìàòðèöû: ');
  writeln;
  input(a,i,j,n,m);
  resh(a,i,j,n,b);
  output (a,b,min,i,j,n,m);
  readln;
end.
lola1990 вне форума Ответить с цитированием
Старый 06.10.2011, 12:26   #6
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Код:

type matr=array [1..10,1..10] of integer;
type mas=array [1..10] of integer;
var a:matr;
    min,i,j,n,m:integer;
    b:mas;
procedure input (var a:matr; i,j,n,m:integer);
begin
  for i:=1 to n do
    begin
    for j:=1 to m do
    readln(a[i,j]);
    end;
end;
procedure output (var a:matr; var b:mas; min,i,j,n,m:integer);
  begin
    for i:=1 to n do
     begin
    writeln;
    for j:=1 to m do
    write (a[i,j]:5);
    writeln (b[i]:10);
    end;
  end;
procedure resh (var a:matr; i,j,n:integer;var b:mas);
begin
  for i:=1 to n do
  begin
    for j:=1 to m do
    if a[i,j]<0 then
    Begin
      b[i]:=j;//количество элементов в векторе = количеству строк матрицы
      Break // как только нашли первый отрицательный элемент, выходим из цикла
    End;
  end;
end;
begin
  Write('Aaaaeoa eie-ai no?ie iao?eou: ');
  readln (n);
  Write('Aaaaeoa eie-ai noieaoia iao?eou: ');
  readln (m);
  Write('Aaaaeoa ye-ou iao?eou: ');
  writeln;
  input(a,i,j,n,m);
  resh(a,i,j,n,b);
  output (a,b,min,i,j,n,m);
  readln;
P. s. Советую подумать над тем, что будет в векторе, если в строке не окажется отрицательных элементов
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 06.10.2011, 12:32   #7
lola1990
Пользователь
 
Регистрация: 06.10.2011
Сообщений: 18
По умолчанию

Цитата:
Сообщение от GetMax Посмотреть сообщение
[CODE]
P. s. Советую подумать над тем, что будет в векторе, если в строке не окажется отрицательных элементов
обязательно подумаю.. мне пока хотя бы без этого написать
о огромное вам спасибо
lola1990 вне форума Ответить с цитированием
Старый 06.10.2011, 12:45   #8
lola1990
Пользователь
 
Регистрация: 06.10.2011
Сообщений: 18
По умолчанию

блин может кто нибудь еще поможет написать блок схему ну или хотя бы скажет как в блок схеме записывать процедуры..
lola1990 вне форума Ответить с цитированием
Старый 06.10.2011, 15:44   #9
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

Процедура обозначается вот так.
Рядом делаешь блок-схему своих процедур.
Изображения
Тип файла: jpg Безымянный.jpg (14.2 Кб, 116 просмотров)
Если помог, проси поставить минус. Будь оригинален!
Rin вне форума Ответить с цитированием
Старый 06.10.2011, 22:29   #10
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Цитата:
Сообщение от GetMax Посмотреть сообщение
Break // как только нашли первый отрицательный элемент, выходим из цикла
Не вполне понимаю, зачем учить начинающего неправильному стилю программирования. Особенно, если в первом же ответе содержится правильное решение..
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Матрицы в Pascal katerina2508 Паскаль, Turbo Pascal, PascalABC.NET 1 19.04.2010 16:49
pascal матрицы tanek Помощь студентам 4 04.04.2009 20:42
Матрицы Pascal bpystep Помощь студентам 8 02.04.2009 19:12