void fractin::on_simplify_clicked() { int d=0,c=0; if(text.isEmpty()){ text="格式不支持!"; ui->show->setText(text); return; } QChar ch=text[0]; text.remove(0,1); if(!ch.isDigit()){ text="格式不支持!"; ui->show->setText(text); return; } while(ch.isDigit()&&!text.isEmpty()){ d=d*10+ch.unicode()-48; ch=text[0]; text.remove(0,1); } if(text.isEmpty()||ch!='|'){ text="格式不支持!"; ui->show->setText(text); return; } ch=text[0]; text.remove(0,1); if(!ch.isDigit()){ text="格式不支持!"; ui->show->setText(text); return; } while(ch.isDigit()&&!text.isEmpty()){ c=c*10+ch.unicode()-48; ch=text[0]; text.remove(0,1); } if(ch.isDigit()){ c=c*10+ch.unicode()-48; Fraction f; f.Sim(d,c); text=QString::number(f.getnumer(),10)+"|"+QString::number(f.getdenom(),10); ui->show->setText(text); return; } else{ text="格式不支持!"; ui->show->setText(text); return; } }
int main() { Fraction fra; fra.Sim(2,-108); fra.Pri(); fra.Add(6,5,2,9); fra.Pri(); cout<<fra.Swi()<<endl; fra.Sub(2,5,-1,5); fra.Pri(); fra.Mul(6,2,0,5); fra.Pri(); fra.Rec(3,-2); fra.Pri(); fra.Div(3,6,0,4); return 0; }
void fractin::on_switchButton_clicked() { int d=0,c=0; if(text.isEmpty()){ text="格式不支持!"; ui->show->setText(text); return; } QChar ch=text[0]; text.remove(0,1); if(!ch.isDigit()){ text="格式不支持!"; ui->show->setText(text); return; } while(ch.isDigit()&&!text.isEmpty()){ d=d*10+ch.unicode()-48; ch=text[0]; text.remove(0,1); } if(ch.isDigit()){ d=d*10+ch.unicode()-48; text=QString::number(d,10)+"|"+QString::number(1,10); ui->show->setText(text); return; } if(ch=='|'){ ch=text[0]; text.remove(0,1); if(!ch.isDigit()){ text="格式不支持!"; ui->show->setText(text); return; } while(ch.isDigit()&&!text.isEmpty()){ c=c*10+ch.unicode()-48; ch=text[0]; text.remove(0,1); } if(ch.isDigit()){ c=c*10+ch.unicode()-48; float l=(float)d/c; text=QString("%1").arg(l); ui->show->setText(text); return; } else{ text="格式不支持!"; ui->show->setText(text); return; } } if(ch=='.'){ c=pow(10,text.length()); ch=text[0]; text.remove(0,1); if(!ch.isDigit()){ text="格式不支持!"; ui->show->setText(text); return; } while(ch.isDigit()&&!text.isEmpty()){ d=d*10+ch.unicode()-48; ch=text[0]; text.remove(0,1); } if(ch.isDigit()){ d=d*10+ch.unicode()-48; Fraction f; f.Sim(d,c); text=QString::number(f.getnumer(),10)+"|"+QString::number(f.getdenom(),10); ui->show->setText(text); return; } else{ text="格式不支持!"; ui->show->setText(text); return; } } }