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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Цикл с шагом 
:(
    Опции темы
Serhik_z
  Дата 5.8.2007, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 108
Регистрация: 4.12.2004

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



Как сделать цикл с шагм

Код

For n:= 0 to 40 шаг 0,5 do
begin
xa:= cos (n)*r;
memo1.Lines.Add('Y' + FloatToStrF(xa,ffFixed,9,8));



PM MAIL   Вверх
dumb
Дата 5.8.2007, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

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



Код

For n:= 0 to 80 do
begin
xa:= cos (n/2)*r;

PM MAIL   Вверх
Yanis
Дата 5.8.2007, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Если for вгоняет в определённые рамки, то while всегда поможет их расширить.


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Serhik_z
Дата 5.8.2007, 14:17 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 108
Регистрация: 4.12.2004

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



Замечательно Yanis, но нужно с шагом.
PM MAIL   Вверх
ALeXandrK
  Дата 5.8.2007, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Serhik_z: Ты видимо совсем недавно в программировании...

Код

... 
n:=0;
while n<>40 do
begin
  xa:= cos (n)*r;
  memo1.Lines.Add('Y' + FloatToStrF(xa,ffFixed,9,8));
  n:=n+0.5;
end;


А если совсем приспичило... то создавай массив и используй конструкцию
Код

for Элемент in Массив do Что-то;

но это уже правой рукой чесать левое ухо smile 

Это сообщение отредактировал(а) ALeXandrK - 5.8.2007, 15:55


--------------------
Богат не/ни тот, у кого много, а тот, кому хватает
PM WWW   Вверх
Yanis
Дата 5.8.2007, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Serhik_z @  5.8.2007,  15:17 Найти цитируемый пост)
но нужно с шагом

А я от шага тебя не отговариваю.
Просто делай это через while, как ALeXandrK показал, а не с помощью for.


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
ivan219
  Дата 5.8.2007, 15:51 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



А вот так будет по крассивее smile 
Код

n:=n+0,5; -> Inc(n,0.5);


Извеняюсь лажонулся smile Inc с дробными числами не работает smile 

Это сообщение отредактировал(а) ivan219 - 6.8.2007, 05:52
PM MAIL ICQ   Вверх
mr.Anderson
Дата 5.8.2007, 20:17 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


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

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



Такое ощущение, что никто DRKB в глаза не видел. smile
Код

for i:=0 to max do
 if i mod STEP = 0 then
 begin
  //тело цикла
 end;

Вместо Step подставляем нужный шаг.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Yanis
Дата 5.8.2007, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



mr.Anderson
Нужен дробный шаг.


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
ALeXandrK
Дата 5.8.2007, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

for i:=0 to max do
 if i mod STEP = 0 then
 begin
  //тело цикла
 end;


и в чем смылс... этот код и сложнее по структуре и больше по коду,
а значит некрасиво (красиво - это когда есть все и ничего лишнего!!!) smile 


--------------------
Богат не/ни тот, у кого много, а тот, кому хватает
PM WWW   Вверх
aktuba
Дата 5.8.2007, 23:38 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


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

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



Цитата

а значит некрасиво


я бы добавил - запутано и сложно. чем while не устраивает?


--------------------
user posted image
PM MAIL WWW Skype   Вверх
ivan219
  Дата 6.8.2007, 05:58 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Как вареант:
Код

const
    Step = 0.5;
var
  I: Integer;
  N: Real;
begin
 N:=0;
 for I:=0 to Round(40/Step) do
  begin
   // Работа с переменной N
   N:=N+Step;
  end;
end;


Это сообщение отредактировал(а) ivan219 - 6.8.2007, 05:59
PM MAIL ICQ   Вверх
sentry
Дата 6.8.2007, 08:26 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Code Monkey
*


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

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



Да зачем придумывать какой-то бредовый код с for'ом, когда с данной задачей быстрее и лучше справляется while! 
Единственное, что желательно будет сделать вдобавок - это проверку типа такого во избежание погрешности:
Код

while X <= 40 + Step/2 do
begin
  // ...
  X := X + Step;
end;

PM MAIL   Вверх
mr.Anderson
Дата 6.8.2007, 14:35 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


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

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



Ну чего вы на меня накинулись? smile Я просто привел пример из DRKB на эту тему. Плюс мало ли, может, кому очень хочется сделать For вместо While? smile


--------------------
user posted image

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

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

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

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

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


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

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


 




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


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

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