Tobias K.
Erfahrenes Mitglied
moin
Hier ein funktionierender Code:
Ich habe ein paar Änderungen vorgenommen:
1. deine while Abbruchbedingung geändert.
2. deine ganzen ifs durch eine switch-Anweisung ersetzt.
3. dein menu = atoi (szinput); rausgenommen weil überflüssig
4. mein Funktion ist jetzt nicht mehr von Typ int sondern float und gibt auch ein float zurück, so dass auch mit Kommazahlen gerechnet werden kann.
mfg
umbrasaxum
Hier ein funktionierender Code:
Code:
#include <iostream>
#include <cmath>
#include <conio.h>
#include <windows.h>
using namespace std;
float umwandeln(char *szString)
{
for( int i=0; i<strlen(szString); i++)
{
if(szString[i] == ',')
{
szString[i] = '.';
continue;
}
if(!isdigit(szString[i]))
return -1;
}
return atof(szString);
}
int main (int argc, char *argv[])
{
char menu;
while(1)
{
system("cls");
cout << " Konsolen Taschenrechner (c) Fredyy" << endl;
cout << " 1) Addition"<<endl;
cout << " 2) Subtration"<<endl;
cout << " 3) Multiplikation"<<endl;
cout << " 4) Division"<<endl;
cout << " 5) Radizieren"<<endl;
cout << " 6) Potenzieren"<<endl;
cout << " 7) Ende"<<endl;
cout << " Bitte geben Sie einen Menuepunkt ein: ";
cin>>menu;
switch(menu)
{
case '1':
{
char sum2[20];
char sum1[20];
float x,y;
cout << "\n 1) Addition"<<endl;
cout << " Bitte geben sie den ersten Summanden ein : ";
cin >> sum1;
cout << " Bitte geben sie den zweiten Summanden ein : ";
cin >> sum2;
y=umwandeln(sum2);
x=umwandeln(sum1);
cout << "\a Die Summe ist: " << (x+y)<< endl;
getch();
break;
}
case '2':
{
float min;
float sub;
cout << "\n 2) Subtration"<<endl;
cout << " Bitte geben sie den Minuend ein : ";
cin >> min;
cout << " Bitte geben sie den Subtrahend ein : ";
cin >> sub;
cout << "\a Die Differenz ist: " << (min-sub) << endl;
getch();
break;
}
case '3':
{
float fak1;
float fak2;
cout << "\n 3) Multiplikation"<<endl;
cout << " Bitte geben sie den ersten Faktor ein : ";
cin >> fak1;
cout << " Bitte geben sie den zweiten Faktor ein : ";
cin >> fak2;
cout << "\a Das Produkt ist: " << (fak1*fak2) << endl;
getch();
break;
}
case '4':
{
float divi1;
float divi2;
cout << "\n 4) Division"<<endl;
cout << " Bitte geben sie den Divident ein : ";
cin >> divi1;
cout << " Bitte geben sie den Divisor ein : ";
cin >> divi2;
cout << "\a Der Quotient ist: " << (divi1/divi2) << endl;
getch();
break;
}
case '5':
{
float radi;
cout << "\n 5) Radizieren"<<endl;
cout << " Bitte geben sie den Radikant ein : ";
cin >> radi;
if( radi >= 1 )
{
float y ;
y = sqrt( radi ) ;
cout << "\a Wurzel der Zahl ist : " << y << endl;
}
else
{
cout << "\a Der Radikant darf nicht 0 oder negativ sein."<< endl;
}
getch();
break;
}
case '6':
{
float base;
float expo;
cout << "\n 6) Potenzieren"<<endl;
cout << " Bitte geben sie die Basis ein : ";
cin >> base;
cout << " Bitte geben sie den Exponenten ein : ";
cin >> expo;
cout << "\a Die Potenz ist: " << pow(base,expo) << endl;
getch();
break;
}
default:
return 0;
}
}
return 0;
}
Ich habe ein paar Änderungen vorgenommen:
1. deine while Abbruchbedingung geändert.
2. deine ganzen ifs durch eine switch-Anweisung ersetzt.
3. dein menu = atoi (szinput); rausgenommen weil überflüssig
4. mein Funktion ist jetzt nicht mehr von Typ int sondern float und gibt auch ein float zurück, so dass auch mit Kommazahlen gerechnet werden kann.
mfg
umbrasaxum
Zuletzt bearbeitet: