у меня есть такой цикл:
a=4;
for (i=1;i<=2;i++) a=a*i-1; a+=2;
вписываю его в билдер, получается что переменная "а" в конце цикла =7, пытаюсь разобрать цикл:
a=4; for (i=1;i<=2;i++) a=a*i ; -> a=8, i=3 (тут все понятно)
a=4; for (i=1;i<=2;i++) a=a*i-1 -> a=5 (!!!!), i=3; ( вот как тут а=5 получается? Начальное значение а - 4, потом переменная i у нас из цикла получается 3, но потом с какого перепуга получается, что а=5? ведь а = 4*3-1=11)
a=4; for (i=1;i<=2;i++) a=a*i-1; a+=2; -> a=7; i=3 (тут по действиям понятно все)
Другие языки программирования и технологии
C++ учусь в КПИ, первый курс, 8-го экзамен, сижу разбираю билеты и кое что не могу понять, ну хоть убейте меня, идиота.
Первый случай: а1 = 4 (а) х 1 (и) = 4 далее а2 = 4 (а1 ) х 2 (и) = 8.
Все правильно, ведь у вас цикл 2 раза работает. Второй случай:
а1 = 4 (а) х 1 (и) - 1 = 3 далее а2 = 3 (а1 ) х 2 (и) - 1 = 5. Внимательнее с кодом.
Третий случай: результат предыдущего а3 = 5 (а2) + 2 = 7.
Все правильно, ведь у вас цикл 2 раза работает. Второй случай:
а1 = 4 (а) х 1 (и) - 1 = 3 далее а2 = 3 (а1 ) х 2 (и) - 1 = 5. Внимательнее с кодом.
Третий случай: результат предыдущего а3 = 5 (а2) + 2 = 7.
Шахром Курбонов
спасибо большое))
А ты не находишь, что если от 8 три раза отнять 1, то получится ВНЕЗАПНО 5? А если после этого еще и 2 добавить - то будет СЕМЬ? Не очень понятно, что тебе непонятно, даже методика дебаггинга у тебя вполне кошерная, а вот с интерпретацией результатов что-то явно не то...
Чего тут непонятного. В цикле всего две итерации. При первом прохождении цикла переменная a = 3, потому-что 4 - 1 = 3. При втором прохождение цикла эта тройка умножается на два, после чего из результата вычитается единица. Пять получается! Как не крути)
a=4;for (i=1;i<=2;i++)
a=a*i-1;
a+=2; //А это уже не в цикле
a=a*i-1;
a+=2; //А это уже не в цикле
В цикле выполняется только a=a*i-1; Именно поэтому надо тело любого цикла и ветви любой альтернативы включать в операторные скобки (на c/c++ фигурные, на паскале begin end). Тогда как бы ни замылился глаз, всё равно в долю секунды определишь, что выполняется многократно в цикле, а что после цикла и что входит в какую ветвь альтернативы, а что выполняется без условий уже после всей альтернативы.
Похожие вопросы
- Всем привет. Никак не могу понять динамически массивы в C++.
- Не могу понять в чем дело Выдает вот эту ошибку: C:\Program Files (x86)\Dev-Cpp\Lang\collect2.exe[Error] ld returned 1 e
- c++ не могу понять в чем ошибка в небольшом примере
- Здравствуйте. Никак не могу понять как нужно работать в Visual C++ 2010. Я только начинающий. Делаю следующее. Создаю
- Зачем нужны классы в c++? Никак не могу понять... Что такое private, public зачем они нужны и т. д?
- Не могу понять в сем ошибка C++
- C# трудно выучить как первый язык и основной? Имеет смысл? или джава лучше?
- помогите пожалуйста, не могу понять что за ошибка и как ее решить (((
- Помогите. Не могу понять как работает поиск максимального элемента массива!!
- Не могу понять где элемент массива?