[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: kdeedu/kmplot/kmplot
From: Fredrik Edemar <f_edemar () linux ! se>
Date: 2004-09-01 0:08:14
Message-ID: 20040901000814.7D9641CC2 () office ! kde ! org
[Download RAW message or body]
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,'*');
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic