*类的定义*
*功能:实现两数相加*
********************************/
#ifndef TEMP_H//头文件卫士 防止文件被重复引入
#define TEMP_H
#include <QLineEdit> //引入单行文本框所在头文件
#include <QPushButton> //引入按钮所在头文件
#include <QLabel> //引入标签所在头游缓租文件
#include <QDialog> //引入对话框所在头文件
#include <QBoxLayout> //引入布局器所在头文件
#include <QString> //引入字符串所在头文件 字符转换用
class d_window : public QDialog//qdialog的派生类
{
Q_OBJECT//下面要使用信号和槽
protected://保护成员 无用 最终会被转换成public
QLineEdit* d_firstTxt //声明单行文本框 用于接受加数
QLineEdit* d_secondTxt //声明单行文本框 用于接受被加数
QLineEdit* d_resultTxt //声明单行文本框 用于接受结果
QLabel* d_addLab //声明标签 用于显示运算符
QPushButton* d_equalBtn //声明按钮 即=用来计算
QHBoxLayout* d_lay //声明水平布局器 用于布局以上组神兆件
public://公有接口
d_window(QWidget* parent) //构造函数 将覆盖基类的构造函数
private slots://声明槽函数
void d_add() //槽函数 计算结果
} /哪郑/类定义结束
#endif//宏定义结束
复制代码tempGo.h(类的实现) /********************************
*类的实现*
********************************/
#ifndef TEMP_H//头文件卫士 防止重复引入头文件
#include "temp.h"//引入类得声明文件
#endif
d_window::d_window(QWidget* parent=0) : QDialog(parent)//类的构造函数的实现
{
this->d_firstTxt=new QLineEdit //实例化文本框 加数
this->d_secondTxt=new QLineEdit //实例化文本框 被加数
this->d_resultTxt=new QLineEdit //实例化文本框 结果
this->d_addLab=new QLabel(QObject::tr("+")) //实例化标签 运算符
this->d_equalBtn=new QPushButton(QObject::tr("=")) //实例化按钮 结果=
this->d_lay=new QHBoxLayout //实例化水平布局器
this->d_lay->addWidget(this->d_firstTxt) //开始布局 即将要布局的组件添加到布局管理器
this->d_lay->addWidget(this->d_addLab)
this->d_lay->addWidget(this->d_secondTxt)
this->d_lay->addWidget(this->d_equalBtn)
this->d_lay->addWidget(this->d_resultTxt)
setLayout(this->d_lay) //为对话框设置布局管理器
setWindowTitle(QObject::tr("demo")) //设置对话框标题
setMaximumSize(400,50) //设置对话框最大大小
setMinimumSize(400,50) //设置对话框最小大小
this->d_equalBtn->setMaximumSize(50,20) //设置=按钮的最大大小
this->d_equalBtn->setMinimumSize(50,20) //设置=按钮的最小大小
QObject::connect(this->d_equalBtn,SIGNAL(clicked()),SLOT(d_add()))
//将按钮的clicked信号连接到d_add()槽函数
}//构造函数定义结束
void d_window::d_add()//槽函数实现
{
double a=(this->d_firstTxt->text()).toDouble() //获取加数
double b=(this->d_secondTxt->text()).toDouble()//获取被加数
double result=a+b //计算
this->d_resultTxt->setText(QString::number(result))//显示运算结果
}//槽函数定义结束
复制代码main.cpp(测试)) /********************************
*调用类*
*功能:测试类的功能*
********************************/
#ifndef TEMPGO_H//头文件卫士 防止文件被重复引入
#include "tempGo.h"//引入类所在的头文件
#endif
#include <QApplication> //引入程序所需的头文件
int main(int argc,char** argv)//程序的入口函数
{
QApplication d_app(argc,argv) //实例化程序对象
d_window d_win //实例化类
d_win.show() //调用类的成员函数 显示
return d_app.exec() //进入消息循环
}//函数返回 程序结束
复制代码
除法Qt编写的大数据的运算旦手孝,包括基础的四则运算,阶乘
流浪者之路
原创
关注
1点赞·1300人阅读
编写背景:在平常的编程中我们会遇到很多的大数据,这些数据的值超出了整型int的最大范围;甚至超过了long long的数据范围;遇到这种情况,我们的数据处理就会变的十分的麻烦。因为我们不可以使用整型变量来表示这些值当然也就不可使用四则运算来,就算这些值的加减乘除的算术。当遇到这种情况的时候,我么就需要来使用字符串来表示一个数 ;
当然,也模稿要使用字符串来进行相应的四则运算了;
环境:QT编译器; 使用语言:C++;
基本思路:
加法和减法是最基础的算法,要想实现乘法和除法的运算必定要先实现加法和减法的运算;
加法:
数据的加法是以小数点为中轴对齐进行计算;整数部分是以个位数开始,相加大于十就向前进一位;小数部分薯差先把两个字符串补齐到一样长,然后按照整数部分加法进行计算;先计算小数部分,后计算整数部分;
减法:
数据的减法,依旧是先计算小数,后计算整数,把数据每一个单数转换成整型;减去减数每一个单数的整型;如果不够,则借一位;
乘法:
用两个for循环,内循环是循环被乘数,外循环为循环乘数;内循环每次取被乘数的一位,乘以外循环的一位数;
最后把每次外循环所得到的数相加,
除法:
由于除数和被除数都是大数据,所以,每次取除数长度的被除数与除数相除;而所取的被除数是用乘法循环0-9进行判断,得到单个的商;
单个的商乘以除数,与取得指定长度被除数相减;得到的差插入到剩下的被除数前
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)