![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
persalena |
|
|||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 1.12.2008 Репутация: нет Всего: нет |
Вот текст программы. Почему-то пропускается оператор printf(выделен)
и еще как бы сделать так, чтобы после выбора желаемого действия и выполнения соответствующей процедуры, снова можно было выбрать действие? Т. е. ,например, сначала создать стек, потом положить туда элемент, потом забрать. #include <conio.h> #include <stdio.h> #include <iostream.h> struct sstack { char elem[10]; int top; }; int create (sstack *a)//создать стек { a->top= -1; return 1; } int vstack (sstack *b, char *x)//положить элемент в стек { if(b->top!=9) { b->elem[b->top]=*x; b->top++; return 1; } return 0; } int izstacka (sstack *c, char *x)// взять элемент из стека { if(c->top!=-1) { *x=c->elem[c->top]; c->top--; return 1; } return 0; } int puststack (sstack *d)// проверить пуст ли стек { if (d->top==-1) return 1; return 0; } void sodergimoe(sstack *e)// вывести содержимое стека на экран { while(e->top!=-1) {printf("%c",e->elem[e->top]); (e->top)--; } } void main() { sstack mass; int k,l; char x,s; printf("choose variant: \n 1.create stack \n 2.instack \n 3.outstack \n 4.empty stack \n "); scanf("%i", &l); switch(l) {case 1: { k=create (&mass); printf("%i",k); break; } case 2: { printf("enter symbol"); scanf("%c", &x); k=vstack(&mass, &x); printf("%i", k); } break; case 3: { k=izstacka (&mass, &x); printf("%i ; element: %c", k,x); } break; case 4: { k=puststack (&mass); printf("%i",k); } break; } printf ("Jelaete vivesti soderjimoe na ekran?\n Y or N? "); scanf("%c",&s); if(s=='Y') sodergimoe(&mass); getch(); } Это сообщение отредактировал(а) persalena - 22.3.2009, 14:15 |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
persalena,отредактируйте пожалуйста свое сообщение, выделив код предназначенными для этого тегами.. а то читать неудобно .
вызываешь свое меню в цикле, пока не будет флаг выхода. только перед созданием нового, не забудь удалить старый ![]() Это сообщение отредактировал(а) mes - 22.3.2009, 14:20 |
|||
|
||||
zim22 |
|
|||
![]() depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
|
|||
|
||||
persalena |
|
|||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 1.12.2008 Репутация: нет Всего: нет |
std::cin.ignore(1); - а можно поподробне об этом действии?
|
|||
|
||||
zim22 |
|
|||
![]() depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
persalena, удаляем из потока символ перехода на новую строку. в противном случает функция scanf скушает из потока символ, следующий за введённым вами ранее. А вы вводите так: например 1 и Enter нажимаете. Enter тоже заносится в поток. но неявно. поэтому его и нужно изымать.
|
|||
|
||||
vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 8 Всего: 56 |
||||
|
||||
persalena |
|
|||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 1.12.2008 Репутация: нет Всего: нет |
ну вот я переделала. Теперь вылетает
![]()
|
|||
|
||||
zim22 |
|
|||
![]() depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
vinter, не буду
![]() но символ из потока всё-равно удалять надо. иначе scanf не приглашает пользователя ввести число. а втихомолку присвает себе значение '\10' |
|||
|
||||
persalena |
|
|||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 1.12.2008 Репутация: нет Всего: нет |
ну посмотрите пожалуйста программку...
|
|||
|
||||
vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 8 Всего: 56 |
||||
|
||||
zim22 |
|
|||
![]() depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
vinter, спасибо, не знал
![]() |
|||
|
||||
vinick |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 285 Регистрация: 9.6.2005 Репутация: нет Всего: 22 |
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |