Avatar billede presti Nybegynder
13. april 2004 - 15:46 Der er 6 kommentarer og
1 løsning

Validering af valg

Hej jeg har følgende kode:

int main()
{

  int valg;        // Variabel
  int slut = 0;    // Variabel

    do            // Do-while løkke
      {
      system("cls");
      cout << ".....................................(Kalaha)..................................." <<endl;  // overskrift
      cout << "1. Start" << endl << "2. Regler" << endl << "3. Slut" << endl << endl<< "Valg: ";  //menuen

            if (valg == 1 || 2 || 3)      // validering af svaret
                {
                cin >> valg;                // indtastning af valget
                }
                else
                    {                      // hvis ikke, så hopper den ud

                    }

                      switch(valg)
                                  {
                                  case 1: start_spil();            // hvis der tastes 1, så startes spillet
                                  break;
                                  case 2: regler();                // hvis der tastes 2, så vises reglerne
                                  break;
                                  case 3: slut = 1;                // hvis der tastes 3, så lukker spillet
                                  break;
                                  }
      }
      while(!slut);    // Slut på løkke
}

Efter man har skrevet 1 2 eller 3 ved menu punktet, så hopper den videre i programmet. Men den flipper ud hvis man skriver et bogstav. Hvordan gør jeg såen så den ikke gør dette???

mvh. Presti
Avatar billede hepou Nybegynder
13. april 2004 - 15:52 #1
Prøv at kigge lidt på http://www.eksperten.dk/spm/488702 og prøv med en af deres metoder til at validere

:)
Avatar billede hepou Nybegynder
13. april 2004 - 15:53 #2
øh, glem hvad jeg skrev :) Jeg glemte vist at læse koden igennem. Du bruger consol de bruger GUI ;)

Undskylder :)
Avatar billede presti Nybegynder
13. april 2004 - 15:54 #3
hehe... np. Men ved du hvordan jeg gør så?
Avatar billede hepou Nybegynder
13. april 2004 - 16:12 #4
kan du ikke indsætte en

default: cout << "Du skal indtaste et tal mellem 1 og 3";
break;

til sidst i din switch(valg)?
Avatar billede bertelbrander Novice
13. april 2004 - 19:56 #5
if (valg == 1 || 2 || 3)

Betyder det samme som

if((valg == 1) || (2 != 0) || (3 != 0))

Hvilket altid er tilfældet (to er ikke det samme som 0), det du ønsker er:

if(valg == 1 || valg == 2 || valg == 3)

Men du skal starte med at sætte valg til noget, så brugeren altid starter med at vælge noget.
Jeg vill nok lave noget i stil med:

do            // Do-while løkke
{
  system("cls");
  cout << ".....................................(Kalaha)..................................." <<endl;  // overskrift
      cout << "1. Start" << endl << "2. Regler" << endl << "3. Slut" << endl << endl<< "Valg: ";  //menuen
cin >> valg;       
switch(valg)
{
case 1: start_spil();            // hvis der tastes 1, så startes spillet
  break;
case 2: regler();                // hvis der tastes 2, så vises reglerne
  break;
case 3: slut = 1;                // hvis der tastes 3, så lukker spillet
  break;
  default:
    cout << "Ulovlig valg!" << endl;
}
}
while(!slut);    // Slut på løkke

Og husk den første gyldne regel for kommentarer:
Lav ikke kommentarer for det indlysende.
Avatar billede andos Nybegynder
18. april 2004 - 00:20 #6
Ville noget lignende som det her ikke virke? (jeg er C++ n00b så forvent ikke det store):
Den vil her spørge om et nummer indtil det er et gyldigt et...
Du kunne evt. indsætte en fejlbesked eller sådan noget.



int valg=0;

while( valg > 0 || valg < 4  )      //Den forlader ikke while() før nummeret indtastet er gyldigt
{
cin >> valg;
}

                    switch(valg)
                                  {
                                  case 1: start_spil();            // hvis der tastes 1, så startes spillet
                                  break;
                                  case 2: regler();                // hvis der tastes 2, så vises reglerne
                                  break;
                                  case 3: slut = 1;                // hvis der tastes 3, så lukker spillet
                                  break;
                                  }
Avatar billede presti Nybegynder
18. april 2004 - 10:39 #7
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester