Newbie-Fragen
-
sinnlos123 schrieb:
aber ist
int b = '?'nicht besser zu ersetzen mit
char b = ?verstehe nicht den Sinn int zu benutzen wenn eine Variable einen (wenn auch kleinen) String annehmen soll.
die '' braucht es auch beim char, sonst ist es ein (ungültiges) symbol und kein literal. darüber zu diskutieren ob es sinnvoll ist, ein char-literal einem int zuzuweisen, ist nicht möglich ohne dass wir den kontext kennen.
-
Wenn man mit Zeichen arbeiten will, dann ist char selbstverständlich sinnvoller. Nur weil etwas funktioniert heißt es nicht, dass es (immer) sinnvoll ist. Das Fragezeichen hat hierbei keine Bedeutung, man könnte auch jedes andere ASCII Zeichen verwenden.
Der Typ beeinflusst letztendlich auch die Ausgabe:
#include <iostream> int main() { int ZahlInt = 'Z'; char ZahlCh = 'Z'; std::cout << "ZahlInt = " << ZahlInt << "\n"; std::cout << "ZahlCh = " << ZahlCh << "\n"; }Man sieht, dass der Zahlentyp als Zahl ausgegeben wird und der Zeichentyp als Zeichen. Mit einem Typcast könnte man aber auch den Zeichentyp als Zahl ausgeben, weil es intern nichts anderes als ein Zeichen ist. Daher kann man damit sogar rechnen.
-
eine weitere Frage:
wie kann man Nachrichten gut (in der Ausgabe) formatieren?
ich finde das arbeiten mit \n und \t und so ziemlich aufwendig, kann man nicht einfach mit Leerzeichen arbeiten? (bei kleinen-mittleren Nachrichten (und somit auch quell-texten))
Ausserdem eine Frage:
#include <iostream> #include <cmath> using namespace std; int main() { double x1=4,x2=12.25,x3=0.0121; cout << "\n Zahl \t Wurzel" << endl; cout << "\n " << x1 << " \t " << sqrt(x1); cout << "\n " << x2 << " \t " << sqrt(x2); cout << "\n " << x3 << " \t " << sqrt(x3) << endl; cout << "Von welcher Zahl soll die Wurzel berechnet werden?" << endl; cin >> x1; cout << "\n Zahl \t Wurzel" << endl; cout << "\n " << x1 << " \t " << sqrt(x1) << endl; return 0; }warum wird zwischen dem Schritt x3 und cout keine leere Zeile dargestellt?
endl; ist doch dafuer da oder nicht?
(benutze codeblocks und hab auch eine .cpp endung, falls das irgendwas ausmachen sollte)

-
Na wird es schon, aber wenn du ne leere Zeile haben willst musst du eben zweimal machen, sprich "\n\n".
Da wären wir auch schon beim Thema, für einen Zeilenumbruch brauchst du '\n', endl aber eigentlich nicht. Obs jetzt wirklich bei solchen Programmen nen Unterschied macht... naja
mfg
-
Halloele!
Eine Uebungsaufgabe aus dem Buch von Ulla Kirch:
Korrigieren sie dieses Program [...]So, das fertige Programm soll den Text auswerfen:
Tippen Sie ein Wort mit hoechstens 3 Zeichen ein.Danach soll es das Wort dadrunter abbilden.
Das ist ja auch garkein Problem, jedoch moechte ich wissen wie man mit "zu langen" Woertern umgehen koennte.
a) den String kuerzen (wie lautet der operator? )
b) die Stringlaenge ueberpruefen und mit if arbeiten.
c) wie im Buch nur 3 Buchstaben zulassenWelches davon ist die "beste" Loesung?
Im Buch wird einfach mit setw(4) bei der eingabe gearbeitet, warum 4 und nicht 3?
-
sinnlos123 schrieb:
Im Buch wird einfach mit setw(4) bei der eingabe gearbeitet, warum 4 und nicht 3?
Vermutlich, weil dieses "tolle" Buch mit nullterminierten Zeichenketten im C-Stil arbeitet, anstatt mit C++-Strings. Das vierte Zeichen ist dann die Nullterminierung, da setw die Anzahl der geschriebenen Zeichen festlegt.
a) den String kuerzen (wie lautet der operator? )
b) die Stringlaenge ueberpruefen und mit if arbeiten.
c) wie im Buch nur 3 Buchstaben zulassenWelches davon ist die "beste" Loesung?
Kommt drauf an. Alles hat Vor- und Nachteile, weil alle davon etwas anderes tun. Man muss eben wissen, was man genau möchte. Sie unterscheiden sich jeweils da drin, was hinterher bei welcher Art von Eingabe noch im Eingabestrom verbleibt und was nicht. Die genauen Antworten auf deine Fragen hängen auch davon ab, ob du C-Strings oder C++-Strings benutzt.
-
hi, das Buch handelt von c++, und wird auch hier angepriesen^^ (wie lerne ich c++ thread)
und das Programm wird mit einem c++ compiler hergestellt.
b) und c) braucht nicht beantwortet werden, nur a)
wie kuerzt man einen String wenn man die ersten n buchstaben behalten moechte (links nach rechts gelesen).eine weitere methode waere, dass ausgabefenster zu beschraenken oder?
Das "Problem" ist natuerlich nicht wirklich wichtig, daher kann ich auch keinen Anwendungszweck benennen

-
sinnlos123 schrieb:
hi, das Buch handelt von c++, und wird auch hier angepriesen^^ (wie lerne ich c++ thread)
Kannst du das genauer zeigen?
und das Programm wird mit einem c++ compiler hergestellt.
C++ umfasst auch viel von C. Bloß weil man C in C++ benutzen kann, wird es dadurch aber nicht zu "richtigem" C++.
b) und c) braucht nicht beantwortet werden, nur a)
Da gilt aber trotzdem:
SeppJ schrieb:
Die genauen Antworten auf deine Fragen hängen auch davon ab, ob du C-Strings oder C++-Strings benutzt.
Besonders bei den C-Strings kann das durchaus recht ekelhaft werden, je nach Anspruch an die Sauberkeit des Programms (Quick&Dirty wäre, das vierte Zeichen auf 0 zu setzen). Bei C++-Strings einfach resize.
eine weitere methode waere, dass ausgabefenster zu beschraenken oder?
Das ist eine komische Denkweise. Wenn man es nicht sieht, passt es?
http://www.nachdenkseiten.de/upload/bilder/2009zensursulamediengestalter.jpg
-
SeppJ schrieb:
sinnlos123 schrieb:
hi, das Buch handelt von c++, und wird auch hier angepriesen^^ (wie lerne ich c++ thread)
Kannst du das genauer zeigen?
und das Programm wird mit einem c++ compiler hergestellt.
C++ umfasst auch viel von C. Bloß weil man C in C++ benutzen kann, wird es dadurch aber nicht zu "richtigem" C++.
b) und c) braucht nicht beantwortet werden, nur a)
Hallo

Hier der Thread, in dem das Buch "C++ lernen und professionell anwenden von Peter und Ulla-Kirch Prinz" angepriesen wird. http://www.c-plusplus.net/forum/112134-full
Die Aufgabe um die es hier gerade geht waere auf S.99 Aufgabe 5 zu finden(vll hast du es ja)Wie jetzt, wenn ich einen C++ compiler benutze, dann MUSS ich doch c++ schreiben um immer compilen zu koennen oder nicht? Klar, kann natuerlich sein, dass Code-schnipsel die in c++ compilierbar sind auch in c erwuenschtes hervorbringen.

Da gilt aber trotzdem:
SeppJ schrieb:
Die genauen Antworten auf deine Fragen hängen auch davon ab, ob du C-Strings oder C++-Strings benutzt.
Besonders bei den C-Strings kann das durchaus recht ekelhaft werden, je nach Anspruch an die Sauberkeit des Programms (Quick&Dirty wäre, das vierte Zeichen auf 0 zu setzen). Bei C++-Strings einfach resize.
also waere der entstehende code-schnipsel:
cin << x; x.resize (3); // Oder 4? cout >> x;?
eine weitere methode waere, dass ausgabefenster zu beschraenken oder?
Das ist eine komische Denkweise. Wenn man es nicht sieht, passt es?
http://www.nachdenkseiten.de/upload/bilder/2009zensursulamediengestalter.jpg
genial!
Ich schrieb ja bloss, ob es eine Methode waer, nicht ob sie "gut" ist
Aber ja, ist wohl dumm sowas zu machen
Edit^2: kannst von mir aus den Thread mergen mit haeufig gestellte Fragen, bzw. dort poste ich demnaechst meine trivialen Fragen

-
Hi, ich verstehe folgendes nicht:
#include <iostream> using namespace std; int main() { bool a=false; int x=7; cout<<x<<endl; a=x++ == 8 || x == 7; cout<<a<<endl; cout<<x; return 0; }Ausgabe:
(x=)7
(a=)0
(x=)8Warum veraendert sich x? ich dachte die a-zeile bestimmt nur a, aendert aber nicht x.

-
mehrfache verwendung eines ausdrucks, den du postinkrementiert hast in der selben zeile ist afaik undefined behaviour. und x ändert sich logisch da es postinkrementiert wird...
-
sinnlos123 schrieb:
Warum veraendert sich x? ich dachte die a-zeile bestimmt nur a, aendert aber nicht x.
x++ ändert x, wenn es ausgewertet wird.
-
00000000 schrieb:
Ein Buchstabe ist auch nur eine Zahl im Speicher. Für Zeichenketten ist C++ eh nicht geeignet, das kann nicht mal UTF8.
LibreOffice und OpenOffice sind in C++ geschrieben. Kann ich da dann keine Umlaute verwenden
? Ach ja - und Firefox ist auch in C++ geschrieben. Ich kann mich aber erinnern, im Web Umlaute gesehen zu haben, obwohl ich Firefox verwende.
-
hi, ein compiler macht ja aus (zu)komplizierten Rechnungen wie 1+1-1-1 ja sofort 0, was ist aber wenn ich folgendes habe:
x=1
x=2
x=1
....fasst der compiler auch sowas zusammen? (ok, mit magic numbers sollte man eh nich proggen, aber geht ja ums prinzip
)
-
wenn er den wert zu compilezeit evaluieren kann, kann das ein compiler unter umständen tun (bzw teilweise MUSS er es tun, siehe tmp).
-
was muss ich machen um das am Bildschirm angezeigte zu speichern, meine natuerlich jegliche Art von Text. Genauer: das von einem bestimmten Programm angezeigte.
ein kleiner Hinweis in die richtige Richtung wuerde mir reichen

-
ofstream.
Und jedes Mal wenn du cout benutzt, schreibst du das auch in ofstream.