Форум программистов, компьютерный форум, киберфорум
Наши страницы

Delphi для начинающих

Войти
Регистрация
Восстановить пароль
 
jolene
0 / 0 / 0
Регистрация: 31.03.2012
Сообщений: 9
#1

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

25.05.2012, 21:21. Просмотров 521. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Цикл "While". Объясните пожалуйста на примере (Delphi):

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

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

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

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

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

Объясните , что в программе делает "if a and 1=1" - Delphi
Здравствуйте , помогите разобраться , что за проверка на &quot;а и 1 = 1&quot; . Фрагмент кода : cell :Byte; cell:=Ord(Messg); // Перевод N-го...

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

Пока 2 больше 3:
Код
while 2>3 do
Пока х не равно у:
Код
while x<>y do
0
jolene
0 / 0 / 0
Регистрация: 31.03.2012
Сообщений: 9
25.05.2012, 21:36  [ТС] #3
Я имею ввиду, что в цикле условие становится ложным, но он не прекращается.
0
HanDi
890 / 337 / 8
Регистрация: 11.02.2012
Сообщений: 1,502
25.05.2012, 21:47 #4
А ты уверен, что оно становится ложным? Возможно оно именно при "<>" становится ложным или вообще при ">".
0
Одиночка
3927 / 1852 / 88
Регистрация: 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
Привет! Вот еще темы с ответами:

В слове Х перед каждой буквой "к", которой предшествует буква "с", вставить букву "н" - Delphi
Привет всем) вот условие задачи:В слове Х перед каждой буквой &quot;к&quot;, которой предшествует буква &quot;с&quot;, вставить букву &quot;н&quot; У меня был код на...

Дана строка. Заменить все буквы "м" на "н". Заменить все вхождения сочетаний букв "про" на "нет" - Delphi
2.Дана строка. 1) Заменить все буквы м на н. 2) Заменить все вхождения сочетаний букв &quot;про&quot; на &quot;нет&quot;.

Замените в слове Х все буквы "а" на сочетание "ку", а сочетание "ку" на букву "б" - Delphi
Написать программу, заменяющую в слове Х все буквы &quot;а&quot; на сочетание &quot;ку&quot;, а сочетание &quot;ку&quot; на букву...

Создать окно "пожалуйста, подождите" с возможностью отмены - Delphi
Помогите реализовать. Имеется форма, на ней происходит длительный процесс при нажатии на кнопку, требуется создать, я думаю,...


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

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

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