char Textzeile[10];
int rechne (char *param)
{
int erg;
int i;
int k=0;
char szHilf[5];
char* operanten;
int operantenAnz=0;
int *werte;
int werteAnz=0;
//operanten=(char *) malloc (sizeof(char));
operanten= new char; // new ersetzt malloc
//werte = (int *) malloc (sizeof(int));
werte = new int; // new ersetzt malloc
//String zerlegen
for(i=0; i<strlen(param); i++)
{
if (param[i] >=48 && param[i] <=57)
{
//es ist eine Zahl
szHilf[k]=param[i];
k++;
if (param[i+1] < 48 || param[i+1] > 57)
{
//Zahl ist fertig
szHilf[k] = '\0';
k=0;
werte = (int *) realloc (werte, (werteAnz+1)*sizeof(int));
sscanf(szHilf, "%d", &werte[werteAnz]);
werteAnz++;
}
}
else if (param[i] == '+' || param[i] == '-' || param[i] == '*' || param[i] == '/')
{
//Operation gefunden
operanten = (char *) realloc(operanten, (operantenAnz+1)*sizeof(char));
operanten[operantenAnz]=param[i];
operantenAnz++;
}
}
//Ausrechnen
erg=werte[0];
for(i=1;i<werteAnz;i++)
{
switch(operanten[i-1])
{
case '+':
erg= erg + werte[i];
break;
case '-':
erg= erg - werte[i];
break;
case '*':
erg= erg * werte[i];
break;
case '/':
erg= erg / werte[i];
break;
}
}
//free (werte);
delete (werte); //delete ersetzt free
//free (operanten);
delete (operanten); //delete ersetzt free
return erg;
}
int main()
{
cout<<"Eingabe: ";
cin>>Textzeile;
cout<<endl<<"Das Ergebnis lautet: "<< rechne(Textzeile);
}