do-while schleifen fehler?
-
Was funktioniert denn genau nicht so richtig daran?
-
fehlermeldung:
implicit declaration of function 'int tolower(...)'danke!
-
#include <iostream> #include <cctype> using namespace std; int main (){ int a, nochmal; do{ cout << "Geben Sie ein Zahl ein: " << endl; cin >> a; cout << a % 5 << endl; cout <<"Nochmal (J/N): " << endl; cin >> nochmal; } while(nochmal == 'j' || 'J'); }
so ist's komplett
-
nochmals danke!
ps: hier sollte natürlich "nochmal" auch char sein!
tut mir leid, dass ich so nerv, aber was ist das "using namespace std"
und das "tolower"?
mfg
-
Du hast den Header iostream in dein Projekt eingebunden. Alle Klassen und Funktionen dieses Headers sind im Namespace std geschrieben.
Das heißt du kannst zum Beispiel
cout << "blah"
nur mit
std::cout << "blah"
aufrufen wenn du nicht am anfang
using namespace std;
schreibst. Dieses "using namespace" bringt dass du dieses std:: vor allen Funktionen etc weglassen kannst die in dem Namespace deklariert wurden.
Namespaces werden meistens dazu benutzt um in großen Projekten die gleichen Variablen- oder Klassennamen verwenden zu können. Du könntest dir auch einen eigenen Namespace anlegen und deine Funktionen etc. in ihm schreiben. dann würden sich diese aber auch nur mitNameDeinesNamespace::NameDeinerFunktion
aufrufen lassen. Dort könntest du dann auch eine eigenes Objekt "cout" erstellen das sich mit
NameDeinesNamespace::cout
aufrufen ließe und überhaupt nichts mit dem anderen cout zu tun hat. Aber da ich nicht glaube dass du das brauchst lass ichs mal weg.
Order
edit: tolower(char irgendwas) macht aus einem Großbuchstaben einen Kleinbuchstaben.
-
davie schrieb:
#include <iostream> #include <cctype> using namespace std; int main (){ int a, nochmal; do{ cout << "Geben Sie ein Zahl ein: " << endl; cin >> a; cout << a % 5 << endl; cout <<"Nochmal (J/N): " << endl; cin >> nochmal; } while(nochmal == 'j' || 'J'); }
die schleife würde zwar bei der eingabe von j oder J wiederholt werden aber die schleife würde nicht nur bei n bzw N beendet werden, sondern bei jeder anderen taste als j/J.. wie könnte man das am besten realisieren?
ich hätte spontan irgendwie gedacht:while (nochmal != 'j' || nochmal != 'n') cout << "Fehlerhafte Eingabe" << endl;
nich schlagen :D... was ist daran falsch?
-
so hab ich das auch mal versucht, ohne erfolg
-
CruelDiscovery schrieb:
ich hätte spontan irgendwie gedacht:
while (nochmal != 'j' || nochmal != 'n') cout << "Fehlerhafte Eingabe" << endl;
nich schlagen :D... was ist daran falsch?
Dein if-Ausdruck ist immer wahr. Wenn nochmal nicht nicht 'j' (also eben doch 'j') ist, dann ist es mit Sicherheit nicht 'n' (weil es ja 'j' ist).
Also:
while(!(nochmal == 'j' || nochmal == 'n'))
oder:
while(nochmal != 'j' && nochmal != 'n')
-
ja klar.. im nachhinein logisch, dass es nicht ging.. danke für deinen lösungsvorschlag..
-
da ist das find ich gut erklährt
mit namespacehttp://www.schornboeck.net/ckurs/inhalt.htm
ps: matze hättest mich doch auch fragen gekonnt