C++ Anfängerfragen
-
@chi,
Habe bei deinem Code getch() mit cin ersetzt. Ausserdem haben eine Klammer und ein Return gefehlt.#include <cstdlib> #include <iostream> #include <string> #include <conio.h> using namespace std; double prozent1 (double w,double p); double prozent2 (double g,double p); double prozent3 (double w,double g); double func (double *zahl1, double *pzahl2); double potenz(double a,double b); int main() { string exit; double zahl1,zahl2; char eingabe = 0; do { cout<<"-------------------\n"; cout<<"Mein Taschenrechner\n"; cout<<"-------------------\n"; cout<<"\nWaehlen Sie aus : \n"; cout<<"(1) Addition\n"; cout<<"(2) Multiplikation\n"; cout<<"(3) Division\n"; cout<<"(4) Subtraktion\n"; cout<<"(5) Potenzrechnung\n"; cout<<"(6) Prozentrechnung\n"; cout<<"(7) Exit\n"; cin >> eingabe; switch (eingabe) { case '1': { func(&zahl1,&zahl2); cout<<zahl1<<" + "<<zahl2<<" = "<<zahl1 + zahl2<<endl; break; } case '2': { func(&zahl1,&zahl2); cout<<zahl1<<" * "<<zahl2<<" = "<<zahl1 * zahl2<<endl; break; } case '3': { func(&zahl1,&zahl2); if (zahl1>0 ,zahl2>0) { cout<<zahl1<<" / "<<zahl2<<" = "<<zahl1 / zahl2<<endl; } else { if(zahl1>0,zahl2==0) { cout<<"Teilen durch 0 unmoeglich!"; } else cout<<zahl1<<" / "<<zahl2<<" = 0"<<endl; } break; } case '4': { func(&zahl1,&zahl2); cout<<zahl1<<" - "<<zahl2<<" = "<<zahl1 - zahl2<<endl; break; } case '5': { system("cls"); double a,b; cout<<"Bitte geben Sie eine Zahl ein :"; cin>>a; cout<<"Geben Sie die Potenz an :"; cin>>b; cout<<"Das Ergebniss betraegt : "<<potenz(a,b)<<endl; break; } case '6': { system("cls"); cout<<"Was moechten Sie Berechnen?\nWaehlen Sie aus:\n"; cout<<"(1) Grundwert [G]\n"; cout<<"(2) Prozentwert [W]\n"; cout<<"(3) Prozentsatz [p]\n"; cin >> eingabe; switch (eingabe) { case '1': { system("cls"); double w,p; cout<<"bitte geben Sie den Prozentwert W ein: "; cin>>w; cout<<"bitte geben Sie den Prozentsatz p ein: "; cin>>p; cout<<"G = 100*p/W = "<<prozent1(w,p)<<"\n"; break; } case '2': { system("cls"); double p,g; cout<<"bitte geben Sie den Grundwert G ein: "; cin>>g; cout<<"bitte geben Sie den Prozentsatz p ein: "; cin>>p; cout<<"W= G*p/100 = "<<prozent2(p,g)<<"\n"; break; } case '3': { system("cls"); double w,g; cout<<"bitte geben Sie den Grundwert G ein: "; cin>>g; cout<<"bitte geben Sie den Prozentwert W ein: "; cin>>w; cout<<"p= 100*W/G = "<<prozent3(w,g)<<" %\n"; break; } } break; } case '7': return 0; default: cout<<"Falsche Eingabe!\n"; } system("pause"); system("cls"); cout<<"Moechten Sie das Programm beenden j/n ? :"; cin>>exit; system("cls"); } while (exit=="n"); } double potenz (double a,double b) { if (b==0) return 1; else return a * potenz(a,b-1); } double func (double *pzahl1,double *pzahl2) { system("cls"); cout<<"Bitte Geben Sie die erste Zahl ein :"; cin>>*pzahl1; cout<<"Bitte Geben Sie die zweite Zahl ein :"; cin>>*pzahl2; return 0; } double prozent1 (double w,double p) { return 100*p/w; } double prozent2 (double g,double p) { return g*p/100; } double prozent3 (double w,double g) { return 100*w/g; }
-
danke labviewer,
war ich wieder unachtsam........
:xmas1:
-
bump
-
Tutorial ordentlich lesen.
Siehe Kommentare.
Wenn man das probiert sieht man aber doch ob das Programm funktioniert oder nicht?
Gibt es eigentlich noch die berühmten Leerzeichen? Furchtbar.#include<iostream> using namespace std; int main() { cout<<"Bitte geben Sie 2 Zahlen ein:\n"; int a,b; cin>>a; //* sei 7 cin>>b; //* sei 4 //dividieren: { int temp=a; //* Hilfsvariable int erg=0; //* Ergebniszähler deklarieren und initialisieren while(temp-b >= 0) //* Schleife. Prüfung ob a - b größer/gleich 0 { temp-=b; //* temp = temp - b => 7 - 4 ist 3 (temp) ++erg; //* Ergebniszähler erhöhen um eins //* Zurück zur Schleife. a - b ist kleiner 0, also //* Abbruch Schleife } cout<<b<<" ist in "<<a<<" "<<erg<<" mal enthalten (Rest "<<temp<<")\n"; //* Noch irgendwelche Fragen } //multiplizieren { int erg=0; //* Ergebniszähler deklarieren und initialisieren (0) for(int i=0;i<b;++i) //* Schleifenvariable i deklarieren und initialisieren { erg+=a; //* erg = erg + a //* Wenn i = 4 ist, bricht Schleife ab wegen Prüfung i < b (4) //* Und bei i = 3 => 21 + 7 = 28 } cout<<a<<" mal "<<b<<" ist "<<erg<<"\n"; //* 7 * 4 ist und bleibt 28 } }
-
Also vom Sinn her habe ich es jetzt sehr gut verstanden,
einziges Problem ist, ich verstehe die Schleife nicht ganz.
Könnte man es vllt so sehen?erg 0: temp=7-4
erg 1: temp=3-4 (dort würde es kleiner werden also wird abgebrochen)
dieses ++erg sagt an, das immer +1 zum Ergebnis dazukommt wenn man diese Rechnung durchführt oder?Dann zum multiplizieren:
Ist dort vllt ein kleiner Fehler drinnen?
Verstehe es eigentlich total es wird auch wieder sofort abgebrochen ABER
es wird ja vorgegeben, dass er es abbricht wenn i größer als b ist was dort nicht der fall ist. Sie sind gleich. Also müsste dort nicht "=>" hin?
-
darkii- schrieb:
Verstehe es eigentlich total
Erste Fehlannahme. Du verstehst es (noch) nicht.
darkii- schrieb:
es wird ja vorgegeben, dass er es abbricht wenn i größer als b ist
for(int i=0;i<b;++i)Ok, eine kleine Erklärung zum Zeichen "<". Dieses Zeichen steht für "kleiner als". Die Abbruchbedingung in der Schleife lautet also:
Solange i kleiner ist als b.
Die Schleife wird also solange durchlaufen wie i kleiner ist als b.
Jetzt die 100-Punkte Frage: Welchen Wert hat i wenn es zum erstenmal _nicht_ mehr kleiner ist als b? richtig, wenn es gleich b. Beispiel:
kleiner?
0 < 4 ja
1 < 4 ja
2 < 4 ja
3 < 4 ja
4 < 4 nein -> AbbruchZusatzfrage: wie oft wurde die Schleife in dem Beispiel ausgeführt:
a) 4 mal
b) 5 malNatürlich 4 mal (0-3) Weil beim 5ten Vergleich die Abbruchbedingung ja erfüllt wurde... Und die Abbruchbedingung wird vor Ausführung der Schleife getestet, nicht danach (das wäre sonst eine do-while schleife)
und 4 * 7 = 28. Der Code stimmt also.
-
-verstanden-
-
Also ich hätte nocheinmal eine Frage:
Ist jetzt bisschen doof aber davor hatte ich garnicht darauf geachtet.
Was macht cin.get() genau?
Ich habe es so verstanden, dass es das gleiche wie cin<< ist nur dass es dieses objekt dann auch gleich ausgibt..richtig?
und
hat jemand nochmal eine andere erklärung/ein Tutorial für Arrays?
Verstehe die irgendwie nicht ganz. Habe das hier gelesen: http://tutorial.schornboeck.net/arrays.htm
-
darkii- schrieb:
Was macht cin.get() genau?
Ich habe es so verstanden, dass es das gleiche wie cin<< ist nur dass es dieses objekt dann auch gleich ausgibt..richtig?Dafür ist www.cplusplus.com dein Freund.
darkii- schrieb:
hat jemand nochmal eine andere erklärung/ein Tutorial für Arrays?
Verstehe die irgendwie nicht ganz.Was verstehst du an Arrays nicht? Und vielleicht wäre es besser, dir ein Buch zu besorgen, da lernt man meistens mehr als mit Internet-Tutorials.
-
bin auch gerade auf der suche nach einem buch
-
darkii- schrieb:
bin auch gerade auf der suche nach einem buch
Thinking in C++ 1/2 sind frei verfügbar als E-Book.
Und dann gäbe es noch den C++-Primer, mit dem viele angefangen haben.
-
Nexus schrieb:
Was verstehst du an Arrays nicht?
-
_matze schrieb:
Nexus schrieb:
Was verstehst du an Arrays nicht?

Was willst du uns damit sagen?EDIT:
Was ist jetzt eigentlich mit der Diskette?
- Hat sie geschmeckt?
-
drakon schrieb:

Was willst du uns damit sagen?Na dass er die Frage beantworten soll, wenn er ein Verständnisproblem hat. Sonst kann ihm schlecht geholfen werden.
drakon schrieb:
EDIT:
Was ist jetzt eigentlich mit der Diskette?
- Hat sie geschmeckt?Hehe, war nicht nötig.
Er wusste es auch nicht wirklich zu interpretieren...
-
Nexus schrieb:
Was verstehst du an Arrays nicht?
Verstehe es allgemein einfach garnicht was es so richtig bedeuten soll mit 10 etc.
Kurz gesagt: Alles
-
Ein Array ist eigentlich nichts anderes,als eine Sammlung von Objekten. Das heisst, anstatt
int zahl1; int zahl2; int zahl3; ...zu schreiben kannst du das hier machen:
int zahlen[10];Das bedeutet, dass zahlen ein Array ist, dass 10 Zahlen halten kann, welche man von 0-9 ansprechen kann.
int zahlen[10]; //10 Elemente soll das Array enhalten zahlen[0] = 2; //erste Zahl wird 2 zahlen[1] = 3; //zweite Zahl wird 2 ... zahlen[9] = 99; // 10te Zahl wird 99 zahlen[10] = 2; // nicht erlaubt, da 10 das 11te Element darstellt und somit nicht vorhanden istSo einfach ist das. Das schöne daran ist, dass man auch durchiterieren kann, was bei den benannten Objekten nicht möglich ist.
//gibt alle Zahlen aus for (int i = 0; i < 10; i++) std::cout << zahlen[i];Wenn du das immernoch nicht verstehst, hol dir unbedingt ein bereits erwähntes Buch. Da wird das ganze nochmal genau erklärt.
-
3D-Spiele mit C++ und Directx in 21 Tagen
Tipps zur Socket-Programmierung unter C++
Vergleich Delphi und Visual C++
C++ Grundlagen - Quellcode Beispiele
C++ in 21 Tagen
C++ mini E-Book
C++ mit dem Borland C++ Builder
C++ Programmieren mit Stil
C++ Referenz
C++ Wochenend Crashkurs
C++-Programmierung - Programmiersprache, Programmiertechnik, Datenorganisation
EDUCATION Jetzt lerne ich Visual C++ 6
Intensivkurs C++
Jesse Liberty - Jetzt lerne ich C++ - Jubiläumsausgabe
Jetzt lerne ich Visual C++ 6 [Markt&Technik, Dirk Louis]
Konzept der C++ Standard Template Library
Markt & Technik - Jetzt lerne ich C++
Programmieren in C - C++
Spieleprogrammierung in C++
Visual C++ 6 in 21 Tagen
Visual C++ for Dummies Quick Reference
Visual C++ Kompendium
Visual C++.NET - Das Buch
Visual Studio C++ .NET ebook
Windows-Programmierung mit C++Kennt ihr vielleicht welche von denen?
Wäre da vllt ein richtig gutes dabei?
Könnte ich leichter bekommen.
-
Im 3. Post auf dieser Seite habe ich 2 genannt. Davon kannst du dir eines (2 Teile) bereits jetzt runterladen. Soll sehr gut für Anfänger sein. (ich vertraue da mal denen, die es hier gelesen habe..)
-
Würde zuerst aber lieber ein deutsches buch holen...
-
Das hier ist auf Deutsch und zu empfehlen.
http://www.amazon.de/C-Primer-Stanley-B-Lippman/dp/382732274X
Die anderen kenne ich nicht, aber (leider) gibt es sehr viel Schund auf dem Markt und wenn ich dich wäre, würde ich die 50 Euro in die Hand nehmen. Dann hast du auch was anständiges.