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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.12.2011, 18:55   #1
molodoy95
Новичок
Джуниор
 
Регистрация: 26.12.2011
Сообщений: 4
По умолчанию Задача на двумерный динамический массив Delphi

Здравствуйте!

Дана целочисленная квадратная матрица A (m,m). Сформировать одномерный массив, состоящий из индексов, симметричных строк матрицы



И несколько условий для задачи:

1. Используйте динамический массив.
2. Предусмотрите вывод на монитор исходного массива по строкам и вывод результирующего массива, если он формируется в вашей программе.
3. Если в задаче требуется создать новый массив, то для него используйте динамический массив.

Написал вот такой код, но что-то не пашет...

Код:

var a: array of array of integer;
    b: array of Integer;
     m,i,j,k:Integer;

begin

   Readln(m);

  SetLength(a,m,m);
  SetLength(b,m);

  for i:=0 to m-1 do
  for j:=0 to m-1 do
  read(a[i,j]);

 k:=0;
 for i:=0 to m-1 do
    begin
    j:=0;
    while ((a[i,j]=a[j,i]) and (j<m)) do
       begin
       if j=m-1 then begin b[k]:=i+1; k:=k+1; end;
       j:=j+1;
       end;
    end;

 SetLength(b,k);

 if b[0]<>0 then
 for i:=0 to k-1 do write(b[i],' ') else write('Error');
 Writeln;

 readln;

end.
molodoy95 вне форума Ответить с цитированием
Старый 26.12.2011, 19:17   #2
molodoy95
Новичок
Джуниор
 
Регистрация: 26.12.2011
Сообщений: 4
По умолчанию

И еще одна задача:

Дан двумерный массив размерности m*n. Найти и удалить все строки, элементы в которых упорядочены
molodoy95 вне форума Ответить с цитированием
Старый 26.12.2011, 21:34   #3
molodoy95
Новичок
Джуниор
 
Регистрация: 26.12.2011
Сообщений: 4
По умолчанию

Цитата:
Сообщение от molodoy95 Посмотреть сообщение
Здравствуйте!

Дана целочисленная квадратная матрица A (m,m). Сформировать одномерный массив, состоящий из индексов, симметричных строк матрицы



И несколько условий для задачи:

1. Используйте динамический массив.
2. Предусмотрите вывод на монитор исходного массива по строкам и вывод результирующего массива, если он формируется в вашей программе.
3. Если в задаче требуется создать новый массив, то для него используйте динамический массив.

Написал вот такой код, но что-то не пашет...

Код:

var a: array of array of integer;
    b: array of Integer;
     m,i,j,k:Integer;

begin

   Readln(m);

  SetLength(a,m,m);
  SetLength(b,m);

  for i:=0 to m-1 do
  for j:=0 to m-1 do
  read(a[i,j]);

 k:=0;
 for i:=0 to m-1 do
    begin
    j:=0;
    while ((a[i,j]=a[j,i]) and (j<m)) do
       begin
       if j=m-1 then begin b[k]:=i+1; k:=k+1; end;
       j:=j+1;
       end;
    end;

 SetLength(b,k);

 if b[0]<>0 then
 for i:=0 to k-1 do write(b[i],' ') else write('Error');
 Writeln;

 readln;

end.
Переделал программу, все работает!

Код:
var mx: array of array of integer;
    x: array of integer;
    i,j,k,m,count:integer;

begin
  readln(m);
  Writeln;

  SetLength(mx,m,m);
  SetLength(x,m);

  for i:=0 to m-1 do
  for j:=0 to m-1 do
     read(mx[i][j]);

  Writeln;


  k:=0;

  for i:=0 to m-1 do
    begin
      count:=0;
  for j:=0 to m-1 do
  begin
  if mx[i][j]=mx[j][i] then
     begin
     count:=count+1;
     if count=3 then begin x[k]:=i+1; k:=k+1 end;
     end;
  end;  end;

  for i:=0 to k-1 do write(x[i],' ');

Readln; Readln;

end.
molodoy95 вне форума Ответить с цитированием
Старый 26.12.2011, 22:05   #4
molodoy95
Новичок
Джуниор
 
Регистрация: 26.12.2011
Сообщений: 4
По умолчанию

Цитата:
Сообщение от molodoy95 Посмотреть сообщение
И еще одна задача:

Дан двумерный массив размерности m*n. Найти и удалить все строки, элементы в которых упорядочены
Эту тоже написал. Не идеально конечно... но ответ правильный

Код:
var
  mx: array of array of Integer;
  i,i2,j,m,n,count,count2,count3,l,k:Integer;

begin
  Read(m,n);
  SetLength(mx,m,n);

  for i:=0 to m-1 do
  for j:=0 to n-1 do
  read(mx[i][j]);
  Writeln;

  count2:=0;
  for i2:=0 to m-1 do
  for i:=0 to m-1 do
  begin
  count:=0;
  for j:=0 to n-2 do
  begin


  if mx[i][j]=mx[i][j+1]-1 then count:=count+1;
  if (count=n-1) and (i<>m-1) then
     begin
       for k:=i to m-2 do
       for l:=0 to n-1 do
       mx[k][l]:=mx[k+1][l];
       count2:=count2+1;
     end;
  end;
  end;

  count3:=0;

  for i2:- to m-1 do
  for i:=0 to m-1 do
  begin
  count:=0;
  for j:=0 to n-2 do
  begin


  if mx[i][j]=mx[i][j+1]+1 then count:=count+1;
  if (count=n-1) and (i<>m-1) then
     begin
       for k:=i to m-2 do
       for l:=0 to n-1 do
       mx[k][l]:=mx[k+1][l];
       count3:=count3+1;
     end;
  end;
  end;

  for i:=0 to m-1-count2-count3 do
  begin
  Writeln;
  for j:=0 to n-1 do
  write(mx[i][j],' ');
  end;

Readln;
Readln;
end.

Последний раз редактировалось molodoy95; 26.12.2011 в 22:15. Причина: исправил ошибку
molodoy95 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
динамический двумерный массив dart_nick Помощь студентам 0 11.12.2011 13:44
Двумерный динамический массив Markuss Общие вопросы C/C++ 5 07.12.2010 00:40
Задача в Delphi на двумерный массив Ann_Sh Общие вопросы Delphi 1 05.11.2010 18:38
Задача на двумерный массив в Delphi Alena-kursk Помощь студентам 4 30.11.2009 15:43
Задача на двумерный массив DELPHI 7 Max0306 Помощь студентам 1 22.09.2009 11:09