Verfügbare Informationen zu "Kleine Frage zu If-Else"
Qualität des Beitrags: Beteiligte Poster: The Dust - dani93 - wirthi - detewe89 Forum: Tutorials.at Forenbeschreibung: Programmierforum aus dem Unterforum: C / C++ Antworten: 7 Forum gestartet am: Mittwoch 19.04.2006 Sprache: deutsch Link zum Originaltopic: Kleine Frage zu If-Else Letzte Antwort: vor 15 Jahren, 3 Monaten, 26 Tagen, 7 Stunden, 24 Minuten
Alle Beiträge und Antworten zu "Kleine Frage zu If-Else"
Re: Kleine Frage zu If-Else
The Dust - 24.11.2007, 15:42Kleine Frage zu If-Else
Das ist mein jetziger Code: Code:
#include <iostream>
using namespace std;
int main()
{
cout<<"Bitte geben Sie eine Zahl ein\n";
int a;
cin>>a;
cout<<"Bitte geben Sie noch eine Zahl ein\n";
int b;
cin>>b;
if(a==b)
{
cout<<"Beide Zahlen sind gleich";
}
if(a<b)
{
cout<<a<<" ist kleiner als "<<b;
}
if(a>b)
{
cout<<a<<" ist größer als "<<b;
}
}
Ich will jetzt ein "If" einbauen das prüft ob die Eingabe des Benutzers eine Zahl oder ein Buchstabe war. Dann wird z.B. "Sie haben keine Zahl eingegeben. Wiederholen Sie die Eingabe" ausgegeben. Allerdings müsste die Variable die durch die Eingabe bestimmt wird, nicht nur vom Typ Integer sein, sondern auch Buchstaben erkennen. Sozusagen eine kombinierte Variable. Welche Lösung gäbe es hier ? Und wie würde dann die Bedingung von "If" lauten ? Code:
if(eingabe == buchstabe)
.......
So hätte ich mir das gedacht. Aber leider funktioniert "buchstabe" im Code nicht so richtig :wink:.
Achja, verstehe "else if" nicht ganz. If und Else ist klar aber die beiden zusammen verwirren mich....
Re: Kleine Frage zu If-Else
dani93 - 24.11.2007, 15:57
Zitat: Achja, verstehe "else if" nicht ganz. If und Else ist klar aber die beiden zusammen verwirren mich....
zu deinem problem kann ich dir nicht weiterhelfen aber:
if (wie du wahrscheinlich weißt) = bedingung
else = wenn if nicht zutrifft, wird else ausgeführt
else if = wie else nur mit einer weiteren bedingung
Re: Kleine Frage zu If-Else
wirthi - 24.11.2007, 16:07
Übersetz es einfach auf Deutsch:
Code: Wenn (a<b) {
...
} sonst {
...
}
Zu deiner anderen Frage:
Code: char c;
cin >> c;
if ( (c>='a') && (c <= 'z') ) {
// ist ein Kleinbuchstabe
} else if ( (c>='0') && (c <= '9') ) {
// ist eine Zahl
} else {
// ist keines von beiden
}
Re: Kleine Frage zu If-Else
detewe89 - 24.11.2007, 17:19
Geht auch mit dem ctype-Header: Der stellt Funktionen zur Verfügung, die feststellen, um was für eine Zeichenart es sich handelt; Bsp.:
Code: #include <ctype>
(...)
if (isupper(c) != 0)
{
std::cout << "Grossbuchstabe\n";
}
if (isdigit(c) != 0)
{
std::cout << "Ziffer\n";
}
usw...
Re: Kleine Frage zu If-Else
The Dust - 25.11.2007, 15:36
Komme jetzt bei diesem Code nicht mehr weiter: Code:
#include <cctype>
#include<iostream>
using namespace std;
int main(void)
{
int a,b;
cout<<"Geben Sie eine Zahl ein\n";
cin>>a;
cout<<"Geben Sie noch eine Zahl ein\n";
cin>>b;
if ( (isdigit(a) != 0) || (isdigit(b) !=0) )
{
if(a==b)
cout<<"Die beiden Zahlen sind gleich";
if(a>b)
cout<<a<<" ist grosser als "<<b;
if(a<b)
cout<<a<<" ist kleiner als "<<b;
}
else
cout<<"\nSie haben keine Zahl eingegeben. Bitte wiederholen";
cin.clear();//Verhindert das das Programm gleich wieder schließt....
cin.ignore(cin.rdbuf()->in_avail()); cin.get();
}
Das Proggi startet zwar, aber 1. wenn man Zahlen reinschreibt, wird "Sie haben keine Zahl eingegeben....." ausgegeben und 2. wenn man ein Buchstabe eingibt kommt die Fehlermeldung :"Debug Assertion Failed!....".
Die Variante von Wirthi habe ich auch schon getestet. Ich komme einfach nicht drauf wie ich das Code:
char c;
cin >> c;
if ( (c>='a') && (c <= 'z') ) {
// ist ein Kleinbuchstabe
} else if ( (c>='0') && (c <= '9') ) {
// ist eine Zahl
} else {
// ist keines von beiden
}
in meinem Code mit 2 int Variablen, die durch die Eingabe bestimmt und "berechnet"(das Programm muss ja wissen was jetzt größer oder kleiner ist) werden, einsetzen soll. Allerdings funktioniert diese Methode mit dem if(c<=0....) nur wenn c vom Typ char ist. Aber es geht ja eigentlich um Zahlen. Wie gesagt bräuchte eine Variable die den Typ int und char vereint....Oder man könnte das Ganze mit Zwischenvariablen machen....
Re: Kleine Frage zu If-Else
wirthi - 25.11.2007, 15:52
Ich glaube, dir fehlt noch ein bißchen das Verständnis, wie ein Computer eine Zahl und ein Zeichen abbildet.
Was ein Byte ist, weißt du? Eine 8-Bit große Speicherstelle, in der Zahlen (!) zwischen 0 und 255 gespeichert werden können. Oder, wenn man lieber auch mit negativen Zahlen rechnet, von -127 bis +128 (sind ebenfalls 256 verschiedene Werte, das entspricht genau 2 hoch 8). Dies entspricht dem Datentyp "char".
Ein Zeichen wird mittels ASCII-Code verschlüsselt darin gespeichert. Ein A wird etwa 65, ein a wird 97, 0 (das Zeichen Null) wird 48 u.s.w. Auch wenn du es am Bildschirm als "A" siehst, gespeichert ist darin immer die Zahl 65.
Wenn du eine "Zahl" speichern willst, meinst du damit im Normalfall größere Zahlen (wie 1000, 123456 u.Ä.). Diese kannst du in einem byte nicht mehr speichern. Dafür brauchst du größere Variablen, etwa int, die nicht 8 Byte lang sind sondern etwa 32. Dort kannst du 2^32 verschiedene Werte speichern, also im Normalfall genug für die meisten Anwendungen.
Wenn du von der Tastatus etwas einlest, nimmt es dir die cin-Funktion ab, die Daten richtig zu konvertieren. Wenn du also nacheinander die Zeichen (char-Werte!) "9", "8" und "7" eingibst, dann erkennt cin automatisch, dass du nicht die drei Zeichen gemeint hast, sondern die Zahl 987. Dieser Wert wird in der int-Variable (die du zur Verfügung gestellt hast) gespeichert. Hättest du hingegen nur eine char-Varialbe angegeben, würde in dieser die Zahl 57 stehen => das Zeichen "9".
Wenn ich richtig verstehe, was du machen willst, dann musst du:
* Zuerst eine Menge an char-Werten (eine "Zeichenkette", ein "char-Array" oder "String") einlesen. Siehe dazu das Tutorial, wie das geht.
* Die eingelesenen Zeichen prüfen, ob es ausschließlich Zahlen-Zeichen (0-9) sind; das geht mit "isdigit" oder dem von mir beschriebenen code.
* anschließend die Werte in ein int kopieren. Das geht, indem du in einer Schleife die Werte aufmultiplizierst. Wenn du fix 3 Zeichen eingbist, dann geht es so:
Code: int zahl=0;
zahl = zahl + (ziffer1-'0')*100;
zahl = zahl + (ziffer2-'0')*10;
zahl = zahl + (ziffer3-'0')*1;
Wenn du beliebig viele Zeichen einlesen willst, dann musst du das dynamisch (mittels Schleife) programmieren. Dann musst du die letzte Stelle eben mit 1 multiplizieren ("Einerstelle"), die nächste mit 10 ("Zehnerstelle") u.s.w.
Re: Kleine Frage zu If-Else
The Dust - 03.12.2007, 19:11
@wirthi
Schon mal ein großes Dankeschön für deine ausführliche Erklärung. Habe jetzt länger darüber nachgedacht und verstehe es auch einigermaßen :wink: . Denke aber das es besser ist mal dieses Problem bei Seite zu schieben und das später wieder aufzugreifen. Muss dringend die Schleifen vertiefen :D
Mit folgendem Code, können Sie den Beitrag ganz bequem auf ihrer Homepage verlinken
Weitere Beiträge aus dem Forum Tutorials.at
Probleme am Anfang (C++) - gepostet von C++ Lernender am Dienstag 29.05.2007
wer hat noch tools für das alte (turbo-) basic? - gepostet von hapec am Dienstag 28.08.2007
Mein Würfelprogramm funktioniert nicht richtig... - gepostet von Godmaster am Samstag 23.09.2006
Welche Programmiersprache? - gepostet von The Dust am Sonntag 24.06.2007
Robot Carol - gepostet von Dragorad am Donnerstag 26.10.2006
Turbo C Problem! (Umfrage nur nebenbei) - gepostet von ChillerT am Dienstag 06.02.2007
Männlich- Weiblich zeichen - gepostet von DrPhil_Guth am Sonntag 23.04.2006
Ähnliche Beiträge wie "Kleine Frage zu If-Else"
Frage - Mobra69 (Freitag 03.09.2004)
Mein Sohn der kleine Künstler - chaosfee (Sonntag 18.02.2007)
Frage an den Wing - gobi (Dienstag 30.05.2006)
Bisquitrolle - Frage dazu - Kerstin (Montag 06.08.2007)
kleine Gasse - atsuko (Sonntag 02.12.2007)
Frage&Antwort - Mod (Donnerstag 16.06.2005)
Frage: - Vani (Montag 05.11.2007)
der kleine lukas - nic the pig (Freitag 07.07.2006)
noch ne frage :D - Mogi (Sonntag 13.05.2007)
frage - Atem (Sonntag 29.04.2007)
