Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.11.2019, 10:38   #1
SoraNoZer0
 
Регистрация: 02.11.2019
Сообщений: 9
По умолчанию Программа выходит,когда не нужно

Начнём думаю с того что я школьник,которому взбрело в голову написать текстовую игру
Тем более,впервые залез на С++
Ещё остались?Хорошо,едем дальше.Я задал вопрос,где по звдумке при ответе (1) происходят другие действия,(а они работают,так что их не трогаем)
А при ответе (2) игра выводит меню
Но при ответе 2 игра выходит,и я не знаю что делать...
А вот собственно и сам код этого момента:



Код:
	;if(yn==2){goto menu;}
	menu:
	       cout<<"MENU\n	1-Fight\n	2-Stats\n	3-exit\n";
		   cin>>mn;
		   	if (mn==1){goto ftturn1;}
				else if(mn==2){goto stat;}
					else if(mn==3){exit(1);};
______________________
Форматируйте код и используйте тег [CODE] (кнопка [CODE] в форме сообщения) при вставке кода на форум. Подробнее в FAQ
Изображения
Тип файла: jpg devcpp_9nSs4QYT3A.jpg (58.9 Кб, 53 просмотров)

Последний раз редактировалось Вадим Мошев; 02.11.2019 в 12:05.
SoraNoZer0 вне форума Ответить с цитированием
Старый 02.11.2019, 11:20   #2
Алексей1153
фрилансер
Форумчанин
 
Регистрация: 11.10.2019
Сообщений: 960
По умолчанию

SoraNoZer0, лучше обходиться без goto, в C++ это всегда возможно. Константы лучше именовать

Код:
#include <iostream>
int main()
{
    while(1)
    {
        enum class options:int
        {
            none,
            fight,
            stats,
            exit,
        };
        
        options mn=options::none;
        
        std::cout<<"MENU\n "
        <<(int)options::fight<<"-Fight\n "
        <<(int)options::stats<<"-Stats\n "
        <<(int)options::exit<<"-exit\n"
        <<std::endl;
        
        {
            int i=0;
            std::cin>>i;
            mn=options(i);
        }
        
        switch(mn)
        {
            case options::fight:
            {
                std::cout<<"Fighting"<<std::endl;
            }break;
            
            case options::stats:
            {
                std::cout<<"Statistics"<<std::endl;
            }break;
            
            case options::exit:
            {
                std::cout<<"Game over"<<std::endl;
                return 0;            
            }break;
        }
    }

    return 0;
}
Алексей1153 вне форума Ответить с цитированием
Старый 02.11.2019, 11:37   #3
SoraNoZer0
 
Регистрация: 02.11.2019
Сообщений: 9
По умолчанию

Алексей,а можно уже с goto доделать?
Просто я уже по сути всё сделал,но это единственная проблема
SoraNoZer0 вне форума Ответить с цитированием
Старый 02.11.2019, 11:43   #4
Алексей1153
фрилансер
Форумчанин
 
Регистрация: 11.10.2019
Сообщений: 960
По умолчанию

SoraNoZer0, но зачем ? о_О В нужных case'ах вызывай функцию текущего действия. Это же не ассемблер и не бейсик
Алексей1153 вне форума Ответить с цитированием
Старый 02.11.2019, 11:46   #5
SoraNoZer0
 
Регистрация: 02.11.2019
Сообщений: 9
По умолчанию

[QUOTE=SoraNoZer0;1799801]
Тем более,впервые залез на С++



Я наверное покажусь сильно тупым но всё же,я нихрена не понял
SoraNoZer0 вне форума Ответить с цитированием
Старый 02.11.2019, 12:10   #6
Алексей1153
фрилансер
Форумчанин
 
Регистрация: 11.10.2019
Сообщений: 960
По умолчанию

Цитата:
Сообщение от SoraNoZer0 Посмотреть сообщение
которому взбрело в голову написать текстовую игру
я так понимаю, это твоя инициатива, что тебе это интересно, а не какое-то идиотское задание препода?
А коли так, садишься за интернет и учишь основы C++, без них нет смысла продолжать.

Прицепи весь код, если будет время, я гляну. Но не обещаю
Алексей1153 вне форума Ответить с цитированием
Старый 02.11.2019, 12:57   #7
SoraNoZer0
 
Регистрация: 02.11.2019
Сообщений: 9
По умолчанию

Хрен его знает,чё произошло,я часть эту не трогал,писал код дальше,тестовый запуск сделал—и эта часть стала нормально работать
SoraNoZer0 вне форума Ответить с цитированием
Старый 02.11.2019, 16:01   #8
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 734
По умолчанию

Цитата:
Сообщение от SoraNoZer0 Посмотреть сообщение
Код:
;if(yn==2){goto menu;}
- начали с точки с запятой, оригинально, это ошибка. Ссылки goto не рекомендуют, но вроде как можно использовать.
Напишу программу на C++ и Asm для AVR. Черчение: sergeisky@yahoo.com.
Cuprum5 вне форума Ответить с цитированием
Старый 02.11.2019, 22:07   #9
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,545
По умолчанию

Думаю - ничего страшного, будет пустой оператор, компилятор его выкинет.
digitalis вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите пожалуйста . Нужно сделать проверку (выходит ли введенный код в массив или нет, если нет то нужно заново запросить ввести код) Smile189 Общие вопросы Delphi 0 23.10.2016 20:56
Программа не выходит после выполнения (Язык С) RaccoonRocket Помощь студентам 2 08.02.2016 14:13
Программа на Delphi. Почему выходит ошибка pakusya Помощь студентам 2 11.05.2013 13:38
Когда нужно использовать ООП? leklerk Общие вопросы по программированию, компьютерный форум 49 01.06.2012 09:09
Почему когда integer cтановиться =100001,выходит ошибка Дима я Общие вопросы Delphi 8 21.12.2009 11:33