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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.03.2010, 15:01   #1
sllh_111
Форумчанин
 
Регистрация: 10.02.2010
Сообщений: 137
Стрелка Удаление строки и столбца

всем привет! помогите исправить ошибку в проги.
задачка: нахождение алгеброических дополнений для квадратной матрицы.

ну а если прощи то: надо удалить строку и столбец в котором находится нужный нам элемент. например если i=1(номер строки) , j=1(номер столбца), то елементом который нам нужен будет 1, тогда
1__2__3
4__5__6
7__8__9

получим:
5__6
8__9

а у меня распичатывает:
5__6 (вместо 8 он 6 распичатывает и т.д.)
6__9 (вот и вся ошибка)

а вот и прога:
Код:
Program MATRIX;
uses CRT;
type mas=array[1..15,1..15]of real; mas1=array[1..15] of real;
var m4,m1,m2,m3,m5,m6,A,B,C,c1,a1,a2,b1,b2:mas; d,d1,w,d3: real;
 m7,m8:mas1;
 m,h,i,j,k,k1,n,q:integer;
   z,ch,ch1:char; z1: string;

procedure input;
begin clrscr;
write('Введите размерность матрицы (А): ');
readln(m);
write('Создать матрицу случайно? Y/N: ');
readln(z);
if (z='Y') or (z='y') then
begin
randomize;
writeln('Создание матрицы ');
for i:= 1 to m do
begin
writeln;
for j:= 1 to m do
begin
a[i,j]:= random(15);
write(a[i,j]:6:1);
end; end;
end
else if (z='N') or (z='n') then begin
writeln('Введите матрицы: ');
writeln('Первая: ');
for i:= 1 to m do
for j:= 1 to m do
read(a[i,j]);
end else
writeln('Ошибка!'); end;


procedure zamena(m3:mas; var b3,b2:mas; i,j,k1:integer);
 var k2i,k2j,d1i,d1j,stroka,stolbec: integer; b4:mas;
  begin
  writeln; writeln; write('izmenennaa matrica: '); writeln;
  for k2i:=1 to k1 do
 for k2j:=1 to k1 do
 if k2i>= i then
 b2[k2i,k2j]:= m3[k2i+1,k2j]  else b2[k2i,k2j]:=m3[k2i,k2j] ;

 for k2i:=1 to k1 do
 for k2j:=1 to k1 do
 b3[k2j,k2i]:=b2[k2i,k2j];
 for k2i:=1 to k1 do
 for k2j:=1 to k1 do
 if k2i>= j then
 b4[k2j,k2i]:= b3[k2j+1,k2i]  else b4[k2j,k2i]:=b3[k2j,k2i] ;
 for k2i:=1 to k1-1 do
 for k2j:=1 to k1-1 do
b4[k2i,k2j]:=b4[k2j,k2i];
 for k2i:=1 to k1-1 do begin
 for k2j:=1 to k1-1 do
 write(b4[k2i,k2j]:6:1);
 writeln;end;
 readkey;
 end;
 begin clrscr;
 input;
 zamena(a,b1,b2,1,1,m); { здесь 1,1 - это i,j(позиция элемента по которой
определяем какую строчку и столбец вычиркнуть)} 
readkey;
 end.
Вобщем прога работает, но немного не так
буду рад любой помощи!
sllh_111 вне форума Ответить с цитированием
Старый 18.03.2010, 15:41   #2
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Ужасный стиль оформления кода. Не стал разбирать, написал по-другому.
Код:
type mas=array[1..15,1..15]of real;

procedure zamena(a: mas; var b: mas; x, y, m: byte);
//a - исходная матрица b - новая матрица x - строка y - столбец
//m - размерность матрицы a
var
  i, j, k, l: byte;
begin
  //по элементам переписываем матрицу
  k := 0;
  for i := 1 to m do
  if i = x then continue else begin//лишнюю строку не трогаем
    inc(k);
    l := 0;
    for j := 1 to m do
    if j = y then continue else begin//лишний столбец не трогаем
      inc(l);
      b[k, l] := a[i, j]
    end
  end
end;
Как использовать
Код:
const
  m = 5;
var
  a, b: mas;
  i, j: integer;
begin
  for i := 1 to m do begin//ввод матрицы a
    for j := 1 to m do begin
      a[i, j] := random * 10;
      write(a[i, j]:5:1)
    end;
    writeln
  end;

  zamena(a, b, 3, 2, m);

  writeln;
  for i := 1 to m - 1 do begin//вывод матрицы b
    for j := 1 to m - 1 do write(b[i, j]:5:1);
    writeln
  end;
  readln
end.
eoln вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
удаление строки и столбца из матрицы Laplas Помощь студентам 3 08.01.2010 04:41
матрица. нахождение строки и столбца giggles Помощь студентам 1 23.11.2009 10:39
Сравнение 2 столбцов и удаление повторяющегося из второго столбца ildusfm Microsoft Office Excel 3 07.05.2009 09:09
Удаление столбца по условию... Klim Bassenger Microsoft Office Excel 2 05.05.2009 10:06
Пересечение строки и столбца ... Microsoft Office Excel 1 11.11.2008 10:02