Помощь - Поиск - Пользователи - Календарь
Полная версия: Процедура+Массив\удаление к-й строки
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
BoB@N
Условие задачи:
\Из данного двумерного массива удалить к-й столбец.\
Примечание:
1)"Из данного"-массив задаётся по желанию.
2)Программа дожна быть составлена с использованием процедуры или функции. (что-то типо: procedure del_line).
mega_chok.gif
Altair
http://forum.pascal.net.ru/index.php?showt...indpost&p=38100
поменяй k с k+1, k+1 с k+2 и так далее... в итоге k станет последним и протсо уменьши размерность матрицы на 1 по столбцам. blum.gif
Fang
Недавно одногруппник попросил написать такую же программу. Вот исходник:
Код
uses
 crt;
var
 m,n,i,j:integer;
 a: array[1..10,1..10] of integer;
 ch:char;
{процедура вывода матрицы}
procedure MatrixOut(x,y:integer);
begin
 writeln;
 for i:=1 to x do
   begin
     for j:=1 to y do
       write(a[i,j]:8);
     writeln;
   end;
 writeln;
end;
{процедура переназначения эл-в массива}
procedure MatrixPer(temp:integer);
begin
 for i:=temp to m-1 do
 begin
   for j:=1 to n do
   begin
     a[i,j]:=a[i+1,j];
    end;
  end;
end;
{основная программа}
begin
repeat
 clrscr;
 write('Введите размер матрицы (MxN): ');
 readln(m,n);
 writeln('Введите элементы матрицы: ');
 {Вводим матрицу}
 for i:=1 to m do
   for j:= 1 to n do
     begin
       write('A[',i,' ',j,']:=');
       readln(a[i,j]);
     end;
 {проверяем равен ли какой-либо эл-т 0}
 MatrixOut(m,n);
 for i:=1 to m do
 for j:=1 to n do
   if a[i,j] = 0 then
     MatrixPer(i); {шаг 1. (см. алгоритм}

   writeln('Результат: ');
   MatrixOut(m-1,n); {шаг 2. (см. алгоритм)}
   writeln('Для выхода нажми ESC...');
 ch:=readkey;
until ch=#27;
end.
volvo
To: Fang
Вполне возможно, что эта программа даже будет работать... НО !!! Ты внимательно читал условие?
Цитата
\Из данного двумерного массива удалить к-й столбец.\
Все. Никаких проверок на 0 и т.п. Извини, но если ты уж даешь исходник ПОЛНОСТЬЮ, то он должен удовлетворять условию, иначе ты просто запутываешь автора вопроса...
Fang
Sorry, забыл написать что программа удаляет столбец в котором имеется 0.
Fang
За то что пытался запутать автора smile.gif - переписал исходник. Теперь он полностью удовлетворяет условию. И описание добавил.

Код
{--------------------------------------------------
Удаление стобцов в матрице.
---------------------------------------------------
>> Описание процедур
---------------------------------------------------
1) MatrixOut(x,y:integer) - выводит матрицу на экран.
  x - количество строк, y - количество столбцов.
2) MatrixPer(temp:integer) - Эта процедура делает
переназначение элементам массива.
  temp - номер строки/стобца.
---------------------------------------------------
>> Пример
---------------------------------------------------
Дана матрица:
      1  0 -3
 A =  4  6  2
     -1  4  7
, необходимо удалить вторую столбей. Алгоритм такой:
1) Необходимо присовить элементам второго стобца элементы
  третьего столбца (A[1,2] = A[1,3], A[2,2] = A[2,3] и т.д.)
  После преобразований получится матрица:
      1  -3 -3
 A =  4   2  2
     -1   7  7
2) Теперь осталось скрыть третий столбец и вывести на экран только
  первые два
}
uses
 crt;
var
 m,n,i,j,k:integer;
 a: array[1..10,1..10] of integer;
{процедура вывода матрицы}
procedure MatrixOut(x,y:integer);
begin
 writeln;
 for i:=1 to x do
   begin
     for j:=1 to y do
       write(a[i,j]:8);
     writeln;
   end;
 writeln;
end;
{процедура переназначения эл-в массива}
procedure MatrixPer(temp:integer);
begin
 for i:=1 to m do
 begin
   for j:=temp to n-1 do
   begin
     a[i,j]:=a[i,j+1];
   end;
  end;
end;
{основная программа}
begin
 clrscr;
 write('Введите размер матрицы (MxN): ');
 readln(m,n);
 writeln('Введите элементы матрицы: ');
 {Вводим матрицу}
 for i:=1 to m do
   for j:= 1 to n do
     begin
       write('A[',i,' ',j,']:=');
       readln(a[i,j]);
     end;

 MatrixOut(m,n); {вывод матрицы}

 write('Введите номер стобца который необходимо удалить: ');
 readln(k);
 MatrixPer(k); {шаг 1. (см. алгоритм}

 writeln('Результат: ');
 MatrixOut(m,n-1); {шаг 2. (см. алгоритм)}

 readln;
end.
BoB@N
good.gif good.gif good.gif
Задание Выполнено !
прошу закрыть тему.

М
сами разберемся ;)
klem4

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