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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.11.2008, 18:27   #1
Canvas
 
Аватар для Canvas
 
Регистрация: 17.11.2008
Сообщений: 8
Вопрос копирование массива

обьясняю- есть массив 10 на 9. в нём храняться случайные числа от 1 до 3 (0 не включен)- как сделать так, чтобы часть массива до координаты в параметре X сдвигалась вправо?...... вот что я надумал- но это работает слабенько...

Код:
for x1:=9 downto 0 do
  begin
  if (mas[x1,8]=0)and(mas[x1,7]=0)and(mas[x1,6]=0)and(mas[x1,5]=0)and(mas[x1,4]=0)and(mas[x1,3]=0)and(mas[x1,2]=0)and(mas[x1,1]=0)and(mas[x1,0]=0) then
    if mas[x1-1,8]<>0 then
      begin
      for y2:=0 to 8 do
      for x2:=0 to 9 do
      mas2[x2,y2]:=mas[x2,y2];
      x2:=0;
      while x2<x1 do
      begin
        for y2:=0 to 8 do
        for x2:=0 to 9 do
        mas[x2,y2]:=mas2[x2-1,y2];
      end;
как видите- сначала у меня идёт проверка- на пустой столбец, до которого надо сдвигать... и проверка- заполнен ли столбец левее того что пуст.

помогите плиз....
Все мы - всего лишь рещультат сложившихся обстоятеств. (с)
Canvas вне форума Ответить с цитированием
Старый 18.11.2008, 19:05   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

НУ насколько я понял задание то решить мона примерно так:
Код:
var a:array[1..10,1..9] of integer; k,i,j:integer;
begin
{Наполняем массив}
for i:=1 to 10 do begin
  for j:=1 to 9 do begin a[i,j]:=i*j;write(a[i,j]:3); end;
  writeln;
end;
k:=2;  {Сдвинуть на второй столбец}
for i:=1 to 10 do begin
 move(a[i,1],a[i,k],sizeof(a[i,1])*k);
 FillChar(a[i,1],sizeof(a[i,1])*(k-1),0);
end;
writeln;
{Показать сдвинутое}
 for i:=1 to 10 do begin
  for j:=1 to 9 do begin write(a[i,j]:3); end;
  writeln;
end;
readln;
end.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.11.2008, 06:54   #3
Canvas
 
Аватар для Canvas
 
Регистрация: 17.11.2008
Сообщений: 8
По умолчанию

я попробую. но это надо было в делфи))) ща мош передаю... и проверю...
Все мы - всего лишь рещультат сложившихся обстоятеств. (с)
Canvas вне форума Ответить с цитированием
Старый 19.11.2008, 13:34   #4
Canvas
 
Аватар для Canvas
 
Регистрация: 17.11.2008
Сообщений: 8
По умолчанию

непомогло... =(
Все мы - всего лишь рещультат сложившихся обстоятеств. (с)
Canvas вне форума Ответить с цитированием
Старый 21.11.2008, 14:21   #5
Canvas
 
Аватар для Canvas
 
Регистрация: 17.11.2008
Сообщений: 8
По умолчанию

ну помогите, плиииз!
Все мы - всего лишь рещультат сложившихся обстоятеств. (с)
Canvas вне форума Ответить с цитированием
Старый 21.11.2008, 17:50   #6
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Код:
for j:=x downto 1 do
  mas[i,j]:=mas[i,j-1];
mas[i,0]:=0;
программа — запись алгоритма на языке понятном транслятору
evg_m на форуме Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод элементов массива.Изменение элементов массива. Vesnushka18 Помощь студентам 6 09.06.2011 13:05
Копирование VVVasek Microsoft Office Excel 13 20.09.2008 23:12
Копирование ryton SQL, базы данных 2 30.06.2008 09:32
Копирование файлов matus Помощь студентам 9 27.02.2008 19:34
переписать из массива в линейный двунаправленный список чётные элементы массива Black_Ak24 Помощь студентам 12 08.01.2008 00:44