(1) 本人角色

我在本次结对项目中担任驾驶员角色。

结对伙伴杨宁为领航员。

(1) 系统实现过程

生成式子的功能:

       先写好生成操作数和包含1~3个操作符的式子的四个函数,再通过一个函数一起调用,随机生成带括号的式子。除号和乘号÷、×先用*、/代替C语言里面的除号和乘号÷、×不能直接从文件读出来,所以就放弃了从文件里读出来计算的想法,改为生成的时候,把式子放进数组再来计算,计算不小于0,才把数组存进文件,存进文件的时候把*、/这两个符号替换成÷、×。

计算功能:

       通过每个输入类型的不同进行分类计算。

比较题目文件,判断答案文件中的对错:

       这个可以说是取巧了一下,因为文件的生成,帮随着答案的生成,所以比较的是标准答案文件和新答案文件。原本是想从文件里面再读出式子拿来计算,但是写进文件后有了符号÷、×,但是那两个符号÷、×读出来会出错,因为他们不是普通字符型数据的长度。

(2) 算法设计

        设计一个窗口界面。根据功能分别设置操作指令。其中功能有“输入算式数量、输入最大数、输出运算个数、输入运算符、选择数字类型、选择是否需要括号 、请选择输出形式”。

         通过函数分成很多类型进行挑选运行:整形数无括号 intno(int n);整形数有括号intyes(int n);生成整数四则运算 intys();小数无括号floatno(int n);小数有括号floatyes(int n);生成小数四则运算doubleys()。

         其中随机数使用了rand进行随机输出,符号也进行随机输出。在生成四则运算时会根据界面的判断是否有括号以及是否数字类型。在主函数中设置一个随机种子,每次运行都能保证随机种子不同。

(4)结对工作照片:

 

(5)源代码:

  1 #include<iostream>
#include<stdlib.h>
#include<cstring>
#include<time.h>
#include<cmath>
#include<fstream>
int num; //算式数量
int imax;  //最大数
int nums;  //因子个数
int symbol;  //用户输入的运算符
int kuohao; //是否有括号
int xiaoshu;  //是否有小数
int shuchu;//输出形式
char fuhao[4]={'+','-','*','/'};  //运算符
using namespace std;
ofstream outfile;//数据写入文件

void intno(int n)//整形数无括号
{
    int i,a;
    a=(rand()%imax)+1;//得到一个1到imax的随机数a
    cout<<a;
    outfile<<a;
    for(i=1;i<nums;i++)
    {
        a=(rand()%imax)+1;//得到一个1到imax的随机数a
        cout<<fuhao[n-1]<<a;
        outfile<<fuhao[n-1]<<a;
    }
    cout<<"="<<endl;
    outfile<<"="<<endl;
}
void intyes(int n)//整形数有括号
{
    int k,i,a;
    n--;
    k=rand()%2;//随机生成"0"或"1"
    a=(rand()%imax)+1;//得到一个1到imax的随机数a
    if(k==0)
    {
        cout<<a;
        outfile<<a;
        a=(rand()%imax)+1;
        for(i=1;i<nums;i++)
        {
            a=(rand()%imax)+1;
            cout<<fuhao[n];
            outfile<<fuhao[n];
            k=rand()%2;
            if(k==1)
            {
                if(nums-i==1)
                {
                    cout<<a;
                    outfile<<a;
                    continue;
                }
                cout<<"("<<a<<fuhao[n];
                outfile<<"("<<a<<fuhao[n];
                a=(rand()%imax)+1;
                cout<<a<<")";
                outfile<<a<<")";
                i++;
            }
            else
            {
                cout<<a;
                outfile<<a;
            }
        }
        cout<<"="<<endl;
        outfile<<"="<<endl;
    }
    else
    {
        cout<<"("<<a<<fuhao[n];
        outfile<<"("<<a<<fuhao[n];
        a=(rand()%imax)+1;
        cout<<a<<")";
        outfile<<a<<")";
        for(i=2;i<nums;i++)
        {
            a=(rand()%imax)+1;
            cout<<fuhao[n];
            outfile<<fuhao[n];
            k=rand()%2;
            if(k==1)
            {
                if(nums-i==1)
                {
                    cout<<a;
                    outfile<<a;
                    continue;
                }
                cout<<"("<<a<<fuhao[n];
                outfile<<"("<<a<<fuhao[n];
                a=(rand()%imax)+1;
                cout<<a<<")";
                outfile<<a<<")";
                i++;
            }
            else
            {
                cout<<a;
                outfile<<a;
            }
        }
        cout<<"="<<endl;
        outfile<<"="<<endl;
    }
}

void intys()//生成整数四则运算
{
	int a;
	int x,i;
	if(kuohao==1)//不需要括号
	{
		if(symbol==1||symbol==2||symbol==3||symbol==4)//执行"+"运算
		{
		    intno(symbol);
		}
		else if(symbol==5)//执行混合运算
		{
		    a=(rand()%imax)+1;//得到一个1到imax的随机数a
		    cout<<a;
            for(i=1;i<nums;i++)
            {
                x=rand()%4;//随机得到"+" "-" "*" "/"中的一个
                a=(rand()%imax)+1;//得到一个1到imax的随机数a
                cout<<fuhao[x]<<a;
                outfile<<fuhao[x]<<a;
            }
            cout<<"="<<endl;
            outfile<<"="<<endl;
		}
	}
	else
	{
	    if(symbol==1||symbol==2||symbol==3||symbol==4)
        {
            intyes(symbol);
        }
        else if(symbol==5)
        {
            int k,i,a;
            k=rand()%2;//随机生成"0"或"1"
            a=(rand()%imax)+1;//得到一个1到imax的随机数a
            if(k==0)
            {
                cout<<a;
                outfile<<a;
                a=(rand()%imax)+1;
                for(i=1;i<nums;i++)
                {
                    x=rand()%4;//随机得到"+" "-" "*" "/"中的一个
                    a=(rand()%imax)+1;
                    cout<<fuhao[x];
                    outfile<<fuhao[x];
                    k=rand()%2;
                    if(k==1)
                    {
                       if(nums-i==1)
                       {
                           cout<<a;
                           outfile<<a;
                           continue;
                       }
                       x=rand()%4;//随机得到"+" "-" "*" "/"中的一个
                       cout<<"("<<a<<fuhao[x];
                       outfile<<"("<<a<<fuhao[x];
                       a=(rand()%imax)+1;
                       cout<<a<<")";
                       outfile<<a<<")";
                       i++;
                     }
                     else
                     {
                         cout<<a;
                         outfile<<a;
                     }
                 }
                 cout<<"="<<endl;
                 outfile<<"="<<endl;
             }
             else
             {
                 x=rand()%4;//随机得到"+" "-" "*" "/"中的一个
                 cout<<"("<<a<<fuhao[x];
                 outfile<<"("<<a<<fuhao[x];
                 a=(rand()%imax)+1;
                 cout<<a<<")";
                 outfile<<a<<")";
                 for(i=2;i<nums;i++)
                 {
                     a=(rand()%imax)+1;
                     x=rand()%4;//随机得到"+" "-" "*" "/"中的一个
                     cout<<fuhao[x];
                     outfile<<fuhao[x];
                     k=rand()%2;
                     if(k==1)
                     {
                         if(nums-i==1)
                         {
                            cout<<a;
                            outfile<<a;
                            continue;
                     }
                     x=rand()%4;//随机得到"+" "-" "*" "/"中的一个
                     cout<<"("<<a<<fuhao[x];
                     outfile<<"("<<a<<fuhao[x];
                     a=(rand()%imax)+1;
                     cout<<a<<")";
                     outfile<<a<<")";
                     i++;
                     }
                     else
                     {
                         cout<<a;
                         outfile<<a;
                     }
                  }
                  cout<<"="<<endl;
                  outfile<<"="<<endl;
              }
        }
    }
}
void floatno(int n)//小数无括号
{
    int i;
    float a;
    a=(float)rand()/RAND_MAX*imax+1.0;
    cout<<a;
    outfile<<a;
    for(i=1;i<nums;i++)
    {
        a=(float)rand()/RAND_MAX*imax+1.0;
        cout<<fuhao[n-1]<<a;
        outfile<<fuhao[n-1]<<a;
    }
    cout<<"="<<endl;
    outfile<<"="<<endl;
}
void floatyes(int n)//小数有括号
{
    int k,i;
    float a;
    n--;
    k=rand()%2;//随机生成"0"或"1"
    a=(float)rand()/RAND_MAX*imax+1.0;
    if(k==0)
    {
        cout<<a;
        outfile<<a;
        a=(float)rand()/RAND_MAX*imax+1.0;
        for(i=1;i<nums;i++)
        {
            a=(float)rand()/RAND_MAX*imax+1.0;
            cout<<fuhao[n];
            outfile<<fuhao[n];
            k=rand()%2;
            if(k==1)
            {
                if(nums-i==1)
                {
                    cout<<a;
                    outfile<<a;
                    continue;
                }
                cout<<"("<<a<<fuhao[n];
                outfile<<"("<<a<<fuhao[n];
                a=(float)rand()/RAND_MAX*imax+1.0;
                cout<<a<<")";
                outfile<<a<<")";
                i++;
            }
            else
            {
                cout<<a;
                outfile<<a;
            }
        }
        cout<<"="<<endl;
        outfile<<"="<<endl;
    }
    else
    {
        cout<<"("<<a<<fuhao[n];
        outfile<<"("<<a<<fuhao[n];
        a=(float)rand()/RAND_MAX*imax+1.0;
        cout<<a<<")";
        outfile<<a<<")";
        for(i=2;i<nums;i++)
        {
            a=(float)rand()/RAND_MAX*imax+1.0;
            cout<<fuhao[n];
            outfile<<fuhao[n];
            k=rand()%2;
            if(k==1)
            {
                if(nums-i==1)
                {
                    cout<<a;
                    outfile<<a;
                    continue;
                }
                cout<<"("<<a<<fuhao[n];
                outfile<<"("<<a<<fuhao[n];
                a=(float)rand()/RAND_MAX*imax+1.0;
                cout<<a<<")";
                outfile<<a<<")";
                i++;
            }
            else
            {
                cout<<a;
                outfile<<a;
            }
        }
        cout<<"="<<endl;
        outfile<<"="<<endl;
    }
}
void doubleys()//生成小数四则运算
{
	float a;
	int x,i;
	x=rand()%4;
	if(kuohao==1)
	{
		if(symbol==1||symbol==2||symbol==3||symbol==4)
		{
			floatno(symbol);
		}
		else if(symbol==5)
		{
		    a=(float)rand()/RAND_MAX*imax+1.0;
		    cout<<a;
		    for(i=1;i<nums;i++)
            {
                x=rand()%4;
                a=(float)rand()/RAND_MAX*imax+1.0;
                cout<<fuhao[x]<<a;
                outfile<<fuhao[x]<<a;
            }
            cout<<"="<<endl;
            outfile<<"="<<endl;
		}
	}
	else
	{
		if(symbol==1||symbol==2||symbol==3||symbol==4)
		{
			floatyes(symbol);
		}
		else if(symbol==5)
		{
		    int k;
			k=rand()%2;//随机生成"0"或"1"
            a=(float)rand()/RAND_MAX*imax+1.0;
            if(k==0)
            {
               cout<<a;
               outfile<<a;
               a=(float)rand()/RAND_MAX*imax+1.0;
               for(i=1;i<nums;i++)
               {
                   a=(float)rand()/RAND_MAX*imax+1.0;
                   x=rand()%4;//随机得到"+" "-" "*" "/"中的一个
                   cout<<fuhao[x];
                   outfile<<fuhao[x];
                   k=rand()%2;
                   if(k==1)
                   {
                      if(nums-i==1)
                      {
                         cout<<a;
                         outfile<<a;
                         continue;
                      }
                      x=rand()%4;//随机得到"+" "-" "*" "/"中的一个
                      cout<<"("<<a<<fuhao[x];
                      outfile<<"("<<a<<fuhao[x];
                      a=(float)rand()/RAND_MAX*imax+1.0;
                      cout<<a<<")";
                      outfile<<a<<")";
                      i++;
                   }
                   else
                   {
                      cout<<a;
                      outfile<<a;
                  }
               }
               cout<<"="<<endl;
               outfile<<"="<<endl;
            }
            else
            {
                x=rand()%4;//随机得到"+" "-" "*" "/"中的一个
                cout<<"("<<a<<fuhao[x];
                outfile<<"("<<a<<fuhao[x];
                a=(float)rand()/RAND_MAX*imax+1.0;
                cout<<a<<")";
                outfile<<a<<")";
                for(i=2;i<nums;i++)
                {
                    a=(float)rand()/RAND_MAX*imax+1.0;
                    x=rand()%4;//随机得到"+" "-" "*" "/"中的一个
                    cout<<fuhao[x];
                    outfile<<fuhao[x];
                    k=rand()%2;
                    if(k==1)
                    {
                       if(nums-i==1)
                       {
                           cout<<a;
                           outfile<<a;
                           continue;
                       }
                       x=rand()%4;//随机得到"+" "-" "*" "/"中的一个
                       cout<<"("<<a<<fuhao[x];
                       outfile<<"("<<a<<fuhao[x];
                       a=(float)rand()/RAND_MAX*imax+1.0;
                       cout<<a<<")";
                       outfile<<a<<")";
                       i++;
                   }
                   else
                   {
                       cout<<a;
                       outfile<<a;
                   }
                }
                cout<<"="<<endl;
                outfile<<"="<<endl;
             }
		}
	}
}
int main()
{
    cout<<"-----小学生四则运算练习系统-----"<<endl;
	cout<<"******************************** "<<endl;
	cout<<"      1: 请输入算式数量: "<<endl;
	cin>>num;
	cout<<"      2: 请输入最大数: "<<endl;
	cin>>imax;
	cout<<"      3: 请输出运算个数:"<<endl;
	cin>>nums;
	cout<<"      4: 请输入运算符: "<<endl;
	cout<<"      1代表+ 2代表- 3代表* 4代表/ 5代表混合:"<<endl;
	cin>>symbol;
	cout<<"      5: 请选择数字类型: "<<endl;
	cout<<"      1代表整数 2代表小数"<<endl;
	cin>>xiaoshu;
	cout<<"      6: 请选择是否需要括号 "<<endl;
	cout<<"      1代表不需要括号 2代表需要括号"<<endl;
	cin>>kuohao;
	cout<<"      7: 请选择输出形式 "<<endl;
	cout<<"      1代表输出到文件 2代表打印机或打印到屏幕"<<endl;
	cin>>shuchu;
	if(shuchu==1)
    {
        outfile.open("test.txt");//数据写入文件
    }
	if(xiaoshu==1)
	{
		srand(time(NULL));//设置一个随机种子,每次运行都能保证随机种子不同
		for(int i=0;i<num;i++)
		{
			intys();
		}
	}
	else
	{
		srand(time(NULL));
		for(int i=0;i<num;i++)
		{
			doubleys();
		}
	}
	outfile.close();
	cout<<"******************************** "<<endl;
	return 0;
}

原文地址:http://www.cnblogs.com/xuyuting/p/16874418.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性