Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
jolene
0 / 0 / 1
Регистрация: 31.03.2012
Сообщений: 9
#1

Цикл "While". Объясните пожалуйста на примере

25.05.2012, 21:21. Просмотров 537. Ответов 4
Метки нет (Все метки)

Здравствуйте. Подскажите пожалуйста, что я делаю не так. По-идее, из цикла должно выходить, как только значение S станет равным (StringGrid1.RowCount div 2), но, если оно станет ему равным на строке 13, то из цикла почему-то не выходит (продолжает выполнять второй for), а если на строке 18 то выходит.
Впринципе, проблема решена заменой "<" на "<>", но всё же интересно: почему так? Ведь должно же выходить?
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
procedure TForm1.Button2Click(Sender: TObject);
var
  s, i : integer;
begin
  Memo1.Clear;
  s := 0;
  while (s < (StringGrid1.RowCount div 2)) do
    begin
      for i := s to StringGrid1.ColCount-1-s do
        begin
          Memo1.Lines.Add('('+IntToStr(s+1)+','+IntToStr(i+1)+')');
        end;
      inc(s);
      if (s = (StringGrid1.RowCount div 2)) then
        exit;
      for i := StringGrid1.ColCount-s-1 downto s do
        Memo1.Lines.Add('('+IntToStr(s+1)+','+IntToStr(i+1)+')');
      inc(s);
    end;
  Memo1.Lines.Add(inttostr(s));
end;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.05.2012, 21:21
Ответы с готовыми решениями:

Объясните подробно , пожалуйста , каким образом работает цикл for на данном примере
Значение переменной p, которое будет выведено в ячейку F1Book после выполнения...

Ребят , есть программа "камера хранения".Один цикл надо пожалуйста
Мне над что бы при нажатие кнопки из listbox высчитывалось отставшие время и ...

В каждом слове текста замените "а" на букву "е", если "а" стоит на четном месте, и заменить букву "б" на сочетание "ак",
В каждом слове текста замените &quot;а&quot; на букву &quot;е&quot;, если &quot;а&quot; стоит на четном...

Из слов "Работа", "крест", "тон" составить фразу "Кто не работает, тот не ест" и определить ее длину
Из слова &quot;Работа&quot;,&quot;крест&quot;,&quot;тон&quot; составить фразу:&quot;Кто не работает, тот не ест&quot; и...

На форме располагаются компоненты: редактор Edit; линейка ScrollBar; радионабор с опциями "Цветы", "Деревья", "Рыбы", "Звери"
Доброго времени суток, 2 курс 2 семестр, пришли, препод раздал задачи, сказал...

4
BuPy7
Нет ТЗ - давай досвидания
741 / 371 / 64
Регистрация: 01.12.2011
Сообщений: 2,250
25.05.2012, 21:32 #2
ПОКА <условие истинно> ДЕЛАЙ

Пока 2 больше 3:
Код
while 2>3 do
Пока х не равно у:
Код
while x<>y do
0
jolene
0 / 0 / 1
Регистрация: 31.03.2012
Сообщений: 9
25.05.2012, 21:36  [ТС] #3
Я имею ввиду, что в цикле условие становится ложным, но он не прекращается.
0
HanDi
892 / 339 / 65
Регистрация: 11.02.2012
Сообщений: 1,502
25.05.2012, 21:47 #4
А ты уверен, что оно становится ложным? Возможно оно именно при "<>" становится ложным или вообще при ">".
0
Одиночка
3933 / 1858 / 337
Регистрация: 16.03.2012
Сообщений: 3,869
26.05.2012, 00:02 #5
Вообще может так и задумано, но:
Delphi
1
2
      if (s = (StringGrid1.RowCount div 2)) then
        exit;
Это выход из процедуры, а не из цикла. Если хочешь выйти только из цикла - нужно писать Break.
если оно станет ему равным на строке 13, то из цикла почему-то не выходит
Должно вообще из процедуры выходить. А если это было до того, как вставил эту проверку с выходом, так условие, которое записано в строке While проверяется только в начале следующего цикла. Т.е. цикл заканчивается до конца в любом случае.
0
26.05.2012, 00:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.05.2012, 00:02

Тысячные числа исправлять к примеру с "1200" на "1 200", "12000" на "12 000" и т.д
Собственно числа исправлять к примеру с &quot;1200&quot; на &quot;1 200&quot;, &quot;12000&quot; на &quot;12 000&quot;,...

"Форма" как на примере.
Как создать &quot;Форму&quot;: Что использовать, &quot;куда&quot; смотреть.

Объясните , что в программе делает "if a and 1=1"
Здравствуйте , помогите разобраться , что за проверка на &quot;а и 1 = 1&quot; ....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru