004
15.09.2004, 11:58 Uhr
deatho77
|
C++: |
#include <iostream> #include <string>
using namespace std;
//-------Löschen der Leerstellen im Funktionsterm---------------------
void loeschLeerstellen(string &func) { while (func.find(" ") != func.rfind(" ")) func.erase(func.find(" "), 1);
func.erase(func.find(" "), 1); }
//--Positonen des jeweils ersten Operatorzeichens vom gesuchten Typ--
int operatorPosition1 (string func, char opZeich) { int opPos1 = 100;
if ( func.find(opZeich) < 100) opPos1 = func.find(opZeich); return opPos1; }
//--Positonen des jeweils zweiten Operatorzeichens vom gesuchten Typ--
int operatorPosition2 (string func, char opZeich) { int opPos2 = 100;
if ( func.find(opZeich) != func.rfind(opZeich)) opPos2 = func.find(opZeich, (func.find(opZeich)+1) ); return opPos2; }
//--Finden des linken Operanden---------------------------------------
int findeOperandLinks (string func, int pos) { int leftOp = 0; int i,k; i = k =1; while(func[pos-i]>47 && func[pos-i]<58) { leftOp = leftOp + (func[pos-i]-48) * k; k = k*10; i++; } return leftOp; }
//--Finden des rechten Operanden------------------------------------
int findeOperandRechts (string func, int pos) { int rightOp = 0; int i = 0; int k = 1;
while(func[pos+i+1]>47 && func[pos+i+1]<58) i++;
while(i>0) { rightOp = rightOp + (func[pos+i]-48) * k; k = k*10; i--; }
return rightOp; }
//--Berechnung und ersetzen eines Terms im String---------------
void ersetzProdukt(string &func, int opPos) { int startPos, endPos, opLinks, opRechts;
char opTyp = func[opPos];
opLinks = findeOperandLinks(func, opPos); opRechts = findeOperandRechts(func, opPos);
startPos = opPos - deziStellen(opLinks); endPos = opPos + deziStellen(opRechts);
func.erase(startPos, endPos-startPos+1); //Hier ist das Problem!!!
}
int main()
{
string test("16 + 9 81 *2 0+4");
loeschLeerstellen(test);
int mul1 = operatorPosition1(test, '*');
ersetzProdukt(test, mul1);
cout << "Formel: " << test << endl << "1.Muliplikationsoperator an Stelle: " << mul1 << endl;
return 0;
}
|
-- Mfg deatho77
Es gibt keine Probleme nur Lösungen!!! |