Как посчитать количество итераций в цикле с
Перейти к содержимому

Как посчитать количество итераций в цикле с

  • автор:

Произвольное количество итераций в цикле while в PHP

Бывают задачи, в которых количество итераций цикла не известно заранее. К примеру: дано число, нужно делить его на 2 столько раз, пока результат не станет меньше 10 . Нужно вывести число, которое при этом получится.

В этом случае мы не знаем количество итераций. Не беда — сделаем условием цикла условие пока число больше 10:

10) < $num = $num / 2; >echo $num; // после цикла получим результат ?>

Дано число $num с неким начальным значением. Умножайте его на 3 столько раз, пока результат умножения не станет больше 1000 . Какое число получится? Посчитайте количество итераций, необходимых для этого.

Посчитать количество итераций цикла do while

Подскажите, пожалуйста, как посчитать количество итераций цикла do while с помощью Roslyn? Нужен семантический анализатор, который бы определял итерации.

using System; using System.Linq; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; namespace testAnalyzer < class Program < static void Main(string[] args) < var code = @" public void FindI() < int i = 0; int a = 17; do < a+=9; i++; >while (a<104); >"; var syntaxTree = CSharpSyntaxTree.ParseText(code); var doStatement = syntaxTree .GetRoot() .DescendantNodes() .OfType() .First(); //. Console.WriteLine("num of iterations: " ); Console.ReadKey(); > > > 

Отслеживать

задан 19 мар 2019 в 0:06

19 3 3 бронзовых знака

а переменнная i у вас разве не итерации считает?

19 мар 2019 в 0:25

да, она для итераций

19 мар 2019 в 0:33

если после while вывести i-1 , то это и будет число сделанных итераций

19 мар 2019 в 0:39

Вы хотите не выполняя кода оценить количество итераций произвольного цикла? Это сделать нельзя. Если есть какие-либо ограничения, которые позволят это сделать (например, цикл всегда имеет один и тот же вид), то укажите их в вопросе.

Как посчитать количество итераций в цикле с

и эти люди идут в программисты?

Такие вопросы проходит на информатике в школе классе наверное в седьмом, на бейсике или паскале

(10) победителя забанят и выдадут красную праздничную метку нику
(11)Переходящий колпачок.
(12) в 5 классе
А некоторые и в лего лет в 8 фигачат
Это будет параолимпиада.

(12) В седьмом уже системы счисления дают (у моей).
Кстати, на вопрос ребенка «Зачем мне это надо?» — я не смогла ничего ответить.
Мне пару раз понадобилось. Всего. А зачем детям.

(17) Это ты точно подметил. У нас ума именно дотуда. И даже больше.
(17) Вот это зря.

(18) Ну, мне интеграл тоже один раз пригодился. Когда лом в форме интеграла согнули, что бы грузових из грязи вытащить. 🙂

(17) Зря. Посмейся со всеми. По-доброму же.

(18) Затем что общество дальше идет к автоматизации всего и вся. Людей нужно готовить уметь понимать все это.

(18) Вышка тоже не каждый день нужна, обычной арифметики хватит.

Любая наука — гимнастика для ума.

(21) «Когда лом в форме интеграла согнули» с этого момента по-подробнее, пожалуйста)
(21) лом? согнули?
(21) Лом — великое изобретение человечества. Им даже грузовики из грязи вытаскивают.

(18) чтоб понимать, что десятичная система появилась не «от бога», а по вполне понятным причинам. Для того, чтоб понимать, как данные представляются внутри компьютера. и чтоб понимать, почему разный объем данных передается по этому вашему интернету при передачи слово «пять» голосом, картинки с пятеркой, текста «пять», и одной цифры. Ну и еще много чего. — алгебра логики, шифрование. понимание, почему кнопок у выключателя две, а уровней яркости у люстры, им управляемой — четыре.

(26) (25) как лом обычно гнут — общеизвестно (лом на плечи, руки на лом — и сапогом по яйтсам). но вот как согнуть его в форме интеграла.

(25) это чтобы типа жесткой сцепки получить с крючком с каждой стороны. Тросы, видимо, от натуги лопались, по этому решили зацепить тем, что хрен лопнешь.

Как посчитать количество итераций в цикле с

-Конечно, язык MQL4 отличается от C++, но в целом синтаксис и базовая часть идентичны, и

поскольку не было подходящей ветки, я запостился именно здесь.

Вопрос не простой:
есть несколько циклов — это число постоянное
один цикл вложен в другой и так далее по цепочке

собственно сам вопрос в прикрепленном текстовом файле — большое СПС админу и модератору этого форума за ограничения размера сообщений!

tema.txt (11.7 Кб, 164 просмотров)

Software Engineer
Участник клуба
Регистрация: 07.04.2007
Сообщений: 1,618

unsigned count = 0; while (. ) < while (. ) < while (. ) < ++count; >> > // здесь значение count будет равно количеству итераций по всем циклам

Файл ваш не смотрел.
Кстати, большое количество вложенных циклов, как правило больше одного — явно признак плохого алгоритма

Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария

Пользователь
Регистрация: 02.12.2009
Сообщений: 10
программисты вы или нет ?

вопрос состоит не в том, — хороший ли это алгоритм или плохой ?

дело в том, что перебрать все возможные варианты можно только так.

мне что нужно было .

— мне нужно было узнать: сколько максимум может быть итераций, чтобы посчитать примерное время проведения тестирования в секундах для одной такой итерации и потом умножить на общее количество итераций,

так что: к алгоритму просьба не придираться!

и высчитать все эти итерации я хотел не методом глупого инкриментирования (т.к. могут уйти часы..), а математическим методом перемножения

Регистрация: 31.05.2010
Сообщений: 13,543

Если я правильно Вас понял, Вам нужно вычислить время выполнения алгоритма для большох чисел.
Поступаем так: берём алгоритм с небольшим количеством итераций и заключаем его таймер следующим образом:

// Инициализация таймера замера времени выполнения алгоритма LARGE_INTEGER freq; QueryPerformanceFrequency(&freq); LARGE_INTEGER time1; QueryPerformanceCounter(&time1); // Что-то вычисляем в циклах . // Снятие показаний таймера LARGE_INTEGER time2; QueryPerformanceCounter(&time2); time2.QuadPart -= time1.QuadPart; double span = (double) time2.QuadPart / freq.QuadPart;

После того, как время будет измерено, делаем перерасчёт его на нужное число итераций.
Например: в 3-х циклах, по три итерации (это 3*3*3), мы получили время в 1мкс (1/27 и даст нам искомое время для всех итераций). Теперь, нам надо узнать время выполнения алгоритма для 10*10*10 итераций получаем формулу (10*10*10)*1/27.
Вот, примерно так.
Да, и ещё, если Вы используете циклы while со значениями итераций вычисляемые в самих циклах, то определить время их выполнения можно лишь приблизительно или экспериментально.

а вот, как сделать, чтобы можно было подсчитать с точностью до +/- 1 цикла всё это, учитывая первый неправильный старт каждого из циклов ?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *