2015-12-21 67 views
-6

主: https://github.com/MJGHD/Stacks./blob/master/main.cpp布尔值不变? [C++]

//Imports needed libraries, headers and defines the size of the question and answer variables 

#include <iostream> 
#include <cstdlib> 
#include <string> 
#include "lib/script.h" 
#define STRING_SIZE 1000 

//Initalises the temporary dummy variable and the question + answer variables 
std::string questions[STRING_SIZE]; 
std::string answers[STRING_SIZE]; 

//Initalises showMainMenu function 
void showMainMenu(); 


int main() { 
    //Shows the main menu 
    showMainMenu(); 
    return EXIT_SUCCESS; 
} 

void showMainMenu() { 
    std::cout << "Welcome to Stack.! To get started, type in the number from 1-4 that you desire!\n\n"; 
    std::cout << "1. Create new stack\n"; 
    std::cout << "2. Open existing stack\n"; 
    std::cout << "3. Export existing stack\n"; 
    std::cout << "4. Options\n\n"; 
    std::cout << ""; 
    //Assigns the user input to the dummy variable initalised earlier 
    std::cin >> dummy.usrInput; 
    //Reads the usrInput and figures out what the user wanted 
    switch(dummy.usrInput){ 
     case 1: 
      createNewStack(); 
     case 2: 
      openExistingStack(); 
     case 3: 
      exportExistingStack(); 
     case 4: 
      showOptions(); 
     default: 
      std::cout << "That was not a valid input. Press enter to continue... "; 
      std::cin.get(); 
      clearScreen(); 
    } 
} 

脚本: https://github.com/MJGHD/Stacks./blob/master/lib/script.h

#include <iostream> 
#include <cstdlib> 
#include <string> 
#include <cstdio> 

struct usrOptions{ 
    bool autosave, randomisedCards; 
    std::string autosaveOn, randomOn; 
}option; 

struct dummies{ 
    int usrInput; 
}dummy; 

inline void clearScreen(){ 
    #ifdef _WIN32 
     std::system("cls"); 
    #else 
     std::system ("clear"); 
    #endif 
} 

inline void saveUserStack(){ 

} 

void createNewStack(){ 

} 

void openExistingStack(){ 

} 

void exportExistingStack(){ 

} 

void showOptions(){ 
    clearScreen(); 
    switch(option.autosave){ 
     case 0: 
      option.autosaveOn = "off"; 
     case 1: 
      option.autosaveOn = "on"; 
    } 
    switch(option.randomisedCards){ 
     case 0: 
      option.randomOn = "off"; 
     case 1: 
      option.randomOn = "on"; 
    } 

    std::cout << "1. Autosave is currently " << option.autosaveOn; 
    std::cout << "\n2. Randomised cards are currently " << option.randomOn; 
    std::cout << "\n\nWhich option do you wish to change (please enter in the form of an integer): "; 
    std::cin >> dummy.usrInput; 
    switch(dummy.usrInput){ 
     case 1: 
      std::cout << "Are you sure you wish to change the option for autosave? 0 = no 1 = yes: "; 
      std::cin >> dummy.usrInput; 
      switch(dummy.usrInput){ 
       case 0: 
        clearScreen(); 
        showOptions(); 
       default: 
        switch(option.autosave){ 
         case 0: 
          option.autosave = 1; 
         default: 
          option.autosave = 0; 
        } 
        showOptions(); 
       } 
     case 2: 
      std::cout << "Are you sure you wish to change the option for randomised cards? 0 = no 1 = yes: "; 
      std::cin >> dummy.usrInput; 
      switch(dummy.usrInput){ 
       case 0: 
        showOptions(); 
       default: 
        switch(option.randomisedCards){ 
         case 0: 
          option.randomisedCards = 1; 
         case 1: 
          option.randomisedCards = 0; 
        } 
        showOptions(); 
      } 
     default: 
      showOptions(); 
    }  
    std::cout << "Autosave is currently " << option.autosaveOn; 
} 

出于某种原因,当我确认修改的选项,该值不发生变化,或至少输出保持不变。

+2

欢迎来到StackOverflow!请注意,问题应该是独立的(即:它们可能包含外部资源,但它们应该在没有它们的情况下进行回答)。你可以尝试提供[mcve]。 –

+2

请提取一个最简单的例子,然后在这里发布内联。现在,您的问题是无关紧要的,请阅读发布指南了解更多信息。此外,标签不应该在标题中,这是因为它们有独立的位置。 –

+1

“当我验证选项的更改”是什么意思?你在说什么选择?你怎么改变它们?你如何验证这些变化? –

回答

0

看着你的问题,看起来你忘记了为每个交换机案例添加一个中断。

请看看下面的MSDN文章使用开关 https://msdn.microsoft.com/en-us/library/66k51h7a.aspx

如果您正在使用VB.NET,你可以使用case语句是自成一体。 C需要中断,否则即使交换机不匹配,逻辑也会转入下一个语句。