⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fractioninstruction.cpp

📁 Trolltech公司发布的图形界面操作系统。可在qt-embedded-2.3.7平台上编译为嵌入式图形界面操作系统。
💻 CPP
字号:
/************************************************************************ Copyright (C) 2000 Trolltech AS.  All rights reserved.**** This file is part of Qtopia Environment.**** This file may be distributed and/or modified under the terms of the** GNU General Public License version 2 as published by the Free Software** Foundation and appearing in the file LICENSE.GPL included in the** packaging of this file.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.**** See http://www.trolltech.com/gpl/ for GPL licensing information.**** Contact info@trolltech.com if any conditions of this licensing are** not clear to you.************************************************************************/#include "fractioninstruction.h"#include "doubledata.h"// Automatic type castingData *BaseFractionInstruction::eval(Data *d) {    fractionNum = (FractionData *)num;    Data *ret = doEval((FractionData *)d);    FractionData *fRet = (FractionData *)ret;    fRet->set(fRet->getNumerator(),fRet->getDenominator());    return ret;}BaseFractionInstructionDescription::BaseFractionInstructionDescription()    : InstructionDescription() {	type = typeOne = typeTwo = "Fraction"; // No tr    }// FactoryData * iFractionFactory::eval(Data * /* d */) {    FractionData *ret = new FractionData();    ret->clear();    return ret;}FractionFactory::FractionFactory():BaseFractionInstructionDescription() {    instructionName = "Factory"; // No tr};// CopyData *iFractionCopy::eval(Data *d) {    FractionData *ret = new FractionData();    ret->clear();    ret->set(((FractionData *)d)->getNumerator(),	    ((FractionData *)d)->getDenominator());    return ret;};FractionCopy::FractionCopy():BaseFractionInstructionDescription() {    instructionName = "Copy"; // No tr};// Conversion functionsData * iConvertDoubleFraction::eval(Data *d) {    FractionData *ret = new FractionData();    double target,tmp,upper,lower;    target = ((DoubleData *)d)->get();    if (target == 0)	ret->set(0,1);    else {	upper = lower = 1;	tmp = 0;	while (tmp != target) {	    if (tmp < target)		upper++;	    else {		lower++;		upper = target * lower;	    }	    tmp = upper / lower;	}	ret->set(upper,lower);    }    return ret;}ConvertDoubleFraction::ConvertDoubleFraction():InstructionDescription() {    instructionName = "Convert"; // No tr    typeOne = "Double"; // No tr    typeTwo = "Fraction"; // No tr}// Mathematical functionsData * iAddFractionFraction::doEval (FractionData *f) {    int nn,nd,fn,fd;    nn = fractionNum->getNumerator();    nd = fractionNum->getDenominator();    fn = f->getNumerator();    fd = f->getDenominator();    fractionNum->set(nn * fd + nd * fn, nd * fd);    return fractionNum;}Data * iSubtractFractionFraction::doEval (FractionData *f) {    int nn = fractionNum->getNumerator();    int nd = fractionNum->getDenominator();    int fn = f->getNumerator();    int fd = f->getDenominator();    fractionNum->set(nn * fd - nd * fn, nd * fd);    return fractionNum;}Data * iMultiplyFractionFraction::doEval (FractionData *f) {    int nn = fractionNum->getNumerator();    int nd = fractionNum->getDenominator();    int fn = f->getNumerator();    int fd = f->getDenominator();    fractionNum->set(nn * fn, nd * fd);    return fractionNum;}Data * iDivideFractionFraction::doEval (FractionData *f) {    int nn = fractionNum->getNumerator();    int nd = fractionNum->getDenominator();    int fn = f->getNumerator();    int fd = f->getDenominator();    fractionNum->set(nn * fd, nd * fn);    return fractionNum;}AddFractionFraction::AddFractionFraction():BaseFractionInstructionDescription() {    instructionName = "Add"; // No tr    precedence = 10;}SubtractFractionFraction::SubtractFractionFraction():BaseFractionInstructionDescription() {    instructionName = "Subtract"; // No tr    precedence = 10;}MultiplyFractionFraction::MultiplyFractionFraction():BaseFractionInstructionDescription() {    instructionName = "Multiply"; // No tr    precedence = 15;}DivideFractionFraction::DivideFractionFraction():BaseFractionInstructionDescription() {    instructionName = "Divide"; // No tr    precedence = 15;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -