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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.11.2008, 08:31   #11
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Это никак не могло влиять, просто это лишние скобки, и я их убрал. Я раньше их ставил, чтобы не запутаться, сейчас не ставлю. Кстати я тебе ночью лажу написал. Ты правильно начал, что делать две процедуры. Я когда отправил тебе программу, комп выключил и только тут до меня дошло, как это правильно сделать. Но было ужу пол-третьего ночи и включать комп снова не было сил. Вот держи нормальное, на мой взгляд, решение. Надо было только все параметры написать через var. Да еще зациклился на квадратной матрице, хотя это можно делать для любой. Сразу исчезла необходимость запоминать матрицу и ее размер.
Код:
uses crt;
type matrix=array [1..50,1..50] of integer;
procedure Vvod(n,p:integer;var a:matrix);
var i,j:integer;
begin
Writeln('Введите элементы массива:');
For i:=1 to n do
For j:=1 to p do
Readln(a[i,j]);
clrscr;
Writeln('Исходная матрица:');
for i:=1 to n do
   begin
     for j:=1 to p do
     write(a[i,j]:4);
     writeln;
   end;
end;
Procedure vyvod(n,p:integer;var a:matrix);
var i,j:integer;
begin
writeln('Результат:');
for i:=1 to n do
   begin
    for j:=1 to p do
    write(a[i,j]:4);
    writeln;
   end;
readln
end;
procedure U_s_s_0 (var n:integer;var p:integer; var a:matrix);
var i,j,k,t,m,g:integer;
begin
{Udalenie stroki s 0}
i:=1;
while i<=n do
   begin
     k:=0;
     for j:=1 to p do
     if a[i,j]=0 then k:=k+1;
     if k=p then
        begin
          for t:=1 to p do
          for m:=i to n-1 do
          a[m,t]:=a[m+1,t];
          n:=n-1;
        end
     else i:=i+1;
   end;
end;
procedure U_st_s_0 (var n:integer;var p:integer; var a:matrix);
var i,j,k,t,m,g:integer;
begin
{Udalenie stolbca s 0}
j:=1;
while j<=p do
   begin
     k:=0;
     for i:=1 to n do
     if a[i,j]=0 then k:=k+1;
     if k=n then
        begin
          for t:=1 to n do
          for m:=j to p-1 do
          a[m,t]:=a[m,t+1];
          p:=p-1;
        end
     else j:=j+1;
  end;
end;
var n,p:integer;
    a:matrix;
begin
clrscr;
write('n=');readln(n);
write('p=');readln(p);
Vvod(n,p,a);
U_s_s_0 (n,p,a);
U_st_s_0 (n,p,a);
vyvod(n,p,a);
end.

Последний раз редактировалось puporev; 17.11.2008 в 08:33.
puporev вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обращение матрицы методом союзной матрицы dofmat Помощь студентам 6 03.10.2011 15:01
Матрицы FatalX Помощь студентам 21 17.04.2009 22:50
Матрицы Сапфира Помощь студентам 4 21.09.2008 16:10
Задачка в паскале на матрицы Марик Помощь студентам 2 25.06.2008 00:18
матрицы chelsi Паскаль, Turbo Pascal, PascalABC.NET 13 25.04.2008 10:07