Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Integer Variable von Buchstaben/Sonderzeichen befreien

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
13.11.2013, 10:17 Uhr
~Wichtelmensch
Gast


Guten Tag

Ich würde gerne wissen wie ich aus einer integer variable wo 3a4 eingegeben wurde
Das da integer variable = 34 rauskommt.

Oder einfach das falls irgendein sonderzeichen/buchstabe eingegeben wurde dass das programm zum else zweig springt.

Aus interesse würde ich gerne beides erfahren .



C++:
#include <iostream>
#include <ctime>
#include <string>
#include <ctype.h>
#include <math.h>
using namespace std;
    //     unsigned int *punkte  = new unsigned int[anzahl];
int anzahl;

int main(){
    cout << "Bitte gib die Anzahl der Teilnehmer an: ";
    cin >> anzahl;
// HIER IST DAS PROBLEM WAS FÜR EIN BEFEHL SOLL ICH NEHMEN??
    if (!isdigit(anzahl)) {
        cout << "Du hast eine Zahl eingeben :V" << endl;
        if(anzahl%2 == 0){
                // HIER GEHTS ERST RICHTIG LOS
    unsigned int *punkte = new unsigned int[anzahl];
    string *teilnehmer = new string[anzahl];

    for(int i=0;i<anzahl;i++){
        cout << "Name: ";
        cin >> teilnehmer[i];
    }
    
     srand(time(NULL));

    for(int i=0;i<anzahl;i++){
        punkte[i] = rand() + 1 % 10 * 3.3;
    }

    cout  << "Punkte" << endl;


    cout << endl << "Sortierung :V" << endl;
// Sortierung
    double temp;
    string temp2;
    for(int i=0;i<anzahl;i++){
        for(int i=0;i<anzahl;i++){
            if(punkte[i] > punkte[i+1]){
                temp = punkte[i];
                temp2 = teilnehmer[i];

                punkte[i] = punkte[i+1];
                teilnehmer[i] = teilnehmer[i+1];

                punkte[i+1] = temp;
                teilnehmer[i+1] = temp2;

            }else if(punkte[i] == punkte[i+1]){
                // punkte[i] = rand() % 10 * 3.3;
                    while (punkte[i] == punkte[i+1])
                        {
                            punkte[i] = rand() + 1 % 5000 * 3.3;
                            if(punkte[i] > punkte[i+1]){
                                temp = punkte[i];
                                temp2 = teilnehmer[i];
                                punkte[i] = punkte[i+1];
                                teilnehmer[i] = teilnehmer[i+1];
                                punkte[i+1] = temp;
                                teilnehmer[i+1] = temp2; }
                            //uuuuuuuuuuuuuuuuuuuuu
                        }
            }
        }
    }
        int stopschild = 0;
        cout << endl << "Partner:" << endl;
        for(int i=0;i<anzahl;i++){
        cout << teilnehmer[i] << " ----> ";
        stopschild = stopschild + 1;
        
        if(i+1 == anzahl){
            
        } else if(stopschild == 2){
            stopschild = 0;
            cout << endl;
        }
        // cout << teilnehmer[i] << " " << punkte[i] << endl;
    }
        cout << teilnehmer[0] << endl;




            // HIER WIRDS LAHM
        }else{
            cout << endl << "Tut mir leid du hast eine Person zu viel bzw. zu wenig dabei :( DUMMKOPF!!!!";

        }
    }
    else {
        cout<<"Du hast kkkkkkkkkkkkkkeine Zahl eingegeben!!" << endl;
    }

        system("PAUSE");
}



 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
14.11.2013, 01:23 Uhr
Hans
Library Walker
(Operator)


Hi,

das Problem liegt darin, das isdigit() und Konsorten zwar integer als Eingabe erwarten, aber immer nur einzelne Zeichen, d.h. char testen. Du müsstest Deine Eingabe also Zeichenweise in einer Zeichenkette speichern, und dann jedes Zeichen einzeln mit isdigit() überprüfen, ob es eine Ziffer ist oder nicht. Wenn Du dabei auf falsche Zeichen trifft, kannst Du darauf reagieren. Am Ende wandelst Du die Zeichenkette dann in eine integervariable um, die Du im Programm weiter verwenden kannst.
Alternativ kannst Du die Zeichen auch mit cin.get(c) einlesen und gleich nach der Eingabe überprüfen, was damit passieren soll.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: