[c++] Variable checken ob zahl.

Fredyy

Grünschnabel
hi,
ich bin noch total neu in c++.
nun aber habe ich trotzdem schon prbleme.
wie kann ich eine variable durch checken ob es eine zahl ist?
die Variable "menu" darf nämlich nur eine zahl sein kein buchstaben
oder sonst ein zeichen sonder nur zahlen die aus den ziffer von 0-9 bestehen.

danke schon mal für eure hilfe.

bye fredyy
 
Zuletzt bearbeitet:
So z.B:

Code:
#include <iostream>
using namespace std;

int main()
{
int x;
cin>>x;
if(x>0 && x<9)
cout<<"sinnvolle eingabe";
else
cout<<"Blödsinn";

return 0;
}

//edit : Flasch verstanden:
Nochmal :

Code:
#include <iostream>
#include <cstdlib>
using namespace std;

int main()
{
string  x;
cin>>x;
int y;
string ueb("123456789");
if(x.find_first_not_of(ueb)!=string::npos)
cout<<"Sie machen Bockmist\n";
else
y=atoi(x.c_str());

return 0;
}
 
Zuletzt bearbeitet:
moin


Hier noch ein andere Variante:
Code:
#include <iostream>
#include <cstdlib>
using namespace std;

int main()
{
     char szStrint[20];
     cin>>x;

     for( int i=0; i<strlen(szString); i++)
          if(!isdigit(szString[i])
               cout<<"Fehler";

     int zahl = atoi(szString);

     return 0;
}


mfg
umbrasaxum
 
danke schon mal für die antworten..
ist es jetzt noch möglich das, dass ganze teil in eine funktion kommt
die gleichzeitig auch noch ein ',' durch ein '.' ersetzt?
da c++ ja nicht mit kommas sondern mit punkten rechnet.
ach ja und wenn man 2,5 ein gibt wird das so wie es jetzt ist am ende als 2 rechnet..
es muss aber 2.5 sein.
danke schon mal bye fredyy
 
moin


Code:
int umwandeln(char *szString)
{

     for( int i=0; i<strlen(szString); i++)
     {
          if(szString[i] == ',')
          {
               szString[i] = '.';
               continue;
          }

          if(!isdigit(szString[i])
          {
               cout<<"Fehler";
               return -1;
          }
     }

     return atoi(szString);
}

So sollte es laufen. Und ich denke es ist selbst erklärend.


mfg
umbrasaxum
 
kann ich anstatt einer char* die in der funktion rein geladen wird auhc
irgendwie eine int oder float variable rein laden?
 
moin


Nein.
Das wäre auch schlecht weil es das Ergibnis "verfälschen" würde.
Weisst du nciht mit einem char * umzugehen?


mfg
umbrasaxum
 
neien leider weeiß ich das nicht weil ich erst gestern mit einem freund zusammen mit c++ angefangen habe..
ich konnte vorher schon php deshalb waren ein paar sachen einfach aber jetzt wir des anspruchsvoll mit den ganzen variablen typen und so...
ich hoffe du kanst ir weiter helfen..
 
moin


Ok, dann hier mal ein Beispiel das dir zeigt wie simpel das ist:
Code:
#include <iostream>

int umwandeln(char *szString);

int main()
{
     char *szText;
     int nZahl;

     cin>> szText;
     nZahl = umwandeln(szText);
     cout<< nZahl;    

     return 0;
}

int umwandeln(char *szString)
{

     for( int i=0; i<strlen(szString); i++)
     {
          if(szString[i] == ',')
          {
               szString[i] = '.';
               continue;
          }

          if(!isdigit(szString[i])
               return -1;
     }

     return atoi(szString);
}

Pointer sind nicht grad das einfachste Element von C aber ein sehr Wertvolles und oft unumgängliches.


mfg
umbrasaxum
 
ich habe mein code mal angehängt.
das problem ist wenn ich bei addition da ist ein code jetzt drin.
wenn ich da ein komma ein gebe gibt es eine fehler... :confused: :confused:
ich glaube ich bin einfahc zu dumm...


Code:
#include <iostream>
#include <cmath>
#include <conio.h>
#include <windows.h>

using namespace std;

int umwandeln(char *szString)
{

     for( int i=0; i<strlen(szString); i++)
     {
          if(szString[i] == ',')
          {
               szString[i] = '.';
               continue;
          }

          if(!isdigit(szString[i]))
               return -1;
     }

     return atoi(szString);
}


int main (int argc, char *argv[])
{
  int menu;
  char szinput[1];
  while(menu != 7)
  {
    system("cls");
    cout << " Konsolen Taschenrechner (c) Fredyy" << endl;
    cout << " 1) Addition"<<endl;
    cout << " 2) Subtration"<<endl;
    cout << " 3) Multiplikation"<<endl;
    cout << " 4) Division"<<endl;
    cout << " 5) Radizieren"<<endl;
    cout << " 6) Potenzieren"<<endl;
    cout << " 7) Ende"<<endl;
    cout << " Bitte geben Sie einen Menuepunkt ein: ";
    cin>>szinput;
    menu = atoi (szinput);
    
      if(menu == 1)
      {
        char *sum2,*sum1;
        int x,y;
        cout << "\n  1) Addition"<<endl;
        cout << "     Bitte geben sie den ersten Summanden ein : ";
        cin >> sum1;

        cout << "     Bitte geben sie den zweiten Summanden ein : ";
        cin >> sum2;

        y=umwandeln(sum2);
        x=umwandeln(sum1);
        
        
        cout << "\a     Die Summe ist: " << (x+y)<<  endl;
        getch();
      }
      else if(menu == 2)
      {
        float min;
        float sub;
        cout << "\n  2) Subtration"<<endl;
        cout << "     Bitte geben sie den Minuend ein : ";
        cin >> min;
        cout << "     Bitte geben sie den Subtrahend ein : ";
        cin >> sub;
        cout << "\a     Die Differenz ist: " << (min-sub) << endl;
        getch();
      }
      else if(menu == 3)
      {
        float fak1;
        float fak2;
        cout << "\n  3) Multiplikation"<<endl;
        cout << "     Bitte geben sie den ersten Faktor ein : ";
        cin >> fak1;
        cout << "     Bitte geben sie den zweiten Faktor ein : ";
        cin >> fak2;
        cout << "\a     Das Produkt ist: " << (fak1*fak2) << endl;
        getch();
      }
      else if(menu == 4)
      {
        float divi1;
        float divi2;
        cout << "\n  4) Division"<<endl;
        cout << "     Bitte geben sie den Divident ein : ";
        cin >> divi1;
        cout << "     Bitte geben sie den Divisor ein : ";
        cin >> divi2;
        cout << "\a     Der Quotient ist: " << (divi1/divi2) << endl;
        getch();
      }
      else if(menu == 5)
      {
        float radi;
        cout << "\n  5) Radizieren"<<endl;
        cout << "     Bitte geben sie den Radikant ein : ";
        cin >> radi;
           if( radi >= 1 )
           {
             float y ;
              y = sqrt( radi ) ;
              cout << "\a     Wurzel der Zahl ist : " << y << endl;
            }
            else
            {
              cout << "\a     Der Radikant darf nicht 0 oder negativ sein."<< endl;
            }
        getch();
      }
      else if(menu == 6)
      {
        float base;
        float expo;
        cout << "\n  6) Potenzieren"<<endl;
        cout << "     Bitte geben sie die Basis ein : ";
        cin >> base;
        cout << "     Bitte geben sie den Exponenten ein : ";
        cin >> expo;
        cout << "\a     Die Potenz ist: " << pow(base,expo) << endl;
        getch();
      }
    }
  cin.get();
}
 
Zurück