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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.05.2009, 20:00   #1
jorjinho10
Пользователь
 
Регистрация: 31.03.2009
Сообщений: 11
По умолчанию Матрица

Если количество ненулевых элементов матрицы В , размерностью m x n (3 х 4 в данной задаче),меньше , чем (m x n)/3 , сформировать матрицу С размерами к х 3 в первом столбце которой содержатся ненулевые элементы матрицы В , а во втором и третьем столбцах - их координаты в исходной матрице.( (m x n)/3 - число, число к - число ненулевых элементов в матрице В.)

Всё требуется сделать с помощью function и procedure

Вот что я делал , но это не работает (((

Код:
program Kursovaya;
uses crt;
Const
Nmax=8;
NMAXIMUM=999999;
var i,j,m,n,y,o,l:integer;
    A,B,C,MA:array[1..Nmax,1..Nmax] of real;
begin
 writeln('Vvedite kol-vo strok v matrice B (do ',Nmax,')');readln(m);
 writeln('Vvedite kol-vo stolbcov v matrice B (do ',Nmax,')');readln(n);
 writeln;
 for i:=1 to m do
 for j:=1 to n do
 begin
 write('B[',i,',',j,']: ');readln(B[i,j]);
 end;
 writeln;
 writeln(' matrica B :');
 writeln;
 for i:=1 to m do
 begin
 for j:=1 to n do write(B[i,j]:9:1,' ');
   writeln;
 end;
for i:=1 to m do
for j:=1 to m do
if B[i,j]<>0 Then
 y:=y+1;
if y>((m*n)/3) then
begin
for i:=1 to m do
for j:=1 to m do
if B[i,j]<>0 then
begin
y:=y+1;
MA[y,1]:=B[i,j];
MA[y,2]:=i;
MA[y,3]:=j;
end;
    for i:=1 to y do
 begin
 for j:=1 to n do write(MA[i,j]:5,' ');
   writeln;
 end;
 end;
 end.
jorjinho10 вне форума Ответить с цитированием
Старый 14.05.2009, 00:33   #2
Gongled
Пользователь
 
Регистрация: 17.02.2009
Сообщений: 78
По умолчанию

Если я верно понял задание.
Код:
program lab;
uses CRT;
const
n = 3;
m = 4;
z = 3;
type
DMass = array[1..n,1..m] of integer;
NMass = array[1..n*m,1..z] of integer;
var
a : DMass;
c : NMass;
i, j, k, b : integer;

procedure new_arr(var a : DMass);
begin
     for i:=1 to n do
     begin
          for j:=1 to m do
          begin
               write('Введите [',i,',',j,']: ');
               read(a[i,j]);
               if a[i,j]<>0 then inc(k);
          end;
     end;
end;

function check_num(k,m,n : integer) : boolean;
begin
     if k < m*n/3 then check_num := true
     else check_num := false;
end;

procedure mod_arr(a : DMass; var c : NMass);
var
b : integer;
begin
b := 0;
     if check_num(k,m,n) then
     begin
          for i:=1 to n do
          begin
               for j:=1 to m do
               begin
                    if a[i,j]<>0 then
                    begin
                         inc(b);
                         c[b,1] := a[i,j];
                         c[b,2] := i;
                         c[b,3] := j;
                         writeln(c[b,1]:5,c[b,2]:5,c[b,3]:5);
                    end;
               end;
          end;
     end;

end;


begin
clrscr;
randomize;

k := 0;

new_arr(a);
mod_arr(a,c);
readln;

end.
Пишу глупости.
Gongled вне форума Ответить с цитированием
Старый 14.05.2009, 15:18   #3
jorjinho10
Пользователь
 
Регистрация: 31.03.2009
Сообщений: 11
По умолчанию

вылетает сразу после того как ввожу последний элемент матрицы
jorjinho10 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
матрица bonys91 Помощь студентам 2 26.03.2009 22:03
Матрица СИ ++ Pasha9 Помощь студентам 5 16.03.2009 01:41
матрица {C++} Влдислаав3911 Помощь студентам 1 28.05.2008 02:36
Матрица Cartman18 Помощь студентам 4 13.12.2007 19:49
Матрица Lima Паскаль, Turbo Pascal, PascalABC.NET 3 08.12.2006 01:01