Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Творец
Сообщений: n/a
#1

Вопрос о стеке - C++

28.03.2010, 01:42. Просмотров 516. Ответов 4
Метки нет (Все метки)

На сколько я знаю, подпрограмма которая выполняется рекурсивно, кидает в стек копию своих параметров, и так пока стек не переполнится...
У меня такая штука:

C++
1
2
3
4
5
6
7
8
9
10
11
12
void f(int i){
char num;
do{
...
num=getch();
switch(num){
     case 'A':
          f(i+1);
          break;
     ...
}while(num!='Q');
}


Короче подпрограмма через свич вызывает сама себя, от нажатия кнопки клавы. И если 5 раз выполнять например case 'A', а потом нажать Q, то цикл не прекратится, чтобы это случилось, надо будет нажать Q еще 4 раза...

- Что надо сделать чтобы цикл всегда завершался при 1 нажатии Q ???

Добавлено через 18 минут
Может можно как-то стек очистить? Или переменную num?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.03.2010, 01:42     Вопрос о стеке
Посмотрите здесь:

Выполнение кода в стеке C++
Задача на MINIMUM в стеке C++
C++ Куда помещается элемент в стеке?
C++ Структура в стеке
C++ Выделение памяти на стеке
Динамические массивы на стеке C++
C++ Пронумерировать стек. Ошыбка в стеке
Структура в стеке. Не работает ф-ия renumber C++
C++ Перетасовать элементы в стеке
C++ Размещаются ли члены в стеке?
Выполнение в стеке кода C++
Квиксорт на стеке отложенных заданий C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
28.03.2010, 01:44     Вопрос о стеке #2
возможно передавать в качестве параметра указатель или ссылку на буль
C++
1
2
3
4
5
6
7
8
9
void f(int i, bool &bIsEnd){
if( false == bIsEnd ){
  num=getch();
  ....
  if( num=='Q'){
    bIsEnd = true;
    return;
...
}
вообщем вам полюбому понадобится какаята глобальная переменная, желательно в таком виде

+
не задумывайтесь на таком уровне о стеке, он есть, но не на уровне программы с++))
Творец
Сообщений: n/a
28.03.2010, 01:57     Вопрос о стеке #3
Спасибо огромное) !!!
С этим я разобрался, а все же, как можно очистить стек в C/C++ ???
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
28.03.2010, 03:10     Вопрос о стеке #4
зачем его очищать, стек очень тонкая натура, малейшая его неправильная модификация приведет к моментальному краху программы
что вы хотите?
Nick Alte
Эксперт С++
1599 / 991 / 117
Регистрация: 27.09.2009
Сообщений: 1,911
Завершенные тесты: 1
28.03.2010, 11:39     Вопрос о стеке #5
На всякий случай напомню, что при выходе из функции со стека автоматически вычищается всё, что она там назанимала.
Yandex
Объявления
28.03.2010, 11:39     Вопрос о стеке
Ответ Создать тему
Опции темы

Текущее время: 02:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru