AW: Anfänger Fragen - c++
Zitat:
Zitat von
Einstein
Da stellt sich mir die Frage woher weiß das "Programm" jetzt das der Input eine Zahl sein muss ?
Daran:
Int ist die Abkürzung für "Integer", was eine Zahl darstellt.
Mit int variablename erstellst du quasi eine Integer Variable.. und in diese Variable können dann logischerweise nur Zahlen rein ;)
Da gibts dann aber auch noch Variablen Arten wie char, float etc. die dann entsprechend andere Daten annehmen (Char Zeichen, Float Zahlen, Strings usw.)
p.s: Schon ne Weile her als ich C++ gemacht hab, daher Sorry falls ichs nicht krass Detailiert beschreiben kann :)
grüße
AW: Anfänger Fragen - c++
Danke für die Info, ja das kenne ich so richtig intensiv mit dem Programmieren habe ich mich vor ~ 6 Jahren beschäftigt meiner Meinung nach verlorene Zeit also kann ich da mit fühlen :D
Das interessant, dann kann ich mir die Variablen wie Bibliotheken vorstellen mit verschiedenen Eigenschaften.
Ich hätte dazu noch 2 Fragen :
Wie regelt man dann die Situation wenn es Zeichen, Zahlen und co haben soll bzw. mehr als nur einen Input ?
Und wie stelle ich das an das sich das ganze erst schließt wenn auch wirklich eine Zahl eingegeben wurde bzw. dementsprechend das was durch die Variable gewollt ist, so wie es da oben steht schließt es sich nach dem ersten Input egal ob Zahl der Buchstabe.
mfg Einstein
AW: Anfänger Fragen - c++
Zitat:
Zitat von
Einstein
Wie regelt man dann die Situation wenn es Zeichen, Zahlen und co haben soll bzw. mehr als nur einen Input ?
Indem du einfach mehrfach Dinge abfrägst, dann aber eben mit verschiedenen Variablen^^
Oder du nimmst ein Variablen Typ wie z.b String.. dann ist es halt keine Zahl oder so mehr sondern ein String.. heißt wenn du dann z.b 2 Zahlen hast die jeweils als String gespeichert sind, musst die erst nach Int konvertieren damit du diese 2 Zahlen zusammenrechnen kannst.
Zitat:
Zitat von
Einstein
Und wie stelle ich das an das sich das ganze erst schließt wenn auch wirklich eine Zahl eingegeben wurde bzw. dementsprechend das was durch die Variable gewollt ist, so wie es da oben steht schließt es sich nach dem ersten Input egal ob Zahl der Buchstabe.
Also.. das sich dein Programm direkt nach der Eingabe schließt, liegt daran das du return 0; machst und danach dein Programm beendet wird, und du da eben keine Pause eingebaut hast^^
Und wenn du möchtest das des Programm sich erst beendet wenn da eine Zahl vorkommt, musst du dein Programm eben so lange in einer Schleife laufen lassen und nach jeder Eingabe kontrollieren ob das eingegebene eine Zahl ist bis der User deines Programms dann auch eine Zahl eingibt.. falls nicht wird die Schleife halt weiter ausgeführt bis dies der Fall ist^^
Schlagworte die du dir dafür mal anschaun kannst:
- If Abfragen
- While Schleifen
grüße
AW: Anfänger Fragen - c++
Integer == Ganzzahl
Float == Fließkommazahl
String == Zeichenkette
Char == einzelnes Zeichen
Die Variable "a" wurde als Integer deklariert, genauso kannst du weitere Variablen/Konstanten (.z.B. mit weiteren Datentypen) deklarieren.
Zitat:
#include <iostream>
#include <string>
using namespace std;
int main (void); {
string name; // Eine Variable vom Datentyp String
cout << "Bitte Namen eingeben\n";
cin >> name;
cout << "Hallo" << name << endl;
cin.get() // Erwartet eine Eingabe bevor das Programm geschlossen wird.
return 0;
}
Ihr dürft mich gerne korrigieren/steinigen falls ich komplett daneben oder falsch liege.
Gefunden habe ich noch ein Openbook: https://de.wikibooks.org/wiki/C%2B%2...ung_in_C%2B%2B
AW: Anfänger Fragen - c++
Code:
#include <iostream>
#include <string>
using namespace std;
int main() {
string name; // Eine Variable vom Datentyp String
cout << "Bitte Namen eingeben\n";
cin >> name;
cout << "Hallo" << name << endl;
cin.get(); // Erwartet eine Eingabe bevor das Programm geschlossen wird.
return 0;
}
Das Problem damit ist, dass du die Eingabe vom Namen mit Enter abschließt.
Dein inputstream sieht dann so aus "eingegebenerName\n".
In die Variable name kommt aber nur "eingegebenerName", das \n murkst immer noch im buffer rum.
cin.get() findet das \n un dein Programm schließt sich.
Also entweder so:
Code:
int main() {
string name;
cout << "Bitte Namen eingeben: ";
cin >> name;
cout << "Deine name: " << name << endl;
cout << "Press Enter ...";
cin.ignore(numeric_limits<streamsize>::max(), '\n');
cin.get();
return 0;
}
Oder wenn der String Leerzeichen enthalten soll:
Code:
int main() {
string name;
cout << "Bitte Namen eingeben: ";
getline(cin, name);
cout << "Deine name: " << name << endl;
cout << "Press Enter ...";
cin.get();
return 0;
}
getline() nimmt das \n mit weg, deshalb kannste dir cin.ignore() sparen.
Aber! Wenn du erst cin>>irgendwas; machst und dann getline(), bekommste auch wieder das gleiche Problem. getline() findet das Zeilenende das noch im buffer ist und liest den Rest nicht.
Gibt dann bessere Möglichkeiten mit stringstreams ect., aber Hauptsache du hast es schonma gehört xD.
Zitat:
Das interessant, dann kann ich mir die Variablen wie Bibliotheken vorstellen mit verschiedenen Eigenschaften.
Näh es sind mehr die Operatoren die das Regeln. In dem Fall:
http://www.cplusplus.com/reference/i...perator%3E%3E/
Du kannst die Operatoren auch überladen für eigene Klassen ect..
Aber das wird jetzt zu deep fürn Anfang. Hastes mal gehört. :)
Leange
AW: Anfänger Fragen - c++
Zitat:
Zitat von
Einstein
Da stellt sich mir die Frage woher weiß das "Programm" jetzt das der Input eine Zahl sein muss ?
Das tut es eben nicht:
Code:
a@DESKTOP-JU125PR:/tmp$ cat einstein.cpp
#include <iostream>
int main() {
int a;
std::cin >> a;
std::cout << a << '\n';
}
a@DESKTOP-JU125PR:/tmp$ g++ -o einstein einstein.cpp
a@DESKTOP-JU125PR:/tmp$ ./einstein
das hier ist gar keine Zahl
0
a@DESKTOP-JU125PR:/tmp$
Ich geb Text ein und das wird "akzeptiert". std::cin will in eine Zahl schreiben -- wenn halt was anderes kommt haste Pech gehabt. Mir fällt gerade kein Weg (mit std::iostream) zu erkennen ob das was eingegeben wurde auch das richtige Format hatte.
Sonst würde ich es halt so machen:
Code:
a@DESKTOP-JU125PR:/tmp$ cat main.cpp
#include <iostream>
#include <cstdio>
#include <errno.h>
int main() {
int a;
while(1) {
int ret = scanf("%d", &a);
// could an int be read?
if (ret == 1) {
break;
}
// is the stream fucked or has it ended?
else if (ferror(stdin) || feof(stdin)) {
return 0;
}
else {
/* remove the unparsed data from stdin, so the next call to scanf
doesn't read the same data again
todo: find out why fflush(stdin) doesn't work */
getchar();
}
}
std::cout << a << '\n';
}
a@DESKTOP-JU125PR:/tmp$ ./einstein
aaaa
abc
123
123
a@DESKTOP-JU125PR:/tmp$
ist aber glaube ich nicht wirklich Anfängerfreundlich
AW: Anfänger Fragen - c++
Wenn die 0 als eingabe akzeptiert werden soll wird es wohl komplizierter wenn nicht einfach schauen ob 0 zurückgegeben wurde. Könntest natürlich auch alles einlesen und dann schauen ob noch was anderes außer 0-9 * x eingegeben wurde.
AW: Anfänger Fragen - c++
Servus,
hopla hätte nicht mit so viel Resonanz gerechnet erstmals danke dafür. Ich muss zu geben das ganz schön viel Info auf ein mal aber je mehr ich darüber nachdenke und mich rein Lese desto mehr komme ich der Sache näher.
Es ist schon sehr interessant zu sehen wie eine eigentlich einfache Frage "Input = Zahl ? True Close, Not true ask again" einiges an umdenken und code mit sich bringt. Ich werde es auf jeden fall versuchen hin zu kriegen und dabei so viel mit zu nehmen wie es geht :D
PHP-Code:
#include <iostream>
#include <cstdio>
#include <errno.h>
int main() {
int a;
while(1) {
int ret = scanf("%d", &a);
// could an int be read?
if (ret == 1) {
break;
}
// is the stream fucked or has it ended?
else if (ferror(stdin) || feof(stdin)) {
return 0;
}
else {
/* remove the unparsed data from stdin, so the next call to scanf
doesn't read the same data again
todo: find out why fflush(stdin) doesn't work */
getchar();
}
}
std::cout << a << '\n';
}
Wenn ich das richtig sehe?
Eine Schleife die überprüft ob eine Integer == Ganzzahl eingegeben wurde, wenn JA dann close, wenn NEIN dann return 0; um die abfrage zu wiederholen mit den gleichen "Parameter bzw. abfrage"
PHP-Code:
while(1) {
int ret = scanf("%d", &a);
// could an int be read?
if (ret == 1) {
break;
}
Und wenn ich z.b das hier entferne schreibt er die Zahl nur 1 mal so wie es glaube ich sein sollte, aber warum das so ist kann ich nicht sagen.
PHP-Code:
else {
/* remove the unparsed data from stdin, so the next call to scanf
doesn't read the same data again
todo: find out why fflush(stdin) doesn't work */
getchar();
}
}
std::cout << a << '\n';
}
Mfg Einstein
AW: Anfänger Fragen - c++
Etwa das gleiche was wacked gemacht hat aber mit regulären ausdrücken
Viele, viele Möglichkeiten um das gleiche Ziel zu erreichen ^^
Leange
Edit: Ok is dochn bissel was anderes :P