Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 27.05.2014, 20:14   #1 (permalink)
Lensom
Новичок
 
Регистрация: 21.05.2014
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Паскаль, матрица

Нужна помощь в задании.
Cделать ввод матрицы,уплотить заданную матрицу,удаляя из нее строки и столбцы,заполненные нулями.
Lensom вне форума   Ответить с цитированием

Старый 27.05.2014, 20:14
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Полезные советы по решению проблемы можно найти в аналогичных обсуждениях

Задача. Паскаль. Матрица
Матрица
Матрица

Старый 28.05.2014, 10:38   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Lensom Посмотреть сообщение
Нужна помощь в задании.
Cделать ввод матрицы,уплотить заданную матрицу,удаляя из нее строки и столбцы,заполненные нулями.
Пожалуйста:
Код:
Const
 Mmax=50;
 Nmax=50;

Type
 Matr=Array[1..Mmax,1..Nmax] of Integer;
 Vect=Array[1..Mmax] of Integer;

Var
 i,j,k,M,N:Integer;
 A:Matr;
 V:Vect;

Function Test_Zero(VV:Vect; Nv:Integer):Boolean;
var
 p:integer;
 b:boolean;
begin
 b:=true;
 for p:=1 to Nv do
  if VV[p]<>0 then b:=false;
 Test_Zero:=b;
end;

Begin
 Write('Number of lines = ');
 Readln(M);
 Write('Number of columns = ');
 Readln(N);
 for i:=1 to M do
  for j:=1 to N do
   begin
    Write('A[',i:2,',',j:2,'] = ');
    Readln(A[i,j]);
   end;
 Writeln;
 Writeln('Initial matrix:');
 for i:=1 to M do
  begin
   for j:=1 to N do
    Write(A[i,j]:4);
   Writeln;
  end;
 Writeln;
 Writeln('New matrix:');
 i:=0;
 Repeat
  Inc(i);
  for j:=1 to N do V[j]:=A[i,j];
  if Test_Zero(V,N) then
   begin
    for k:=i+1 to M do
     for j:=1 to N do
      A[k-1,j]:=A[k,j];
    Dec(M);
   end;
 Until i>=M;
 j:=0;
 Repeat
  Inc(j);
  for i:=1 to M do V[i]:=A[i,j];
  if Test_Zero(V,M) then
   begin
    for k:=j+1 to N do
     for i:=1 to M do
      A[i,k-1]:=A[i,k];
    Dec(N);
   end;
 Until j>=N;
 for i:=1 to M do
  begin
   for j:=1 to N do
    Write(A[i,j]:4);
   Writeln;
  end;
 Readln
End.
Vladimir_S вне форума   Ответить с цитированием
Старый 29.05.2014, 18:03   #3 (permalink)
Lensom
Новичок
 
Регистрация: 21.05.2014
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Cпасибо за код.
Lensom вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 19:04.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.