#include "calculator.h"
#include "ui_calculator.h"
#include <QDebug>
#include <math.h>
#include "dialog.h"
Calculator::Calculator(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::Calculator)
{
ui->setupUi(this);
b=true;
}
Calculator::~Calculator()
{
delete ui;
}
void Calculator::on_one_clicked()
{
ui->express_lineEdit->insert(tr("1"));
}
void Calculator::on_two_clicked()
{
ui->express_lineEdit->insert(tr("2"));
}
void Calculator::on_three_clicked()
{
ui->express_lineEdit->insert(tr("3"));
}
void Calculator::on_four_clicked()
{
ui->express_lineEdit->insert(tr("4"));
}
void Calculator::on_five_clicked()
{
ui->express_lineEdit->insert(tr("5"));
}
void Calculator::on_six_clicked()
{
ui->express_lineEdit->insert(tr("6"));
}
void Calculator::on_seven_clicked()
{
ui->express_lineEdit->insert(tr("7"));
}
void Calculator::on_eight_clicked()
{
ui->express_lineEdit->insert(tr("8"));
}
void Calculator::on_nine_clicked()
{
ui->express_lineEdit->insert(tr("9"));
}
void Calculator::on_zero_clicked()
{
ui->express_lineEdit->insert(tr("0"));
}
void Calculator::on_operAdd_pushButton_clicked()
{
ui->express_lineEdit->insert(tr("+"));
}
void Calculator::on_operSubtract_pushButton_clicked()
{
ui->express_lineEdit->insert(tr("-"));
}
void Calculator::on_operMultiply_pushButton_clicked()
{
ui->express_lineEdit->insert(tr("*"));
}
void Calculator::on_operDivide_pushButton_clicked()
{
ui->express_lineEdit->insert(tr("/"));
}
void Calculator::on_point_pushButton_clicked()
{
ui->express_lineEdit->insert(tr("."));
}
void Calculator::on_backSpace_clicked()
{
ui->express_lineEdit->backspace();
}
void Calculator::on_lBracket_clicked()
{
ui->express_lineEdit->insert(tr("("));
}
void Calculator::on_rBracket_clicked()
{
ui->express_lineEdit->insert(tr(")"));
}
void Calculator::on_clear_clicked()
{
ui->express_lineEdit->clear();
ui->result_lineEdit->clear();
}
void Calculator::on_sin_clicked()
{
ui->express_lineEdit->insert(tr("sin()"));
}
void Calculator::on_cos_clicked()
{
ui->express_lineEdit->insert(tr("cos()"));
}
void Calculator::on_tan_clicked()
{
ui->express_lineEdit->insert(tr("tan()"));
}
void Calculator::on_rank_clicked()
{
ui->express_lineEdit->insert(tr("!"));
}
void Calculator::on_pushButton_clicked()
{
ui->express_lineEdit->insert(tr("^"));
}
void Calculator::on_log_clicked()
{
ui->express_lineEdit->insert(tr("log()"));
}
void Calculator::on_ln_clicked()
{
ui->express_lineEdit->insert(tr("ln()"));
}
void Calculator::on_pushButton_3_clicked()
{
ui->express_lineEdit->insert(tr("sqrt()"));
}
void Calculator::on_result_pushButton_clicked()
{
QString m=ui->express_lineEdit->text();
m=count(m);
if(!b)
{
b=true;
ui->result_lineEdit->setText(" ");
ui->label->setText("sb fuck your mother");
}
else
{
ui->result_lineEdit->setText(m);
}
}
QString Calculator::count(QString m)
{
if(m.contains("sin")||m.contains("cos")||m.contains("tan"))
{
//qDebug()<<"1213132";
QString str;
//m="#"+m+"#";
int start=0,end=0,n=0;
for(int i=0;i<m.length();i++)
{
if(m.at(i)=='i'||m.at(i)=='o'||m.at(i)=='a')
{
n++;
start=i;
}
if(n==1&&m.at(i)==')')
{
end=i;
}
if(start!=end&&end!=0)
{
qDebug()<<"jinru";
QString temp1,temp2,temp;
temp=m.mid(start+3,end-start-3);
temp1=count(temp);
temp2=m.mid(start-1,3);
m.remove(start-1,end-start+2);
qDebug()<<m;
qDebug()<<temp1<<temp2;
str=count(temp1,temp2);
qDebug()<<str;
if(end-start+1==i)
{
m.insert(start-1,str);
return count(m);
}
else
//if(end-start+1!=i)
{
qDebug()<<"dddsdf";
if(str.at(0)=='-'&&(m.at(start-2)=='+'||m.at(start-2)=='-'))
{
qDebug()<<"d"<<str;
str=str.mid(1);
m.insert(start-1,str);
qDebug()<<"dd"<<m;
if(m.at(start-2)=='-')
{
m.remove(start-2,1);
if(start-2!=0)
{
m.insert(start-2,'+');
}
}
}
else
{
m.insert(start-1,str);
}
return count(m);
}
}
}
}
else if(m.contains("log"))
{
QString str;
//m="#"+m+"#";
int start=0,end=0,n=0;
for(int i=0;i<m.length();i++)
{
if(m.at(i)=='o')
{
n++;
start=i;
}
if(n==1&&m.at(i)==')')
{
end=i;
}
if(start!=end&&end!=0)
{
qDebug()<<"jinru";
QString temp1,temp2,temp;
temp=m.mid(start+3,end-start-3);
temp1=count(temp);
temp2=m.mid(start-1,3);
m.remove(start-1,end-start+2);
qDebug()<<m;
qDebug()<<temp1<<temp2;
str=count(temp1,temp2);
qDebug()<<str;
if(end-start+1==i)
{
return count(str);
}
else
{
qDebug()<<"dddsdf";
if(str.at(0)=='-'&&(m.at(start-2)=='+'||m.at(start-2)=='-'))
{
qDebug()<<"dddsdf";
qDebug()<<"d"<<str;
str=str.mid(1);
m.insert(start-1,str);
qDebug()<<"dd"<<m;
if(m.at(start-2)=='-')
{
m.remove(start-2,1);
if(start-2!=0)
{
m.insert(start-2,'+');
}
}
}
else
{
m.insert(start-1,str);
}
return count(m);
}
}
}
}
else if(m.contains("ln"))
{
QString str;
int start=0,end=0,n=0;
for(int i=0;i<m.length();i++)
{
if(m.at(i)=='l')
{
n++;
start=i;
}
if(n==1&&m.at(i)==')')
{
end=i;
}
if(start!=end&&end!=0)
{
QString temp1,temp2,temp;
temp=m.mid(start+3,end-start-3);
temp1=count(temp);
temp2=m.mid(start,2);
str=count(temp1,temp2);
m.remove(start,end-start+3);
qDebug()<<temp1<<temp2;
qDebug()<<str;
if(start==0)
{
qDebug()<<"ok";
return count(str);
}
else
- 1
- 2
前往页