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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.04.2012, 21:08   #1
bleeX
Новичок
Джуниор
 
Регистрация: 11.04.2012
Сообщений: 2
Восклицание Оптимизация

1. Массив 3х3 заполнить 0 и 1, это будет результат игры в крестики нолики.
Вввести "да" если игра закончилась победой крестиков.

Код:
Var
   k, i : integer;
   Mass, Mass2 : Array[1..12] of integer;
Begin
     Randomize;
     k := 0;
     for i := 1 to 12 do
         begin
              Mass[i] := Random(100) - 50;
              Write( Mass[i], ' ' );
         end;
         Writeln;
     for i := 1 to 12 do
         if abs(Mass[i]) mod 10 = 7 then
            begin
                 k := k + 1;
                 Mass2[k] := Mass[i];
                 Write ( Mass2[k], ' ' );
            end;
            Writeln;
End.

2. Одномерный массив из 12ти чисел заполнить случ. положит. и отриц эл-ми.
Сформировать второй массив, разместив в нем эл-ты первого массива, значения
кот. оканчиваются на 7.
Код Pascal

Код:
Var
   k, i : integer;
   Mass, Mass2 : Array[1..12] of integer;
Begin
     Randomize;
     k := 0;
     for i := 1 to 12 do
         begin
              Mass[i] := Random(100) - 50;
              Write( Mass[i], ' ' );
         end;
         Writeln;
     for i := 1 to 12 do
         if abs(Mass[i]) mod 10 = 7 then
            begin
                 k := k + 1;
                 Mass2[k] := Mass[i];
                 Write ( Mass2[k], ' ' );
            end;
            Writeln;
End.
bleeX вне форума Ответить с цитированием
Старый 12.04.2012, 07:44   #2
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

А че нада-та?..
Нарисованы две одинаковые проги.. Из второй сделать первую штоле??
Ниипонятке..
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Старый 12.04.2012, 19:03   #3
bleeX
Новичок
Джуниор
 
Регистрация: 11.04.2012
Сообщений: 2
По умолчанию

оптимизировать первый код и второй :

Массив 3х3 заполнить 0 и 1, это будет результат игры в крестики нолики.
Вввести "да" если игра закончилась победой крестиков.

Код:
Var
   Mass, Mass2 : Array [ 1..3, 1..3 ] of integer;
   i, j, x, k : integer;
Begin
     k := 0;
     for i:= 1 to 3 do
         for j := 1 to 3 do
             begin
                  Read(x);
                  Mass[i, j] := x;
             end;
     for i:= 1 to 3 do
         for j := 1 to 3 do
             if (Mass[i,i]=1) then
                begin
                                        
                end;
         for j := 1 to 3 do
                  Write ( Mass2[i,j], ' ');
     if ( Mass[1,1] = 1) and ( Mass[1,2] = 1) and ( Mass [1,1] = 1 ) then writeln('da');
     if ( Mass[2,1] = 1) and ( Mass[2,2] = 1) and ( Mass [2,1] = 1 ) then writeln('da');
     if ( Mass[3,1] = 1) and ( Mass[3,2] = 1) and ( Mass [3,1] = 1 ) then writeln('da');
     if ( Mass[1,1] = 1) and ( Mass[2,1] = 1) and ( Mass [3,1] = 1 ) then writeln('da');
     if ( Mass[1,2] = 1) and ( Mass[2,2] = 1) and ( Mass [3,2] = 1 ) then writeln('da');
     if ( Mass[1,3] = 1) and ( Mass[2,3] = 1) and ( Mass [3,3] = 1 ) then writeln('da');
     if ( Mass[1,1] = 1) and ( Mass[2,2] = 1) and ( Mass [3,3] = 1 ) then writeln('da');
     if ( Mass[3,1] = 1) and ( Mass[2,2] = 1) and ( Mass [1,3] = 1 ) then writeln('da');   
     
     {for i := 1 to 3 do
         begin
              Writeln;
              for j := 1 to 3 do
                  Write ( Mass[i,j], ' ');
         end;                                 }
     Writeln;
End.
bleeX вне форума Ответить с цитированием
Старый 12.04.2012, 20:15   #4
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

это скорее набросок:
Код:
function IsWin(x, y, dx, dy: Integer): Boolean;
var
  i: Integer;
begin
  Result := true;
  for i := 1 to 3 do
  begin
    Result := Result and (Mass[x, y] = 1);
    x := x + dx;  y := y + dy;
  end;
end;
а дальше:
Код:
if IsWin(1, 1, 1, 0) or IsWin(1, 1, 1, 1) or IsWin(1, 1, 0, 1) or IsWin(2, 1, 0, 1) or IsWin(3, 3, -1, 0) or IsWin(3, 3, 0, 1) then
write('da');
GreenWizard вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Оптимизация Красноглаз Паскаль, Turbo Pascal, PascalABC.NET 3 28.10.2011 13:40
Оптимизация Красноглаз Паскаль, Turbo Pascal, PascalABC.NET 2 29.09.2011 11:16
Оптимизация... MikeMNN Общие вопросы C/C++ 0 15.12.2010 17:40
Оптимизация If + Or Alex Cones Общие вопросы Delphi 6 09.06.2010 01:42
Оптимизация Terran Общие вопросы Delphi 3 03.05.2008 19:03