From kde-commits Wed Sep 01 00:08:14 2004 From: Fredrik Edemar Date: Wed, 01 Sep 2004 00:08:14 +0000 To: kde-commits Subject: kdeedu/kmplot/kmplot Message-Id: <20040901000814.7D9641CC2 () office ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-commits&m=109399730219172 CVS commit by fedemar: Better auto-correction of expressions: x(x+1)5=x*(x+1)*5 CCMAIL:kdmoeller@foni.net CCMAIL:bmlmessmer@web.de M +33 -30 parser.cpp 1.28 --- kdeedu/kmplot/kmplot/parser.cpp #1.27:1.28 @@ -141,11 +141,11 @@ double Parser::eval(QString str) str.remove(" " ); //insert '*' when it is needed - for(int i=0; i < (int)str.length();i++) - { - if( (str.at(i).isNumber() || str.at(i).category()==QChar::Letter_Uppercase )&& ( str.at(i-1).isLetter() || str.at(i-1) == ')' ) ) + QChar ch; + for(uint i=0; i < str.length();i++) { + ch = str.at(i); + if( (ch.isNumber() || ch.category()==QChar::Letter_Uppercase )&& ( str.at(i-1).isLetter() || str.at(i-1) == ')' ) || (ch.isLetter() && str.at(i-1)==')') ) str.insert(i,'*'); - } - else if( (str.at(i).isNumber() || str.at(i) == ')' || str.at(i).category()==QChar::Letter_Uppercase) && ( str.at(i+1).isLetter() || str.at(i+1) == '(' ) ) + else if( (ch.isNumber() || ch == ')' || ch.category()==QChar::Letter_Uppercase) && ( str.at(i+1).isLetter() || str.at(i+1) == '(' ) || (ch.isLetter() && str.at(i+1)=='(') ) { str.insert(i+1,'*'); @@ -153,4 +153,5 @@ double Parser::eval(QString str) } } + if ( str.contains('y')!=0) { @@ -265,9 +266,11 @@ int Parser::addfkt(QString str) //insert '*' when it is needed - for(int i=p1+3; i < (int) str.length();i++) + QChar ch; + for(uint i=p1+4; i < str.length();i++) { - if( (str.at(i).isNumber() || str.at(i).category()==QChar::Letter_Uppercase )&& ( str.at(i-1).isLetter() || str.at(i-1) == ')' ) ) + ch = str.at(i); + if( (ch.isNumber() || ch.category()==QChar::Letter_Uppercase )&& ( str.at(i-1).isLetter() || str.at(i-1) == ')' ) || (ch.isLetter() && str.at(i-1)==')') ) str.insert(i,'*'); - else if( (str.at(i).isNumber() || str.at(i) == ')' || str.at(i).category()==QChar::Letter_Uppercase) && ( str.at(i+1).isLetter() || str.at(i+1) == '(' ) ) + else if( (ch.isNumber() || ch == ')' || ch.category()==QChar::Letter_Uppercase) && ( str.at(i+1).isLetter() || str.at(i+1) == '(' ) || (ch.isLetter() && str.at(i+1)=='(') ) { str.insert(i+1,'*'); @@ -351,11 +354,11 @@ void Parser::reparse(int ix) //insert '*' when it is needed - for(int i=p1+3; i < (int) str.length();i++) - { - if( (str.at(i).isNumber() || str.at(i).category()==QChar::Letter_Uppercase )&& ( str.at(i-1).isLetter() || str.at(i-1) == ')' ) ) + QChar ch; + for(uint i=p1+4; i < str.length();i++) { + ch = str.at(i); + if( (ch.isNumber() || ch.category()==QChar::Letter_Uppercase )&& ( str.at(i-1).isLetter() || str.at(i-1) == ')' ) || (ch.isLetter() && str.at(i-1)==')') ) str.insert(i,'*'); - } - else if( (str.at(i).isNumber() || str.at(i) == ')' || str.at(i).category()==QChar::Letter_Uppercase) && ( str.at(i+1).isLetter() || str.at(i+1) == '(' ) ) + else if( (ch.isNumber() || ch == ')' || ch.category()==QChar::Letter_Uppercase) && ( str.at(i+1).isLetter() || str.at(i+1) == '(' ) || (ch.isLetter() && str.at(i+1)=='(') ) { str.insert(i+1,'*');