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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Цикл repeat ... until 
:(
    Опции темы
ac1dbuRn
Дата 6.10.2009, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

var x,x1:integer;

begin
  write('write the number - '); read(x);
    repeat
      x1:= x mod 10;
      writeln(x1);
    until x1<0;
  readln;


Ввожу число 4547, а он выводит бесконечный цикл с числом 7...

нужно, при вводе числа, например 4547, в ответ было таким образом:
"В числе три разных цифры - 4, 5, 7"
4
5
4
7

Через mod и div получаются бесконечные циклы....

Через while тоже самое...
Код

var x:integer;

begin
  write('write the number - '); read(x);
  while x>0 do
  begin x:=x mod 10;
  writeln(x);
  end;

  readln;
  readln;

  { TODO -oUser -cConsole Main : Insert code here }
end.

PM MAIL   Вверх
kami
Дата 6.10.2009, 22:09 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

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



Цитата(ac1dbuRn @  6.10.2009,  21:37 Найти цитируемый пост)
 until x1<0;

А с каких пор остаток от деления может стать меньше нуля?
PM MAIL WWW   Вверх
Keeper89
Дата 6.10.2009, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

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



ac1dbuRn, а вы сами сообразили, что пишите? Операция mod никогда в жизни не даст отрицательного числа, которое вы хотите увидеть в цикле. О чем я? - О том, что сравнивать надо с нулем, т.е.
Код

until x1=0;


Добавлено через 37 секунд
Блин, kami опередил smile


--------------------
PM MAIL WWW   Вверх
Christoph
Дата 6.10.2009, 22:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 667
Регистрация: 23.1.2008
Где: Харьков

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



цикл repeat закончиться только лишь тогда когда условие станет True, в цикле while наоборот smile 
1.в цикле repeat никогда 0 не станет больше X
2. в цикле while тоже самое

Уго smile так нечестно

Это сообщение отредактировал(а) Christoph - 6.10.2009, 22:16


--------------------
user posted image
PM MAIL ICQ   Вверх
kami
Дата 6.10.2009, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

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



Скорее всего, в цикле должно быть так:
Код

Writeln(x mod 10);
x:=x div 10;

Правда, при этом перечисление будет в порядке, обратном положению цифр в числе.

Добавлено через 2 минуты и 21 секунду
Цитата(Keeper89 @  6.10.2009,  22:12 Найти цитируемый пост)
 сравнивать надо с нулем

7 mod 10 = 7. И нулем здесь не пахнет даже через бесконечное количество циклов.  smile 
PM MAIL WWW   Вверх
ac1dbuRn
Дата 6.10.2009, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



вот, написал, тока как-то мудрёно... 

Код

program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;
var x,x1,x2,x3,x4,x5,x6,x7,x8:integer;

begin
  write('write the number - '); read(x);

  x1:=x mod 10;
  x2:=x div 10;
  writeln(x1);

  x3:=x2 mod 10;
  x4:=x2 div 10;
  writeln(x3);

  x5:=x4 mod 10;
  x6:=x4 div 10;
  writeln(x5);

  x7:=x6 mod 10;
  x8:=x6 div 10;
  writeln(x7);



  readln;
  readln;
  { TODO -oUser -cConsole Main : Insert code here }
end.


но это тока для 4-значного числа.... А можно ли как-то попроще и для n-ого кол-ва?...


kami, сейчас попробую

Добавлено через 9 минут и 21 секунду
kami, Отлично! Благодарю!  smile Всё получилось коротко и ясно  smile 


Это сообщение отредактировал(а) ac1dbuRn - 6.10.2009, 22:37
PM MAIL   Вверх
Keeper89
Дата 6.10.2009, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

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



Цитата(kami @  6.10.2009,  23:27 Найти цитируемый пост)
7 mod 10 = 7. И нулем здесь не пахнет даже через бесконечное количество циклов.  smile

да уж, накосячил.  smile 


--------------------
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

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

1. Публиковать ссылки на вскрытые компоненты

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

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


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

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


 




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


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

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