在我用c ++编写的程序中显示错误消息

时间:2015-07-31 14:13:09

标签: c++

新手编程。

想要添加一条说错误输入的消息.. 但不知道该怎么做。

该程序有效但希望添加错误消息,以便用户无法按错按钮

尝试像while循环中的if语句一样

if (input != "A" && input != "a" && input != "S" && input != "s")
cout << "not valid options << endl;

并且请告诉我是否可以以任何方式改进代码,总是很好知道我是否以良好的方式做事。

这是我的程序代码

#include <cmath>
#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include <time.h>
#include <string>
using namespace std;

int main()
{
    locale swedish("swedish");                          // tar in svenska tecken
    locale::global(swedish);


    int marker = 100;                                       // marker som man börjar med 
    int num1, num2, num3;                                   // numren som ska slumpas senare 
    string input;                                           

    cout << "Välkommen till mitt slumptalspel!!"<< endl ;
    cout << " Detta spel går ut på att man ska få mer än 450" << endl;
    cout << "så får man mer marker och får man mindre än 450 så förlorar man marker" << endl;
    cout << " får man mer än 200 marker så vinner man !!" << endl;
    cout << " och tar markerna slut så har man förlorat" << endl;



    while (input != "A" && input != "a")
    {

        cout << "Du har  " << marker << " marker.  spela tryck [S] avsluta tryck [A]"<< endl;
        cin >>input;                                                            // här bestämmer sig spelaren för om han vill spela eller inte med s eller a
        if (input == "S" || input == "s")
        {

            num1 = rand() % 350 + 1;                                                        // här slumpas talen ut
            num2 = rand() % 350 + 1;
            num3 = rand() % 350 + 1;
            cout << "[" << num1 << "][" << num2 << "][" << num3 << "]" << endl;         // här skrivs num1 till 3 ut vad dom får för värden
            srand(time(0));


            if (num1 + num2 + num3 >= 450)                                              // om väret tillsammans blir mer än 450 
            {
                marker += 12;                                                           // lägg till 12 marker
                cout << "du vann 12 marker =) " << endl;
            }


            else
            {
                cout << " Du förlorade 50 marker" << endl;                                  // annars ta bort 50 marker

                marker -= 50;
            }

            if (marker <= 0)                                                                // om markerna är 0 eller mindre 
            {                                                                                   // så är spelet slut
                cout << " Spelet är slut du har inga marker kvar" << endl;
                return 0;
            }

            if (marker >= 200 )
            {
                cout << " du vann GRATTIS!!" << endl;                       // om man får 200 eller mer marker så vinner man och spelet avslutas sedan
                return 0;
            }


            }




    }
    cout << "Spelet avslutas " << endl;                                                                 // om man avbryter med A så avslutas det så här med detta meddelande
    return 0;
}

尝试过切换,因为有人在这里对我说,那么问题是它永远不会停止,当marker为0或更小或200时它应该停止但是它会发生,

我做了像这样的代码

    #include "stdafx.h"
#include <cmath>
#include <iostream>
#include <cstdlib>
#include <time.h>
#include <string>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
    locale swedish("swedish");                          // tar in svenska tecken
    locale::global(swedish);


    int marker = 100;                                       // marker som man börjar med 
    int num1, num2, num3;                                   // numren som ska slumpas senare 
    char input;
    int menu();

    cout << "Välkommen till mitt slumptalspel!!" << endl;
    cout << " Detta spel går ut på att man ska få mer än 450" << endl;
    cout << "så får man mer marker och får man mindre än 450 så förlorar man marker" << endl;
    cout << " får man mer än 200 marker så vinner man !!" << endl;
    cout << " och tar markerna slut så har man förlorat" << endl;



    do
    {


        cout << "Du har  " << marker << " marker.  spela tryck [S] avsluta tryck [A]" << endl;
        cin >> input;










        switch (input)
        {


        case 'A':

            cout << " spelet avslutas" << endl;


            return 0;



        case 'S':


            num1 = rand() % 350 + 1;                                                        // här slumpas talen ut
            num2 = rand() % 350 + 1;
            num3 = rand() % 350 + 1;
            cout << "[" << num1 << "][" << num2 << "][" << num3 << "]" << endl;         // här skrivs num1 till 3 ut vad dom får för värden
            srand(time(0));


            if (num1 + num2 + num3 >= 450)                                              // om väret tillsammans blir mer än 450 
            {
                marker += 12;                                                           // lägg till 12 marker
                cout << "du vann 12 marker =) " << endl;
                break;
            }


            else
            {
                cout << " Du förlorade 50 marker" << endl;                                  // annars ta bort 50 marker

                marker -= 50;
                break;
            }

            if (marker <= 0)                                                                // om markerna är 0 eller mindre 
            {                                                                                   // så är spelet slut
                cout << " Spelet är slut du har inga marker kvar" << endl;
                return 0;

            }

            if (marker >= 200)
            {
                cout << " du vann GRATTIS!!" << endl;                       // om man får 200 eller mer marker så vinner man och spelet avslutas sedan


                return 0;
            }






        default:

            cout << " nope inget giltigt val " << endl;                 // Om man väljer ett alternativ som inte finns så kommer detta meddelande fram

            break;



        }
    } while (input != 'q'  )

        ;

}

2 个答案:

答案 0 :(得分:1)

您可以使用switch语句使其更好,并且在default情况下,您可以打印所需的输出:

switch(input)
{
case 'A':
 //Do something and break.
case 'a':
 //Do something and break.
.
.
.
default:
cout<<"not valid options" << endl;
}

答案 1 :(得分:0)

我修好了,

#include "stdafx.h"
#include <cmath>
#include <iostream>
#include <cstdlib>
#include <time.h>
#include <string>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
    locale swedish("swedish");                          // tar in svenska tecken
    locale::global(swedish);


    int marker = 100;                                       // marker som man börjar med 
    int num1, num2, num3;                                   // numren som ska slumpas senare 
    char input;                                         


    cout << "Välkommen till mitt slumptalspel!!" << endl;
    cout << " Detta spel går ut på att man ska få mer än 450" << endl;
    cout << "så får man mer marker och får man mindre än 450 så förlorar man marker" << endl;
    cout << " får man mer än 200 marker så vinner man !!" << endl;
    cout << " och tar markerna slut så har man förlorat" << endl;
    cout << " tre tal kommer att slumpas och varje tal kan vara mellan 1 och 350" << endl;
    cout << " LYCKA TILL!!!" << endl;




    do
    {
        if (marker <= 0)                                                                // om markerna är 0 eller mindre 
        {                                                                                   // så är spelet slut
            cout << " Spelet är slut du har inga marker kvar" << endl;
            return 0;

        }

        if (marker >= 200)
        {
            cout << " du vann GRATTIS!!" << endl;                       // om man får 200 eller mer marker så vinner man och spelet avslutas sedan


            return 0;
        }






        cout << "Du har  " << marker << " marker.  spela tryck [S] avsluta tryck [A]" << endl;
        cin >> input;










        switch (input)
        {


        case 'A':

            cout << " spelet avslutas" << endl;


            return 0;

        case 'a':

            cout << " spelet avslutas" << endl;


            return 0;

        case 'S':


            num1 = rand() % 350 + 1;                                                        // här slumpas talen ut
            num2 = rand() % 350 + 1;
            num3 = rand() % 350 + 1;
            cout << "[" << num1 << "][" << num2 << "][" << num3 << "]" << endl;         // här skrivs num1 till 3 ut vad dom får för värden
            srand(time(0));


            if (num1 + num2 + num3 >= 450)                                              // om väret tillsammans blir mer än 450 
            {
                marker += 12;                                                           // lägg till 12 marker
                cout << "du vann 12 marker =) " << endl;
                break;


            }
            else
            {



                cout << " Du förlorade 50 marker" << endl;                                  // annars ta bort 50 marker

                marker -= 50;
                break;

            }

        case 's':


            num1 = rand() % 350 + 1;                                                        // här slumpas talen ut
            num2 = rand() % 350 + 1;
            num3 = rand() % 350 + 1;
            cout << "[" << num1 << "][" << num2 << "][" << num3 << "]" << endl;         // här skrivs num1 till 3 ut vad dom får för värden
            srand(time(0));


            if (num1 + num2 + num3 >= 450)                                              // om väret tillsammans blir mer än 450 
            {
                marker += 12;                                                           // lägg till 12 marker
                cout << "du vann 12 marker =) " << endl;
                break;


            }
            else
            {



                cout << " Du förlorade 50 marker" << endl;                                  // annars ta bort 50 marker

                marker -= 50;
                break;

            }





        default:

            cout << " nope inget giltigt val försök igen " << endl;                 // Om man väljer ett alternativ som inte finns så kommer detta meddelande fram

            break;



                }
            } while (input != 'QK')

                ;



        }