Source Code Problem
-
Hallo Freunde,
ich bin gerade dabei C++ zu lernen und wollte so mal aus Spass ein kleines eigenen Programm schreiben...
So wollte ich einen Taschenrechner programmieren und genau dort liegt mein Problem... irgendwie klappt was nicht...
Ich lasse eine Art "Menü" ausgeben und möchte, wenn die jeweilige Zahl die vor der Rechenoperation steht, eingegeben wird, dass dann auch diese Operation ausgeführt wird. Dies hab ich mit if/else gemacht doch irgendiwe lässt sich immer nur addieren aber nicht subtrahieren...
(die 2 anderen Rechenarten hab ich noch nicht mir rein genommen weil schon das mit dem wechsel zwischen addieren und subtrahieren nicht klappt...)
wie gesagt, ich bin noch nicht lang dabei und so könnte mein Source code ein bissel chaotisch aussehen...
Der Code:
#include <iostream>
using namespace std;int main()
{
int x, y; //Rechnoperationen werden festgelegt - Addition
//Rechenoperation werdern festgelegt - Subtraktionint addition_1, addition_2; //Das sind die Ziffern für die addition
//Das Menü wird ausgegeben
cout << "Hallo! \n\n";
cout << "Ich rechne Ihnen alles aus was Sie wissen wollen!\n\n";
cout << "Was wollen sie berechnen:\n";
cout << "\n";
cout << "1. Addieren\n";
cout << "2. Subtrahieren\n";
cout << "3. Multiplizieren\n";
cout << "4. Dividieren\n";cout << "\n";
//1. if-Anwendung -> Addition
{if (cin >> x)
{
cout << "Welche Zahlen sollen miteinander Addiert werden?\n";
cin >> addition_1;
cin >> addition_2;cout << addition_1 << " + " << addition_2 << " = " << addition_1 + addition_2;
cin.get();
cout << "\n";
}//2. if-Anwendung -> Subtraktion
if (cin >> y)
{
cout << "Welche Zahlen sollen Subtrahiert werden?";
}
}} return 0;}
Kann mir jemand helfen...
Bei fragen schreibt mich einfach an...
Mfg crew06ZW
-
Machs einfach und nicht so umständlich ...
#include <iostream> #include "header.h" //.. //sonstige Headerdateien wie windows.h ... void start_program(); int main() { //Variablendefinition int a, b; //Hauptvariablen char chars; //+, -, *, /, ^ char choose; //A,B,C double zahl = 10, x = 3; //Code std::cout<<"~ Matheprogramm ~"<<std::endl; std::cout<<"A. Start\nB.Readme\nC. \"Zehn_hoch\"\nD.Programm schliessen\n\nAuswahl: "; std::cin>>choose; switch(choose) { case 'A': std::cout<<"\n<Zurueck ins Hauptmenue mit 'X'\nSchreibe hier eine aus zwei Zahlen bestehende Rechnung hinein.\nMoeglichkeiten:\n-<+>(x + x)\n- <->(x - x)\n- <*>(x * x)\n- </>(x / x)\n- <^>(x^n)\n\n"<<std::endl; std::cout<<"Rechnung bitte hier eingeben: "; std::cin>>a; std::cin>>chars; std::cin>>b; switch(chars) { case '+': std::cout<<add(a,b)<<std::endl; break; case '-': std::cout<<mins(a,b)<<std::endl; break; case '*': std::cout<<multi(a,b)<<std::endl; break; case '/': std::cout<<divS(a,b)<<std::endl; break; case '^': std::cout<<power_of(a,b)<<std::endl; break; } case 'B': readme(); break; case 'C': //gelöscht^^ case 'D': exit(0); } Sleep(8888); std::cin.get(); return 0; }Mit freundlichen Grüßen,
DanielEdit:
Sry hab die headerdatei vergessen^^#ifndef MATHE_H #define MATHE_H //Funktionen - Standard void readme() { std::cout<<"----------------------------------"<<"\n"<<"Beschreibung...\n"<<"----------------------------------"<<std::endl<<std::endl; } void close_program() { std::cout<<"\n~ Dieses Programm wird nun beendet ~"<<std::endl; Sleep(5000); exit(0); } //Rechnungsarten int add(int a, int b) { return a + b; } int mins(int a, int b) { return a - b; } int divS(int a, int b) { return a / b; } int multi(int a, int b) { return a * b; } int power_of(int a, int b) { int tmp = 0; while(tmp < b) { ++tmp; a *= a; } return a; } #endifEdit 2: Hab ne funktion gelöscht, war eine Funktion im schlechten Stil^^
-
Danke für deine Antwort!
Ich muss mich jezze nur mal versuchen reinzudenken...
Da ich ja wie gesagt ein ziemlicher Anfänger bin weiß ich bei vielen nicht was du da getan hast!
Ma gucken... Danke schön!^^
-
Crew06ZW schrieb:
Danke für deine Antwort!
Ich muss mich jezze nur mal versuchen reinzudenken...
Da ich ja wie gesagt ein ziemlicher Anfänger bin weiß ich bei vielen nicht was du da getan hast!
Ma gucken... Danke schön!^^
Kein Problem

Ich kanns von mir aus ein bisschen erläutern...
int a, b, myZeichen; std::cin>>a; std::cin>>myZeichen; std::cin>>b;Ich weiß nicht, ob ich es so nach gutem Stil mache, aber is ja hauptsache egal^^
Das könntest du dir so vorstellen:a myZeichen b 12 + 12Also jetzt muss ich nur noch wissen,was ich machen will,wenn myZeichen zbsp. ein "-", "/" oder sonstiges ist.
Dazu schreibe ich einmal ne switch-Anweisung:
switch(myZeichen) { case '+': myAdd(a, b); //Ruft die Funktion myAdd auf.. später mehr dazu break; //aus der Anweisung herausberechen case '-': myMin(a, b); break; default: std::cout<<"Error ..."<<std::endl; }So, das ist nun auch erledigt.
Nun aber brauchen wir die Funktionen dazu:int myAdd(int a, int b) { int summe = a + b; return summe; }int myMin(int a, int b) { int summe = a - b; return summe; }Die Funktionen jedoch solltest du außerhalb von der Funktion "main()" deklarieren od. Definieren:
#include <xxxxxx> //Includes der Datei void xx(int a); //Deklarieren int main() { //... return 0; } void xx(int a) { return a = a + 2; //Definieren der Funktion }Ich hoffe,dass es um einiges klarer wurde

Mit freundlichen Grüßen,
Daniel
-
XP^ schrieb:
int a, b, myZeichen; std::cin>>a; std::cin>>myZeichen; std::cin>>b;Wenn du myZeichen als int deklarierst geht das schief ... das muss schon car sein.
btw: was hast du gegen std::pow() ?
EDIT://
davon abgesehen dass deine Potenzfunktion wohl nicht das erwartete Ergebniss liefert ...
-
Ah.... okay...
Das hilft...
Danke schön!
-
darthdespotism schrieb:
btw: was hast du gegen std::pow() ?
vieles

darthdespotism schrieb:
davon abgesehen dass deine Potenzfunktion wohl nicht das erwartete Ergebniss liefert ...
jo, wirklich gehörts so:
int zahl = 5; int exponent = 2; int sum = 0; for(int i = 0; i != exponent; ++i) { sum = zahl * zahl; // Sollte 25 rauskommen^^ }Crew06ZW schrieb:
Ah.... okay...
Das hilft...
Danke schön!
ich hoffe,dass ich ein wenig helfen konnte

Mit freundlichen Grüßen,
Daniel
-
Türlich! Danke!
Wie habt ihr euch das so alles beigebracht?!
Ich hab eine DVD von Monika Hödl "Jetzt lerne ich C++" und ein Buch
(ISBN 3-82725663-1)...Wie bzw. womit habt ihr euch das beigebracht?
-
Crew06ZW schrieb:
Wie bzw. womit habt ihr euch das beigebracht?
Ich hab mir nach einiger Erfahrung im Objektorientierten mit Delphi "den Stroustrup" (Die C++ Programmiersprache) "gegeben".
-
Crew06ZW schrieb:
Wie bzw. womit habt ihr euch das beigebracht?
Fang lieber mit einer niedrigeren Programmiersprache an, wie zBsp. "Delphi", "Visual Basic" oder von mir aus "Perl".
In C/C++ geht es eher um das Verstehen der Syntax und logisches Denken, als um irgendein "schnelles" Einsteigen in die C++-Programmierung.
Greif lieber zu einer anderen Sprache, das ich nur mein Vorschlag an dich, sonst wirst du in späteren Kapiteln in C++ schwierigkeiten bekommen, die du selbst nicht mehr lösen kannst und die ganze Zeit herumfragst.
Mit freundlichen Grüßen,
Daniel
-
Hallo erstmal bin neu hier und hab auch sofort mit c++ angefangen und ich seh darin überhaupt gar kein Problem. Hab auch mal eine Lösung für den Taschenrechner. Auserdem finde ich das XP viel zu viel Variablen benutzt das ist in größeren Programmen alles Performanceverlust!
#include <iostream> using namespace std; int main() { char zeichen,neustart; int a,b; do { system("cls"); cout<<"Herzlich Willkommen zu deinem Taschenrechner!\n"; cout<<"Addition\t(A)\n"; cout<<"Subtraktion\t(S)\n"; cout<<"Division\t(D)\n"; cout<<"Multiplikation\t(M)\n"; cout<<"Waehlen sie die Rechenart aus!:\t"; cin>>zeichen; cout<<"::::::::::::::::::::::::::::::::::::::::::::::::::\n\n"; switch(zeichen) { case 'A': cout<<"Zahl1:\t"; cin>>a; cout<<"Zahl2:\t"; cin>>b; cout<<"Ihr Ergebniss lautet: "<<a+b<<endl; break; case 'S': cout<<"Zahl1:\t"; cin>>a; cout<<"Zahl2:\t"; cin>>b; cout<<"Ihr Ergebniss lautet: "<<a-b<<endl; break; case 'D': cout<<"Zahl1:\t"; cin>>a; cout<<"Zahl2:\t"; cin>>b; cout<<"Ihr Ergebniss lautet: "<<a/b<<endl; break; case 'M': cout<<"Zahl1:\t"; cin>>a; cout<<"Zahl2:\t"; cin>>b; cout<<"Ihr Ergebniss lautet: "<<a*b<<endl; break; default: cout<<"Falsche Eingabe!"; } cout << endl << endl; cout << "Wollen Sie das Programm neustarten (J)a (N)ein ?\t"; cin >> neustart; }while(neustart=='j' || neustart =='J'); return 0; }
-
Hallo erstmal bin neu hier und hab auch sofort mit c++ angefangen und ich seh darin überhaupt gar kein Problem. Hab auch mal eine Lösung für den Taschenrechner. Auserdem finde ich das XP viel zu viel Variablen benutzt das ist in größeren Programmen alles Performanceverlust!
#include <iostream> using namespace std; int main() { char zeichen,neustart; int a,b; do { system("cls"); cout<<"Herzlich Willkommen zu deinem Taschenrechner!\n"; cout<<"Addition\t(A)\n"; cout<<"Subtraktion\t(S)\n"; cout<<"Division\t(D)\n"; cout<<"Multiplikation\t(M)\n"; cout<<"Waehlen sie die Rechenart aus!:\t"; cin>>zeichen; cout<<"::::::::::::::::::::::::::::::::::::::::::::::::::\n\n"; switch(zeichen) { case 'A': cout<<"Zahl1:\t"; cin>>a; cout<<"Zahl2:\t"; cin>>b; cout<<"Ihr Ergebniss lautet: "<<a+b<<endl; break; case 'S': cout<<"Zahl1:\t"; cin>>a; cout<<"Zahl2:\t"; cin>>b; cout<<"Ihr Ergebniss lautet: "<<a-b<<endl; break; case 'D': cout<<"Zahl1:\t"; cin>>a; cout<<"Zahl2:\t"; cin>>b; cout<<"Ihr Ergebniss lautet: "<<a/b<<endl; break; case 'M': cout<<"Zahl1:\t"; cin>>a; cout<<"Zahl2:\t"; cin>>b; cout<<"Ihr Ergebniss lautet: "<<a*b<<endl; break; default: cout<<"Falsche Eingabe!"; } cout << endl << endl; cout << "Wollen Sie das Programm neustarten (J)a (N)ein ?\t"; cin >> neustart; }while(neustart=='j' || neustart =='J'); return 0; }
-
Wow! Super Programm, spart Variablen und vermeidet unnötigen Schnickschnack. Hab's sofort kompiliert und damit meinen Windowstaschenrechner (calc.exe) ersetzt!
-
Phlow schrieb:
Auserdem finde ich das XP viel zu viel Variablen benutzt das ist in größeren Programmen alles Performanceverlust!
LOL. Ne.
-
XaTrIxX schrieb:
Wow! Super Programm, spart Variablen und vermeidet unnötigen Schnickschnack. Hab's sofort kompiliert und damit meinen Windowstaschenrechner (calc.exe) ersetzt!
Wtf?!