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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.09.2009, 18:44   #1
pony
Новичок
Джуниор
 
Регистрация: 06.09.2009
Сообщений: 2
По умолчанию найдите ошибку в коде

не могу найти ошибку в коде.метод dubl должен дублировать столбцы где все числа являются перестановкой чисел первого столбца,функция perestanovka проверяет это.Просто я весь день сижу и голова мягко сказать уже не варит,а прога не пашет. Оч нужна ваша помощь
Код:
program laba1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type MATRIX = class
    public
      a: array [1..100,1..100] of Integer;
      n,m,i,j: Integer;
      procedure vvod;
      procedure vyvod;
      procedure dubl;
      constructor create;
    function perestanovka(i: integer):boolean;
      destructor destroy; override;
  end;


 Constructor MATRIX.create;
 begin
   inherited Create ;
 end ;

 destructor MATRIX.destroy;
 begin
   inherited destroy;
 end;

 procedure MATRIX.vvod;
 var i,j: Integer;
 begin
   Writeln('vvedite chislo strok i stolbcov');
   Readln (n,m);
   Writeln('vvedite elementy massiva');
   for i:=1 to n do
   for j:=1 to m do
   Readln(a[i,j]);
   end ;
   procedure MATRIX.vyvod;
     var i,j: Integer;
 begin
   for i:=1 to n do
     begin
      for j:=1 to m do
      write(a[i,j]:5);
      writeln;
     end;
   //Writeln ('':j*3+2,'':i+3,a[i,j]);
   readln;
 end;

procedure MATRIX.dubl;
function perestanovka (i: integer):boolean;
 var
   d,k,t,p: integer;
   b: array [1..100] of integer;
   fl,flag: boolean;
   begin
    fl:=false;
    for d:=1 to m do
     b[d]:=1;
    for k:=1 to m do
       begin
          t:=1;
          p:= a[i,k];
          while (not(fl)) and (t<=n) do
          begin
            if a[1,t]=p then
              if b[t]=1 then
                begin
                 b[t]:=0;
                 fl:=true;
                end;
            inc(t);
          end;
       end;
     d:=1;
     flag:=true;
     while (d<=m) and (flag) do
        begin
           if b[t]= 1 then
           begin
               perestanovka:= false;
               flag:= false;
           end;
           inc(d);
        end;
     if flag then
     perestanovka:= true;

   end;
 var
 f,w:integer;
   begin
      i:=1;
      while i<=n do
      if perestanovka(i) then
         begin

             for f:=n downto i do
             a[i,j+1]:=a[i,j];
             inc(i,2);

         end
         else inc(i);
   end;
  var
  c: MATRIX;

 begin

 c:=MATRIX.create;
 c.vvod;
 c.dubl;
 c.vyvod;
 c.destroy;
 end.

Последний раз редактировалось Stilet; 14.09.2009 в 10:02.
pony вне форума Ответить с цитированием
Старый 14.09.2009, 10:03   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
все числа являются перестановкой чисел первого столбца
В каком смысле "перестановкой"?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найдите ошибку St1fler92 Помощь студентам 4 26.05.2009 15:23
Найдите ошибку пожалуйста..рекурсия Влад-mego Помощь студентам 0 09.04.2009 21:40
найдите ошибку Сова Паскаль, Turbo Pascal, PascalABC.NET 9 11.02.2009 18:46
НАЙДИТЕ ОШИБКУ В ПРОГРАММЕ svetah Помощь студентам 8 03.12.2008 15:19
Найдите ошибку! geniy JavaScript, Ajax 4 04.12.2007 16:22