Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Lucky13

Frischling

  • »Lucky13« ist der Autor dieses Themas

Beiträge: 6

Wohnort: NRW

  • Private Nachricht senden

1

02.11.2006, 21:24

kleines problemchen

Hallo community bin noch recht am anfang vom Buch und wollt nochmal fragen ob ihr mir mal wieder weiterhelfen könnt ..
Und zwar will ich das in einem kleinen simplem programm ein buchstabe abgefragt wird und wenn kein buchstabe eingegeben wird z.B.eine Zahl oder so, eine fehlermeldung kommt.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
void main ()
{   
    char input;

    cout <<"bitte gib nen buchstaben ein : ";
    cin >> input;

    if (input!=/* nicht vom Datentyp char */)
        cout << "Falsche Eingabe";
    else
        cout << "Der eingegebene Buchstabe lautet : "<< input;
}


wie mache ich das in der if bedingung?

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

02.11.2006, 21:41

Funktionen:
isalnum(c), isalpha(c), isdigit(c)

oder (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')

3

02.11.2006, 21:41

Machs so wie David sagte und der Rest muss auch geändert werden ... so wie du es hast sollte es net gehen ;)

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
#include <iostream>

int main ()
{   
    char input;

    std::cout <<"Bitte geben Sie einen Buchstaben ein: " << std::endl;
    std::cin >> input;
    std::cout << "Der eingegebene Buchstabe lautet: "<< input << std::endl;
}
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

FlyingDragon

Frischling

Beiträge: 38

Wohnort: Sachsen

Beruf: Consultant / Software Architekt

  • Private Nachricht senden

4

02.11.2006, 21:42

Hiho,

zum besseren verständis erstmal etwas Theorie. Jedem Zeichen liegt ein Wert zugrunde. So hat zum Beispiel der Buchstabe A den Wert 65.

Und wie man bereiche testet weißt du bestimmt schon. Also kannst du das so machen:

C-/C++-Quelltext

1
2
3
4
5
6
if(zeichen >= 'A' && zeichen <= 'Z')
    cout << "Ich bin ein Grossbuchstabe: " << zeichen << endl;
if(zeichen >= 'a' && zeichen <= 'z')
    cout << "Ich bin ein Kleinbuchstabe: " << zeichen << endl;
if(zeichen >= '0' && zeichen <= '9')
    cout << "Ich bin eine Ziffer:" << zeichen << endl;

Schau mal in die ASCII-Tabele, da stehen alle Buchstaben / Ziffern / Zeichen und die dazugehörigen Werte.
Achtung! Das Lesen dieses Beitrags kann Ihnen und den Menschen in ihrer Umgebung erheblichen Schaden zufügen.
___________
Mein Leben, Freunde und die Spieleentwicklung

Black-Panther

Alter Hase

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

5

02.11.2006, 21:45

Der eingegebene Typ ist 100%ig vom Typ char... Du kannst dann lediglich schauen, ob es ein Buchstabe oder eine Zahl ist...
Das machst du am besten mit einem direkten Vergleich alá:

C-/C++-Quelltext

1
2
3
4
5
6
unsigned char cValue = 0x00;

//... eingabe


if((cValue >= 'a' && cValue <= 'z') || (cValue >= 'A' && cValue <= 'Z')) //Buchstabe!

else //Etwas anderes... (so kannst du auch die Ziffern rausfiltern... musst höchstens in der ASCII-Tabelle nachschaun, was zuerstkommt...)


//EDIT:
loool... war wohl ziemlich langsam :D
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

6

02.11.2006, 21:46

Vorweg. Char speichert nichts weiter als eine Zahl zwischen 0 und 255. Diese Zahlen werden dann als Zeichen interpretiert. Gleichzeitig werden aufeinanderfolgende Zeichen (z.b. ABC) auch von aufeinanderfolgende Zahlen repräsentiert. Deine If-Anweisung könnte also wie folgt aussehen:

C-/C++-Quelltext

1
if(input < 'A' || input > 'z' || (input > 'Z' && input < 'a'))


Erklärung
ASCII-Werte: 'A' = 65, 'Z' = 90, 'a' = 97, 'z' = 122
Man muss also abfragen, ob der Wert der Eingabe außerhalb von (65 und 90) oder (97 und 122) liegt . Einfache Anführungszeichen lösen die Buchstaben in die Werte auf.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Lucky13

Frischling

  • »Lucky13« ist der Autor dieses Themas

Beiträge: 6

Wohnort: NRW

  • Private Nachricht senden

7

02.11.2006, 22:08

aha ok danke an alle

ist ja eigentlich auch logisch und hätte selber drauf kommen müssen...
nur irgendwie war ich die ganze Zeit auf das != in der if anweisung fixiert und dachte so muss es doch funzen statt auch an den < bzw. > Operator zu denken... :roll: :D

Werbeanzeige