Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите пожалуйста переделать программу 
:(
    Опции темы
chermak
Дата 18.5.2007, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 8.5.2007

Репутация: нет
Всего: нет



Данная программа, из одномерного массива делает матрицу 8х8 и печатает на экране змейкой. А мне нужно чтобы одномерный массив сформировывался в двумерный, а потом только выводился на экран.


Код

program SnakeMatrix; 

uses 
  crt; 

var 
  data  : array[0..63] of integer; 


procedure fillDataSimple; 
var 
  i: integer; 
begin 
  for i := 0 to 63 do begin 
    data[i] := i + 1; 
  end; 
end; 

procedure proceedCoords(var x, y, dx, dy: integer);
var
  x1, y1: integer;
  dx1, dy1: integer;
  xOut, yOut: boolean;
begin

  if ((x = 7) and (y = 7)) then begin
    x := 0;
    y := 0;
    dx := -1;
    dy := 1;
  end else begin
    x1 := x + dx;
    y1 := y + dy;

    xOut := ((x1 < 0) or (x1 > 7));
    yOut := ((y1 < 0) or (y1 > 7));

    if xOut then begin
      y := y + 1;
      dx := -dx;
      dy := -dy;
    end else if yOut then begin
      x := x + 1;
      dx := -dx;
      dy := -dy;
    end else begin
      x := x1;
      y := y1;
    end;
  end;

end;


var
  x, y: integer;
  dx, dy: integer;
  i, j: integer;
begin
  clrscr;

  fillDataSimple;

  x := 0;
  y := 0;
  dx := -1;
  dy := 1;

  for i := 0 to 63 do begin
    gotoxy(5 * x + 1, 2 * y + 1);
    delay(15000);
    write(data[i]);
    proceedCoords(x, y, dx, dy);
  end;

  readkey;

end.

PM MAIL   Вверх
Rodman
Дата 18.5.2007, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: нет
Всего: 122



Код

program SnakeMatrix; 
uses 
  crt; 
var 
  data  : array[0..63] of integer; 
    data2:array[0..7,0..7]of integer;
procedure fillDataSimple; 
var 
  i: integer; 
begin 
  for i := 0 to 63 do begin 
    data[i] := i + 1; 
  end; 
end; 
procedure proceedCoords(var x, y, dx, dy: integer);
var
  x1, y1: integer;
  dx1, dy1: integer;
  xOut, yOut: boolean;
begin
   
  {if ((x = 7) and (y = 7)) then begin
    x := 0;
    y := 0;
    dx := -1;
    dy := 1;
  end else begin
    x1 := x + dx;
    y1 := y + dy;
    xOut := ((x1 < 0) or (x1 > 7));
    yOut := ((y1 < 0) or (y1 > 7));
    if xOut then begin
      y := y + 1;
      dx := -dx;
      dy := -dy;
    end else if yOut then begin
      x := x + 1;
      dx := -dx;
      dy := -dy;
    end else begin
      x := x1;
      y := y1;
    end;
  end;}
end;
var
  x, y: integer;
  dx, dy: integer;
  i, j: integer;
begin
  clrscr;
  fillDataSimple;
  x := 0;
  y := -1;
  dx := -1;
  dy := 1;
  for i := 0 to 63 do begin
 begin 
   if(i mod 7 = 0)then
      inc(y);  
   
data2[i mod 7, y]:=data[i];


   { gotoxy(5 * x + 1, 2 * y + 1);
    delay(15000);
    write(data[i]);
    proceedCoords(x, y, dx, dy);}
    end;
  end;
  readkey;
end.


мож так?!
PM MAIL WWW Skype GTalk YIM MSN   Вверх
volvo877
Дата 18.5.2007, 13:29 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



Rodman, а теперь попробуй запустить исходную программу и свою (с распечатыванием результатов), и потом сравни матрицы...

А на будущее - ПРЕЖДЕ чем предложить решение, ПРОВЕРЬ его! Это уже далеко не в первый раз, как я тебе это говорю, и мне порядком надоело!


chermak,
Код

var
  matrix : array[0 .. 7, 0 .. 7] of integer;

...

  for i := 0 to 63 do begin
    matrix[y, x] := data[i];
    proceedCoords(x, y, dx, dy);
  end;

  { И печатаешь результат }
  for i := 0 to 7 do begin
    for j := 0 to 7 do
      write(matrix[i, j]:4);
    writeln; writeln;
  end;


Это сообщение отредактировал(а) volvo877 - 18.5.2007, 13:29
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0926 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.