Programmabsturz vermeiden, aber wie?

colabs

Grünschnabel
Hallo an alle,
ich bin ein relativer C++ Neuling und habe ein Problem mit meinem Programm. Das Programm dient dazu, Dezimalzahlen in Hexadezimalzahlen und Dualzahlen umzuwandeln und umgekehrt.
Soweit kein Problem, jedoch...
1.) ... stürzt das Programm ab, wenn man an den Stellen, wo eine Integer-Variable eingegeben werden soll beispielsweise einen Buchstaben eingibt. Kann man das irgendwie umgehen Wenn ja wie? (Habe es mit einer if-else abfrage versucht, aber funktioniert irgendwie nicht)

2.) Die Stellen der Hexadezimalzahlen habe ich in einem char-Array gespeichert. Dort habe ich die Buchstaben groß geschrieben. Wenn man nun eine Hexadezimalzahl in eine Dezimalzahl umwandeln will, darf man nur Großbuchstaben eingeben, damit das Programm die richtige Berechnung durchführt. Gibt man Kleinbuchstaben ein, so führt das Programm zwar eine Berechnung durch und gibt ein Ergebnis ein, welches jedoch falsch ist.
Nun zu meiner zweiten Frage: Gibt es eine Möglichkeit alle eingegebenen Buchstaben in Großbuchstaben umzuwandeln, oder etwas ähnliches?

Danke im Vorraus für eure Hilfe und
freundliche Grüße

Colabs
 
Hallo,

poste doch mal deinen Code den du hast.
Dann kann man besser weiterhelfen.

Zu 1) Man könnte über den Ascciiwert des Eingegebenen prüfen, ob es sich um einen Buchstabe oder Zahl handelt.

Zu 2) ja das geht, auch beispielsweise über den Ascciiwert.
Es gibt auch die Funktion ToUpper() die man nutzen könnte.

MfG Turri
 
Programmcode ist glaube ich eher verwirrend... Es geht um eine einfache Eingabe einer Integervariablen (mit cin>>variable) bei der ich irgendwie verhindern will, dass das Programm bei Eingabe eines buchstaben abstürzt. Wie kann man das denn über diesen Ascii-dingens machen? Gibt es da irgendwo beispiele, oder kann mir jemand den code schicken

Danke und viele Grüße
colabs
 
Hallo,

ich denke das hilft weiter. Probiers aus, tipp verschiedene Buchstaben und Zahlen ein.
Code:
#include <iostream>
#include <ctype>  // wegen toupper()

using namespace std;
int main(int argc, char* argv[])
{
     char c;
     cin >> c;
     int i = (int)c; // Asccii Wert bestimmen
     if(i > 47 && i < 57)
     {
          // hier gehts weiter... kann nur eine Zahl sein
          cout << c << " ist eine Zahl." << endl;
     }
     else
     {
          cout << c << " ist keine Zahl." << endl;
     }
///////////////////////////////////////////////////////////////////////
     char big = toupper(c);
     cout << "So sieht das " << c << " aus wenn es gross wird: " << big << endl;
     system("pause");
     return 0;
}
MfG Turri
 
statt
Code:
 if(i > 47 && i < 57)
kannst Du auch
Code:
if(isdigit(i))
verwenden.
Es gibt noch weiter Klassifizierungsroutinen in der stdlib, z.B. isalnum(int c): [A-Z, a-z, 0-9], isalpha(int c): [A-Z, a-z] oder isspace(int c): [0x09-0x0d, 0x20].
 
Zurück