Логическая схема
Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.
Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.
При запуске должен выдаваться статус «off», далее при вводе с клавиатуры статус должен меняться, но как бы я не пытался, ничего не получается.
Нужна логическая схема, именно с переменной power, чтобы менять её значение.
Сколько не пробовал, ничего не работает. Выше я привёл пример.
Помогите нубу, пожалуйста :)
Просто убери string перед power внутри main
Тип данных должен присваиваться переменной только один раз при её объявлении.
Странно! И Dev-C и Visual-C пропускают эту ошибку при компиляции!?
Заработало! Спасибо!
Интересно, это нубы сами додумываются до рекурсивного вызова
main()
? Или этому какой-то мудак учит? Подозреваю, что второе. Поскольку такой код появляется волнами.whit3g, вот ты сам додумался? Или где-то в и-нете вычитал? Ссылочкой не поделишься? Или тебя преподаватель (учитель информатики?) этому научил?
ЗЫ. whit3g, если это ты сам до этого додумался, то молодец. Это решение хоть и неправильно, и опасно, но демонстрирует нестандартность твоего мышления.
Я думаю большинство до этого сами додумываются. Я например сразу как узнал о возможности функции вызывать саму себя, задал себе два вопроса. 1) Можно ли вызывать из одной функции другую функцию. 2) Можно ли всё это делать с main. И сразу же начал опыты проводить. Ведь в уроках на сайтах, что я встречал, нигде не пишут чего нельзя делать (незнаю, как в бумажных учебниках). Только то, что можно, а дальше творческий полет фантазии. Пробовать и учиться на ошибках гораздо продуктивнее, чем на готовых правильных шаблонах, имхо. А желание рекурсии main объясняется простым алгоритмом — если выполнено такое то действие, начни всё с самого начала.
Тут есть два момента.
Во-первых, по стандарту С++11 функция
main()
не может быть использована внутри программы (ISO/IEC 14882:2011(E) пункт 3.6.1.3).Во-вторых, как следствие, рекурсивный вызов
main()
разрешают далеко не все компиляторы. Такой код непереносим.В-третьих, конечно, запрет на рекурсивный вызов
main()
можно легко обойти. Однако неограниченная рекурсия (без обратной раскрутки) обязательно приведёт к переполнению стека и аварийному завершению программы.Здесь нет ошибки. С точки зрения синтаксиса — всё правильно.
Блок определяет свою область видимости. (Блок — это фигурные скобки и то, что внутри них.) Здесь есть две области видимости: охватывающая (в данном случае это глобальная область видимости) и локальная (блок). Есть переменная
string power
, которая определена в охватывающей области видимости. В блоке определяется другая переменнаяstring power
, которая экранирует одноимённую переменную из охватывающей области видимости. При выходе из блока локальные переменные блока уничтожаются.Соответственно, в редакции от whit3g локальная переменная блока никакого влияния на одноимённую глобальную переменную не оказывает.