Spatie, Enter, -, + filteren (c++)

Status
Niet open voor verdere reacties.

BugMenOT2

Gebruiker
Lid geworden
23 nov 2006
Berichten
296
Hallo,

Weet iemand hoe je in c++ in een if() lus een spatie , enter, +, - kunt filteren?

vb:
Code:
            // ongeldige keuzes inschakelen
            if (count < 1 || count > 6) {
               cout << endl << "\nOngeldige keuze!" << endl;
               return 0;

            }
            else {

dit lukt niet

Code:
            // ongeldige keuzes inschakelen      // zonder aanhalingstekens doet ie het ook niet
            if (count < 1 || count > 6 || count == " " || count == "-" || count == "+") {
               cout << endl << "\nOngeldige keuze!" << endl;
               return 0;

            }
            else {

Kan iemand me hierbij helpen dit proberen te filteren?

groetjes,

Benny
 
Hallo,

Weet iemand hoe je in c++ in een if() lus een spatie , enter, +, - kunt filteren?

vb:
Code:
            // ongeldige keuzes inschakelen
            if (count < 1 || count > 6) {
               cout << endl << "\nOngeldige keuze!" << endl;
               return 0;

            }
            else {

dit lukt niet

Code:
            // ongeldige keuzes inschakelen      // zonder aanhalingstekens doet ie het ook niet
            if (count < 1 || count > 6 || count == " " || count == "-" || count == "+") {
               cout << endl << "\nOngeldige keuze!" << endl;
               return 0;

            }
            else {

Kan iemand me hierbij helpen dit proberen te filteren?

groetjes,

Benny

Tekst tussen dubbele aanghalingstekens in C/C++ stelt een constante char-array voor wiens pointer op die plek geplaatst wordt. Als count een char of int of iets is, zou je enkele aanhalingstekens moeten gebruiken om de ascii waarde van het karakter te vergelijken.

met andere woorden, probeer enkele aanhalingstekens in je if statement
 
Code:
#include <iostream>

using namespace std;

void main()
{
     // variabelen declareren
     int getal1;
     int getal2;
     int count;
     int counter;
     int exit;


            // keuzemenu
            cout << "\n Maak een keuze";
            cout << "\n";
            cout << "\n 1. Optellen";
            cout << "\n 2. Aftrekken";
            cout << "\n 3. Vermenigvuldigen";
            cout << "\n 4. delen";
            cout << "\n 5. Modulo (rest van deling)";
            cout << "\n";
            cout << "\n 6. Exit" << endl;
            cout << "\n Keuze: ";
            cin >> count;

            // ongeldige keuzes inschakelen
            if (count < 1 || count > 6 || count == '+' || count == ' ' || count == '-') {
               cout << endl << "\nOngeldige keuze!" << endl;
               return 0;
            }
            else {

     // gekozen waarde opzoeken en uitvoeren met switch()
     // 1 optellen, 2 aftrekken, 3 vermenigvul, 4 delen, 5 modulo
     switch (count) {
            case 1 : {
                 cout << endl << "Optellen" << endl;
                 cout << "\nGeef een getal op : ";
                 cin >> getal1;
                 cout << "\nGeef een getal op : ";
                 cin >> getal2;
                 counter = getal1 + getal2;
                 cout << endl << "Uitkomst: " << counter << endl;
                 }
                 break;
            case 2 : {
                 cout << endl << "Aftrekken" << endl;
                 cout << "\nGeef een getal op : ";
                 cin >> getal1;
                 cout << "\nGeef een getal op : ";
                 cin >> getal2;
                 counter = getal1 - getal2;
                 cout << endl << "Uitkomst: " << counter << endl;
                 }
                 break;
            case 3 : {
                 cout << endl << "Vermenigvuldigen" << endl;
                 cout << "\nGeef een getal op : ";
                 cin >> getal1;
                 cout << "\nGeef een getal op : ";
                 cin >> getal2;
                 counter = getal1 * getal2;
                 cout << endl << "Uitkomst: " << counter << endl;
                 }
                 break;
            case 4 : {
                 cout << endl << "Delen" << endl;
                 cout << "\nGeef een getal op : ";
                 cin >> getal1;
                 cout << "\nGeef een getal op : ";
                 cin >> getal2;
                 counter = getal1 / getal2;
                 cout << endl << "Uitkomst: " << counter << endl;
                 }
                 break;
            case 5 : {
                 cout << endl << "Modulo" << endl;
                 cout << "\nGeef een getal op : ";
                 cin >> getal1;
                 cout << "\nGeef een getal op : ";
                 cin >> getal2;
                 counter = getal1 % getal2;
                 cout << endl << "Uitkomst: " << counter << endl;
                 }
                 break;
            case 6 : {
                 cout << endl << "\n Really exit? 1=Yes, 2=No  ";
                 cin >> exit;

                 if (exit == 1) {
                    return 0;
                    }
                    else {
                         // keuzemenu laten zien

                         }
                 }
                 break;
            default : {
                    return 0;
                    }
                    break;
                 }

          }
          cin.ignore();
          cin.get();
}

Hetzelfde effect
probleem: als je een keuze maakt die niet tussen 1-6 accepteert hij de keuze niet.
Alleen als je een +, -, spatie, als keuze typt dan kun je zoveel enters als je wil invoeren tot je nog een letter of + ofzo intypt en dan sluit het programma.

Hoop dat je er een beetje aanuit kunt, moeilijk uitteleggen :thumb:

groetjes
 
In het boek the programming language c++ staat een goed voorbeeld. Ik heb hem een beetje aangepast voor je. Maar 't is beter te lezen en te onderhouden.

Code:
#include <iostream>
using namespace std;

enum Tokens{
     PLUS = '+', MIN = '-', KEER = '*', DELEN = '/', EINDE, PRINT
};

Tokens getToken()
{
       char ch;
       cout << "Wat wilt u doen ? + / * - (afsluiten met 0)" << endl;
       cin >> ch;
       switch(ch)
       {
           case '0': return Tokens(EINDE);
           case '+':
           case '-':
           case '/':
           case '*':
           return Tokens(ch);
       }
}
int main()
{
    Tokens token = PRINT;
    int getalA, getalB;
    while(token != EINDE)
    {
        token = getToken();
        switch(token)
        {
            case PLUS:
                 cout << "Welke twee getallen wilt u bij elkaar optellen ?" << endl;
                 cin >> getalA;
                 cin >> getalB;
                 printf("%i + %i = %i\n", getalA, getalB, getalA + getalB);
                 break;
            case MIN:
                 cout << "Welke twee getallen van elkaar aftrekken ?" << endl;
                 cin >> getalA;
                 cin >> getalB;
                 printf("%i - %i = %i\n", getalA, getalB, getalA - getalB);
                 break;
            // etc.
            case EINDE:
                 token = EINDE;
        }
    }
    system("PAUSE");
    return 0; 
}
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan