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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.10.2010, 19:47   #1
aharem08
Пользователь
 
Регистрация: 10.09.2010
Сообщений: 17
По умолчанию Цикл While

Хелп

Вообщем проблема в том что

(ранее х и у :=1)

begin
while x<12 do begin
inc(x);
while y<12 do begin
inc(y);
memo1.lines.add(inttostr(x)+','+int tostr(y));
end;
end;
end;

в данном случае конечный результат будет 1,12
Вопрос-почему не изменяется x дальше до 12,12
aharem08 вне форума Ответить с цитированием
Старый 06.10.2010, 19:55   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

смотрите, во внутреннем цикле увеличивается y
пока не станет равным 12. стало y 12 - всё, в цикл
while y<12 do begin
вход закрыт.
А вывод в мемо именно в этом цикле производится.
Потом x увеличивается до 12 - но при этом в мемо уже ничего не пишется.

Вы что хотели сделать то?!!
если получить 1,1, 1,2... 1,12, .. потом 2,1, 2,2... 2,12 и т.д. до 12,1, 12,2... 12,12
тогда просто нужно
Код:
begin
while x<12 do begin
  inc(x);
  y:=0;
  while y<12 do begin
     inc(y);
     memo1.lines.add(inttostr(x)+','+inttostr(y));
  end;
end;
end;

Последний раз редактировалось Serge_Bliznykov; 06.10.2010 в 19:57.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 06.10.2010, 19:58   #3
fenix-elite
Пользователь
 
Аватар для fenix-elite
 
Регистрация: 02.11.2008
Сообщений: 75
По умолчанию

Код:
while x<13 do
  begin
    while y<13 do
      begin
        memo1.lines.add(inttostr(x)+','+inttostr(y));
        inc(y);
      end;
    inc(x);
    y := 1;
  end;
ПРоблема твоя в том, что ты не обнуляешь( точнее не присваиваешь 1) y после прохода вложенного цикла. В итого он после 1 прохода в него даже не заходит, т.к после прохода y = 12.
«Когда ты действительно чего-то хочешь, вся Вселенная помогает тебе осуществить твою мечту».(с) Пауло Коэльо
fenix-elite вне форума Ответить с цитированием
Старый 06.10.2010, 20:02   #4
aharem08
Пользователь
 
Регистрация: 10.09.2010
Сообщений: 17
По умолчанию

вообще я делал через
FOR x:=1 to 12 do begin
тут должно быть условие при котором если оно выполняется то x:=x+1, но в цикле for счетчик нельзя менять поэтому я стал использовать while
for y:=1 to 12 do begin

и тут так же вывод в мемо



вообще мне надо чтобы у меня через цикл While вывести чифры от 1,1 1,2.....12,12
aharem08 вне форума Ответить с цитированием
Старый 06.10.2010, 20:04   #5
aharem08
Пользователь
 
Регистрация: 10.09.2010
Сообщений: 17
По умолчанию

Ё ВСЕМ СПАСИБО!
aharem08 вне форума Ответить с цитированием
Старый 06.10.2010, 20:14   #6
aharem08
Пользователь
 
Регистрация: 10.09.2010
Сообщений: 17
По умолчанию

а вот еще вопрос- если я делаю таких вложеных циклов 5 штук-они работают но если на форме куда то тыкнуть то форма виснет пока результат не дойдет до 12,12,12,12,12. С этим можно что то сделать?
aharem08 вне форума Ответить с цитированием
Старый 06.10.2010, 20:17   #7
fenix-elite
Пользователь
 
Аватар для fenix-elite
 
Регистрация: 02.11.2008
Сообщений: 75
По умолчанию

Вынести это в отдельный поток, но не думаю, что ты с этим справишься.
«Когда ты действительно чего-то хочешь, вся Вселенная помогает тебе осуществить твою мечту».(с) Пауло Коэльо
fenix-elite вне форума Ответить с цитированием
Старый 06.10.2010, 20:22   #8
aharem08
Пользователь
 
Регистрация: 10.09.2010
Сообщений: 17
По умолчанию

Спасиб. Буду читать про это дело и делать)
aharem08 вне форума Ответить с цитированием
Старый 06.10.2010, 20:36   #9
aharem08
Пользователь
 
Регистрация: 10.09.2010
Сообщений: 17
По умолчанию

ЕЕ сделал)
aharem08 вне форума Ответить с цитированием
Старый 06.10.2010, 21:44   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
если на форме куда то тыкнуть то форма виснет пока результат не дойдет до 12,12,12,12,12. С этим можно что то сделать?
Просто в цикле отдавайте системе её тики - вставьте внутрь цикла такую строчку:
Код:
      Application.ProcessMessages;
и всё зашевелится!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
цикл While MsJane Помощь студентам 1 26.12.2009 07:49
Цикл по времени - Как сделать так чтобы цикл выполнялся к примеру 10 секунд ? Anarki Общие вопросы C/C++ 3 13.11.2009 19:23
Цикл с предусловием. ( цикл while) Цикл с постусловием. (цикл repeat ... until) Mr.User Помощь студентам 9 23.11.2007 01:34