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

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

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

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

28.03.2010, 01:42. Просмотров 540. Ответов 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++):

Ошибка в стеке! - C++
template<typename T> class Stack { private: struct Stek { T key; Stek* next; };

Структура в стеке - C++
Я наверное уже всех задолбал со своим стеком, но всё же мне еще нужна помощь)) Код, который ниже должен запрашивать у пользователя ввод...

Выделение памяти на стеке - C++
Добрый день. Часто в учебниках и на форуме я встречал такое выражение как "переменная создаётся в (или на) стеке". Мне непонятно, что это...

Динамические массивы на стеке - C++
Почему не придумали ещё язык программирования, который в точности повторял бы С++, но содержал дополнительно всего одну функцию "выделение...

Выполнение в стеке кода - C++
Есть такой код: void Demo(int(*_printf) (const char *, ...)) { _printf("Hello, Word!\n"); return; } int WriteMe(void...

Перетасовать элементы в стеке - C++
Перетасовать элементы в стеке. Стек я сам пишу в коде. нужна функция которая рандомно тасует элементы стека.

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
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
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
28.03.2010, 03:10 #4
зачем его очищать, стек очень тонкая натура, малейшая его неправильная модификация приведет к моментальному краху программы
что вы хотите?
Nick Alte
Эксперт С++
1636 / 1008 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
28.03.2010, 11:39 #5
На всякий случай напомню, что при выходе из функции со стека автоматически вычищается всё, что она там назанимала.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.03.2010, 11:39
Привет! Вот еще темы с ответами:

Размещаются ли члены в стеке? - C++
Например, class TLongInteger { //------------------------------------------------------------------------------------------------- ...

Поиск элемента в стеке - C++
Здравствуйте,помогите,пожалуйста реализовать поиск элемента. Нужно вывести количество дней, когда дул северный ветер и температура была...

Выполнение кода в стеке - C++
Доброго времени суток! Не могу разобратся в коде void Demo(int (*_printf) (const char *,...) ) { _printf("Hello, Word!\n"); ...

Задача на MINIMUM в стеке - C++
что бы не объяснять долго условие, вот задача http://www.e-olimp.com.ua/problems/693 Вот как я вижу этот алгоритм действий:необходимо...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
28.03.2010, 11:39
Ответ Создать тему
Опции темы

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