Форум программистов
 
О проблемах с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 09.01.2021, 14:27   #1
Kasatik
 
Регистрация: 19.01.2019
Сообщений: 5
Вопрос Помогите с вопросом для самопроверки.

Добрый день. Циклы. Застрял в самом начале, ступор.
Дан следующий цикл:
Код:
int j = 2;
for (int i = 2; i < 32; i = i * 2)
{
    while(i < j)
    {
        j = j * 2;
    }
    i = j - i;
}
Вопрос в этом задании: сколько раз в этом цикле будет выполняться строка i = j - i;?
Ответ: при данных условиях цикл for является бесконечным, поэтому строка будет выполняться бесконечное число раз. Комментарий - i будет бесконечно удовлетворять условию while(i < j), будет всегда выдавать true т.к. i всегда будет меньше j потому что j с каждым кругом цикла while будет только приращаться j = j * 2; а i оставаться равной 0. Но в один момент переменная j станет больше максимального значения Int32 и в непроверяемом контексте переполнение приводит к неявному взятию остатка по модулю 2^n. Число j станет отрицательным и выйдет из цикла while, а потом уже произойдет зацикливание for.
Вот что не понимаю: почему i всегда будет равно 0? Ведь во втором круге цикла for i=j-i=4-0=4, да и еще потом i=i*2=4*2=8? И пошло поехало. Сколько раз не считал, на пятом цикле i=32 и цикл останавливается....
Kasatik вне форума Ответить с цитированием
Старый 11.01.2021, 04:33   #2
Kasatik
 
Регистрация: 19.01.2019
Сообщений: 5
По умолчанию

Вопрос снят...
Kasatik вне форума Ответить с цитированием
Ответ
Купить рекламу на форуме 20000 рублей в месяц
Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите пожалуйста с вопросом Светлана1991 Помощь студентам 1 24.03.2015 19:41
Помогите разобраться с вопросом по СИ. Pug_from_Mordor Помощь студентам 8 08.01.2015 08:00
помогите с простым вопросом Тарабаровъ Microsoft Office Access 7 30.12.2009 20:12
помогите с вопросом darika Паскаль, Turbo Pascal, PascalABC.NET 11 07.07.2009 15:34
Помогите с вопросом на C/C++ dilik Общие вопросы C/C++ 1 07.01.2009 17:42


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS