Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи на Pascal/Object Pascal/Free Pascal (Delphi/Lazarus)

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

patsu4ok

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
program SDA_V2;
uses Crt;
const m=15;
      n=10;
type
      vector = array [1..m,1..n] of char;
var   A: vector;
 
procedure fillVector(var arr:vector; m:integer; n:integer);
var i,j: byte;
begin
     for i:=1 to m do
         for j:=1 to n do
             arr[i,j]:= '*';
end;
 
procedure showVector(arr:vector; m:integer; n:integer);
var i,j: Integer;
begin
     GotoXY(1,14);
     TextColor(Black);
     for i:=1 to m do begin
         for j:=1 to n do
             write (arr[i,j]);
         writeln;
     end;
end;
 
procedure vectorWalk(var a:vector; rows:Integer; cols:Integer);
var i,j,p,k,min: integer;
    flag:shortint;
 
begin
     flag:=99;
     TextBackground(Blue);
     TextColor(White);
     if rows<cols then begin
                       min:=rows;
                       if min mod 2 =1 then flag:=1;
                       end;
     if cols<rows then begin
                       min:=cols;
                       if min mod 2 =1 then flag:=0;
                       end;
     if cols=rows then begin
                       min:=rows;
                       if min mod 2 =1 then flag:=-1;
                       end;
     k:=min div 2;
     for p:=1 to k do begin
 
         Delay(200);
         GotoXY(p,rows-p+1);
         for j:=p to cols-p+1 do begin
             write(a[rows-p+1,j]);
             Delay(200);
         end;
 
         Delay(200);
         for i:=rows-p downto p do begin
             GotoXY(cols-p+1,i);
             write(a[i,cols-p+1]);
             Delay(200);
         end;
 
         Delay(200);
         for j:=cols-p downto p do begin
             GotoXY(j,p);
             write(a[p,j]);
             Delay(200);
         end;
 
         Delay(200);
         for i:=p+1 to rows-p do begin
             GotoXY(p,i);
             write(a[i,p]);
             Delay(200);
         end;
     end;
     if flag=1  then begin   { row<col}
        GotoXY(k+1,rows-k);
        for j:=k+1 to cols-k do begin
            Delay(200);
            write(a[k+1,j]);
            end;
     end;
 
     if flag=0 then begin    { col<row }
        for i:=rows-k downto k+1 do begin
            GotoXY(cols-k,i);
            write(a[i,cols-k]);
            Delay(200);
        end;
     end;
 
     if flag=-1 then write(a[k+1,k+1]);  { row=col }
     GotoXY(1,rows+1);
     writeln;
end;
 
Begin
 
     TextBackground(White);
     ClrScr;
     fillVector(A,m,n);
     { showVector(A,m,n); }
     vectorWalk(A,m,n);
     TextBackground(Black);
     TextColor(White);
     write('.');
     readln;
END.
 
 
Как изменить , чтобы обход начинался снизу вверх справа по столбцу??

Всего записей: 2 | Зарегистр. 08-01-2013 | Отправлено: 00:23 11-01-2013
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи на Pascal/Object Pascal/Free Pascal (Delphi/Lazarus)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru