• 二柱子的第三次入坑


    设计思路:

    本次实验在实验二的基础上完成,新增功能:判断结果是否正确。

    使用结构体存储算式:

    struct equation{ //定义结构体“算式”equation
        double value; //值value,用于存算式的值
        int num; //当前算式为num元运算
        bool isFraction; //标记是否为分数
        string shape; //形式shape,用于存算式形式
    }Equation[9999];

     

    主要函数:


    void getRequirement():记录用户需求,即可定制(数量/打印方式)、是否有乘除法、是否有括号(最多可以支持十个数参与计算)、数值范围、加减有无负数、除法有无余数。

    void CreateEquation():生成初始算式。这里生成二元运算,并随机决定算式是整数算式还是分数算式以及是否继续加长算式。

    void MakeBrackets(equation*):加括号。随机增加运算符和运算数,随机决定是否继续加长算式。递归函数。

    void Print():输出并评判结果。包括屏幕输出和文件输出。分数输出分行。对结果评判精度为10^-2。

    void absoluteValue(int &numfirst, int &numsecond):绝对值。用来调整真分数。

    代码:

       1 //2016/03/06
       2 //打印100以内四则运算式,包含真分数。
       3 //2016/03/11
       4 //新增:题目避免重复;可定制(数量/打印方式);可以控制以下参数:
       5 //是否有乘除法;是否有括号(最多可以支持十个数参与计算);数值范围;
       6 //加减有无负数;除法有无余数;
       7 #include<iostream>
       8 #include<fstream>
       9 #include <stdio.h>
      10 #include <stdlib.h>
      11 #include<string>
      12 #include<random>
      13 #include<cmath>
      14 #include<ctime>
      15 #include<conio.h>
      16 #include<windows.h>
      17 using namespace std;
      18 
      19 int NUM_equation = 0;               //打印数量
      20 bool PrintToFile;               //是否输出到文件
      21 bool HasMultAndDivi;            //是否有乘除法
      22 bool HasBrackets;               //是否有括号
      23 bool HasNegative;               //加减是否有负数
      24 bool HasRemainder;              //除法是否有余数
      25 int MaxOfRange = 100;                 //数值范围上限
      26 int MinOfRange = -100;                 //数值范围下限
      27 
      28 //int NUM_equation = 20;               //打印数量
      29 //bool PrintToFile = false;               //是否输出到文件
      30 //bool HasMultAndDivi = true;            //是否有乘除法
      31 //bool HasBrackets = true;               //是否有括号
      32 //bool HasNegative = true;               //加减是否有负数
      33 //bool HasRemainder = true;              //除法是否有余数
      34 //int MaxOfRange = 100;                 //数值范围上限
      35 //int MinOfRange = -100;                 //数值范围下限
      36 default_random_engine generator;
      37 uniform_int_distribution<int> distribution(MinOfRange, MaxOfRange);
      38 struct equation{                //定义结构体“算式”equation
      39 
      40     double value;               //值value,用于存算式的值
      41     int num;                    //当前算式为num元运算
      42     bool isFraction;            //标记是否为分数
      43     string shape;               //形式shape,用于存算式形式
      44 }Equation[9999];
      45 
      46 void MakeBrackets(equation*);
      47 
      48 void absoluteValue(int &numfirst, int &numsecond)
      49 {
      50     int tonumf;          //第一个数的绝对值
      51     int tonums;
      52     int flag_1;
      53     int flag_2;
      54     int temp;
      55     if (numfirst < 0)
      56     {
      57         tonumf = 0 - numfirst;
      58         flag_1 = -1;
      59     }
      60     else
      61     {
      62         tonumf = numfirst;
      63         flag_1 = 1;
      64     }
      65     if (numsecond < 0)
      66     {
      67         tonums = 0 - numsecond;
      68         flag_2 = -1;
      69     }
      70     else
      71     {
      72         tonums = numsecond;
      73         flag_2 = 1;
      74     }
      75     if (tonums < tonumf)
      76     {
      77         temp = tonumf;
      78         tonumf = tonums;
      79         tonums = temp;
      80     }
      81     int i;
      82     for (i = tonumf; i > 0; i--)
      83     {
      84         if (tonumf%i == 0 && tonums%i == 0)
      85         {
      86             break;
      87         }
      88     }
      89     if (i)
      90     {
      91         numfirst = tonumf / i;
      92         numsecond = tonums / i;
      93     }
      94     else
      95     {
      96         numfirst = tonumf;
      97         numsecond = tonums;
      98     }
      99     if (flag_1*flag_2 < 0)
     100     {
     101         numfirst = 0 - numfirst;
     102     }
     103 }
     104 
     105 void getRequirement()                    //输入要求
     106 {
     107     string buffer;
     108     bool flag_NUM_right = false;
     109     do{
     110         cout << "请选择打印数量(1-9999整数):";
     111         cin >> buffer;
     112         int i;
     113         if (buffer.length() < 5)
     114         {
     115             for (i = 0; i < buffer.length(); i++)                 //判断是否为数字
     116             {
     117                 if (buffer[i] < 48 || buffer[i]>57)
     118                 {
     119                     break;                                      //不是数字则跳出
     120                 }
     121             }
     122             if (i == buffer.length())                             //如果没有跳出(都是数字)
     123             {
     124                 if (buffer[0] != '0')
     125                 {
     126                     for (i = 0; i < buffer.length(); i++)         //字符转为整形
     127                     {
     128                         NUM_equation += (buffer[i] - 48)*pow(10, buffer.length() - 1 - i);
     129                     }
     130                     flag_NUM_right = true;
     131                 }
     132             }
     133         }
     134     } while (!flag_NUM_right);
     135 
     136     bool flag_Print_right = false;
     137     do{
     138         cout << "请选择输出方式(1.屏幕/2.文件):";
     139         switch (getche())
     140         {
     141         case 49:                                        //'1'
     142             PrintToFile = false;
     143             flag_Print_right = true;
     144             cout << endl;
     145             break;
     146         case 50:                                        //'2'
     147             PrintToFile = true;
     148             flag_Print_right = true;
     149             cout << endl;
     150             break;
     151         default:
     152             cout << endl;
     153         }
     154     } while (!flag_Print_right);
     155 
     156     bool flag_MultAndDivi_right = false;
     157     do{
     158         cout << "请选择是否有乘除法(Y.有/N.无):";
     159         switch (getche())
     160         {
     161         case 78:                                                   //'N'
     162             HasMultAndDivi = false;
     163             flag_MultAndDivi_right = true;
     164             cout << endl;
     165             break;
     166         case 89:                                                   //'Y'
     167             HasMultAndDivi = true;
     168             flag_MultAndDivi_right = true;
     169             cout << endl;
     170             break;
     171         default:
     172             cout << endl;
     173         }
     174     } while (!flag_MultAndDivi_right);
     175 
     176 
     177     bool flag_Brackets_right = false;
     178     do{
     179         cout << "请选择是否有括号(Y.有/N.无):";
     180         switch (getche())
     181         {
     182         case 78:                                                   //'N'
     183             HasBrackets = false;
     184             flag_Brackets_right = true;
     185             cout << endl;
     186             break;
     187         case 89:                                                   //'Y'
     188             HasBrackets = true;
     189             flag_Brackets_right = true;
     190             cout << endl;
     191             break;
     192         default:
     193             cout << endl;
     194         }
     195     } while (!flag_Brackets_right);
     196     /////////////////////////////////
     197     string bufferforRage;
     198     bool flag_Rage_right = false;
     199     bool isNegative;
     200     MaxOfRange = 0;
     201     MinOfRange = 0;
     202     do{
     203         cout << "请规定数值范围(整数-99999~99999):上限为:";
     204         cin >> bufferforRage;
     205         int i;
     206         if (bufferforRage[0] == '-')                                         //若可能为负数
     207         {
     208             if (bufferforRage.length() < 7)
     209             {
     210                 for (i = 1; i < bufferforRage.length(); i++)                 //判断是否为数字
     211                 {
     212                     if (bufferforRage[i] < 48 || bufferforRage[i]>57)
     213                     {
     214                         break;                                      //不是数字则跳出
     215                     }
     216                 }
     217                 if (i == bufferforRage.length())                             //如果没有跳出(都是数字)
     218                 {
     219                     if (bufferforRage[0] != '0')
     220                     {
     221                         for (i = 1; i < bufferforRage.length(); i++)         //字符转为整形
     222                         {
     223                             MaxOfRange -= (bufferforRage[i] - 48)*pow(10, bufferforRage.length() - i - 1);
     224                         }
     225                         flag_Rage_right = true;
     226                     }
     227                 }
     228             }
     229         }
     230         if (bufferforRage[0] != '-')                                         //若可能为正数
     231         {
     232             if (bufferforRage.length() < 6)
     233             {
     234                 for (i = 0; i < bufferforRage.length(); i++)                 //判断是否为数字
     235                 {
     236                     if (bufferforRage[i] < 48 || bufferforRage[i]>57)
     237                     {
     238                         break;                                      //不是数字则跳出
     239                     }
     240                 }
     241                 if (i == bufferforRage.length())                             //如果没有跳出(都是数字)
     242                 {
     243                     if (bufferforRage[0] != '0')
     244                     {
     245                         for (i = 0; i < bufferforRage.length(); i++)         //字符转为整形
     246                         {
     247                             MaxOfRange += (bufferforRage[i] - 48)*pow(10, bufferforRage.length() - 1 - i);
     248                         }
     249                         flag_Rage_right = true;
     250                     }
     251                     else
     252                     {
     253                         MaxOfRange = 0;
     254                         flag_Rage_right = true;
     255                     }
     256                 }
     257             }
     258         }
     259 
     260     } while (!flag_Rage_right);
     261 
     262     flag_Rage_right = false;
     263     do{
     264         cout << "下限为:";
     265         cin >> bufferforRage;
     266         int i;
     267         if (bufferforRage[0] == '-')                                         //若可能为负数
     268         {
     269             if (bufferforRage.length() < 7)
     270             {
     271                 for (i = 1; i < bufferforRage.length(); i++)                 //判断是否为数字
     272                 {
     273                     if (bufferforRage[i] < 48 || bufferforRage[i]>57)
     274                     {
     275                         break;                                      //不是数字则跳出
     276                     }
     277                 }
     278                 if (i == bufferforRage.length())                             //如果没有跳出(都是数字)
     279                 {
     280                     if (bufferforRage[0] != '0')
     281                     {
     282                         for (i = 1; i < bufferforRage.length(); i++)         //字符转为整形
     283                         {
     284                             MinOfRange -= (bufferforRage[i] - 48)*pow(10, bufferforRage.length() - i - 1);
     285                         }
     286                         if (MinOfRange < MaxOfRange)
     287                         {
     288                             flag_Rage_right = true;
     289                         }
     290                         else
     291                         {
     292                             MinOfRange = 0;
     293                         }
     294                     }
     295                 }
     296             }
     297         }
     298         if (bufferforRage[0] != '-')                                         //若可能为正数
     299         {
     300             if (bufferforRage.length() < 6)
     301             {
     302                 for (i = 0; i < bufferforRage.length(); i++)                 //判断是否为数字
     303                 {
     304                     if (bufferforRage[i] < 48 || bufferforRage[i]>57)
     305                     {
     306                         break;                                      //不是数字则跳出
     307                     }
     308                 }
     309                 if (i == bufferforRage.length())                             //如果没有跳出(都是数字)
     310                 {
     311                     if (bufferforRage[0] != '0')
     312                     {
     313                         for (i = 0; i < bufferforRage.length(); i++)         //字符转为整形
     314                         {
     315                             MinOfRange += (bufferforRage[i] - 48)*pow(10, bufferforRage.length() - 1 - i);
     316                         }
     317                     }
     318                     else
     319                     {
     320                         MinOfRange = 0;
     321                     }
     322                     if (MinOfRange < MaxOfRange)
     323                     {
     324                         flag_Rage_right = true;
     325                     }
     326                     else
     327                     {
     328                         MinOfRange = 0;
     329                     }
     330                 }
     331             }
     332         }
     333 
     334     } while (!flag_Rage_right);
     335 
     336     ///////////////////////////////////
     337 
     338 
     339     bool flag_Negative_right = false;
     340     do{
     341         cout << "请选择加减是否有负数(Y.有/N.无):";
     342         switch (getche())
     343         {
     344         case 78:                                                   //'N'
     345             HasNegative = false;
     346             flag_Negative_right = true;
     347             cout << endl;
     348             break;
     349         case 89:                                                   //'Y'
     350             HasNegative = true;
     351             flag_Negative_right = true;
     352             cout << endl;
     353             break;
     354         default:
     355             cout << endl;
     356         }
     357     } while (!flag_Negative_right);
     358 
     359     if (HasMultAndDivi)
     360     {
     361         bool flag_Remainder_right = false;
     362         do{
     363             cout << "请选择除法是否有余数(Y.有/N.无):";
     364             switch (getche())
     365             {
     366             case 78:                                                   //'N'
     367                 HasRemainder = false;
     368                 flag_Remainder_right = true;
     369                 cout << endl;
     370                 break;
     371             case 89:                                                   //'Y'
     372                 HasRemainder = true;
     373                 flag_Remainder_right = true;
     374                 cout << endl;
     375                 break;
     376             default:
     377                 cout << endl;
     378             }
     379         } while (!flag_Remainder_right);
     380     }
     381 }
     382 
     383 void CreateEquation()
     384 {
     385     default_random_engine generator;
     386     uniform_int_distribution<int> distribution(MinOfRange, MaxOfRange);
     387     for (int i = 0; i < NUM_equation; i++)
     388     {
     389         if (rand() % 2 == 0)
     390         {
     391             Equation[i].isFraction = false;
     392         }
     393         else
     394         {
     395              Equation[i].isFraction = true;
     396         }
     397         string middle;
     398         char sign;                                           //生成初始运算符
     399         do
     400         {
     401             switch (rand() % 4)
     402             {
     403             case 0:
     404                 sign = '+';
     405                 break;
     406             case 1:
     407                 sign = '-';
     408                 break;
     409             case 2:
     410                 sign = '*';
     411                 break;
     412             case 3:
     413                 sign = '/';
     414                 break;
     415             }
     416         } while ((sign == '/' || sign == '*') && !HasMultAndDivi);
     417         bool wrong = false;
     418         double value = 0;
     419         do
     420         {
     421             wrong = false;
     422             if (!Equation[i].isFraction)                        //生成运算数-整数
     423             {
     424                 int numFormer;
     425                 int numLatter;
     426                 numFormer = distribution(generator);
     427                 do
     428                 {
     429                     numLatter = distribution(generator);
     430                 } while (numLatter == 0 && sign == '/');
     431                 char strnumFormer[7] = { '0' };
     432                 itoa(numFormer, strnumFormer, 10);
     433                 char strnumLatter[7] = { '0' };
     434                 itoa(numLatter, strnumLatter, 10);
     435                 if (sign == '+' || sign == '-')                            //加减
     436                 {
     437                     if (HasNegative)
     438                     {
     439                         if (sign == '+')
     440                         {
     441                             value = (double)numFormer + (double)numLatter;
     442                         }
     443                         else
     444                         {
     445                             value = (double)numFormer - (double)numLatter;
     446                         }
     447                         if (value<MinOfRange || value>MaxOfRange)
     448                         {
     449                             wrong = true;
     450                         }
     451                         else
     452                         {
     453                             middle = strnumFormer;
     454                             middle = middle + sign;
     455                             if (numLatter < 0)
     456                             {
     457                                 middle = middle + '(' + strnumLatter + ')';
     458                             }
     459                             else
     460                             {
     461                                 middle = middle + strnumLatter;
     462                             }
     463 
     464                             //Equation[i].shape = strnumFormer + sign;
     465                             //Equation[i].shape = Equation[i].shape + strnumLatter;
     466                         }
     467                     }
     468                     else
     469                     {
     470                         if (numFormer < 0 || numLatter < 0)
     471                         {
     472                             wrong = true;
     473                         }
     474                         else
     475                         {
     476                             if (sign == '+')
     477                             {
     478                                 value = (double)numFormer + (double)numLatter;
     479                             }
     480                             else
     481                             {
     482                                 value = (double)numFormer - (double)numLatter;
     483                             }
     484                             if (value<MinOfRange || value>MaxOfRange || value < 0)
     485                             {
     486                                 wrong = true;
     487                             }
     488                             else
     489                             {
     490                                 middle = strnumFormer;
     491                                 middle = middle + sign;
     492                                 middle = middle + strnumLatter;
     493                                 //Equation[i].shape = strnumFormer + sign;
     494                                 //Equation[i].shape = Equation[i].shape + strnumLatter;
     495                             }
     496                         }
     497                     }
     498                 }
     499                 else if (sign == '*')                                                     //
     500                 {
     501                     value = (double)numFormer*(double)numLatter;
     502                     if (value<MinOfRange || value>MaxOfRange)
     503                     {
     504                         wrong = true;
     505                     }
     506                     else
     507                     {
     508                         middle = strnumFormer;
     509                         middle = middle + sign;
     510                         if (numLatter < 0)
     511                         {
     512                             middle = middle + '(' + strnumLatter + ')';
     513                         }
     514                         else
     515                         {
     516                             middle = middle + strnumLatter;
     517                         }
     518                         //Equation[i].shape = strnumFormer + sign;
     519                         //Equation[i].shape = Equation[i].shape + strnumLatter;
     520                     }
     521                 }
     522                 else                                                                  //
     523                 {
     524                     if (HasRemainder)
     525                     {
     526                         value = (double)numFormer / (double)numLatter;
     527                         if (value<MinOfRange || value>MaxOfRange)
     528                         {
     529                             wrong = true;
     530                         }
     531                         else
     532                         {
     533                             middle = strnumFormer;
     534                             middle = middle + sign;
     535                             if (numLatter < 0)
     536                             {
     537                                 middle = middle + '(' + strnumLatter + ')';
     538                             }
     539                             else
     540                             {
     541                                 middle = middle + strnumLatter;
     542                             }
     543                             //Equation[i].shape = strnumFormer + sign;
     544                             //Equation[i].shape = Equation[i].shape + strnumLatter;
     545                         }
     546                     }
     547                     else
     548                     {
     549                         if (numFormer%numLatter != 0)
     550                         {
     551                             wrong = true;
     552                         }
     553                         else
     554                         {
     555                             value = (double)numFormer / (double)numLatter;
     556                             if (value<MinOfRange || value>MaxOfRange)
     557                             {
     558                                 wrong = true;
     559                             }
     560                             else
     561                             {
     562                                 middle = strnumFormer;
     563                                 middle = middle + sign;
     564                                 if (numLatter < 0)
     565                                 {
     566                                     middle = middle + '(' + strnumLatter + ')';
     567                                 }
     568                                 else
     569                                 {
     570                                     middle = middle + strnumLatter;
     571                                 }
     572                                 //Equation[i].shape = strnumFormer + sign;
     573                                 //Equation[i].shape = Equation[i].shape + strnumLatter;
     574                             }
     575                         }
     576                     }
     577                 }
     578             }
     579             else                                               //生成运算数-分数
     580             {
     581                 int NumeratorFormer;
     582                 int NumeratorLatter;
     583                 int DenominatorFormer;
     584                 int DenominatorLatter;
     585                 do
     586                 {
     587                     NumeratorFormer = distribution(generator);
     588                 } while (NumeratorFormer == 0);
     589                 do
     590                 {
     591                     DenominatorFormer = distribution(generator);
     592                 } while (DenominatorFormer == 0 || DenominatorFormer == NumeratorFormer);
     593                 absoluteValue(NumeratorFormer, DenominatorFormer);
     594                 do
     595                 {
     596                     NumeratorLatter = distribution(generator);
     597                 } while (NumeratorLatter == 0);
     598                 do
     599                 {
     600                     DenominatorLatter = distribution(generator);
     601                 } while (DenominatorLatter == 0 || DenominatorLatter == NumeratorLatter);
     602                 absoluteValue(NumeratorLatter, DenominatorLatter);
     603                 char strNF[7];
     604                 itoa(NumeratorFormer, strNF, 10);
     605                 char strDF[7];
     606                 itoa(DenominatorFormer, strDF, 10);
     607                 char strNL[7];
     608                 itoa(NumeratorLatter, strNL, 10);
     609                 char strDL[7];
     610                 itoa(DenominatorLatter, strDL, 10);
     611                 if (sign == '+' || sign == '-')                                          //加减
     612                 {
     613                     if (HasNegative)
     614                     {
     615                         if (sign == '+')
     616                         {
     617                             value = (double)NumeratorFormer / (double)DenominatorFormer + (double)NumeratorLatter / (double)DenominatorLatter;
     618                         }
     619                         else
     620                         {
     621                             value = (double)NumeratorFormer / (double)DenominatorFormer - (double)NumeratorLatter / (double)DenominatorLatter;
     622                         }
     623                         if (value<MinOfRange || value>MaxOfRange)
     624                         {
     625                             wrong = true;
     626                         }
     627                         else
     628                         {
     629                             middle = strNF;
     630                             middle = middle + 'd';
     631                             middle = middle + strDF;
     632                             middle = middle + sign;
     633                             middle = middle + strNL;
     634                             middle = middle + 'd';
     635                             middle = middle + strDL;
     636                             //Equation[i].shape = strNF + 'd';
     637                             //Equation[i].shape = Equation[i].shape + strDF + sign + strNL + 'd' + strDL;
     638                         }
     639                     }
     640                     else
     641                     {
     642                         if (NumeratorFormer < 0 || NumeratorLatter < 0)
     643                         {
     644                             wrong = true;
     645                         }
     646                         else
     647                         {
     648                             if (sign == '+')
     649                             {
     650                                 value = (double)NumeratorFormer / (double)DenominatorFormer + (double)NumeratorLatter / (double)DenominatorLatter;
     651                             }
     652                             else
     653                             {
     654                                 value = (double)NumeratorFormer / (double)DenominatorFormer - (double)NumeratorLatter / (double)DenominatorLatter;
     655                             }
     656                             if (value<MinOfRange || value>MaxOfRange || value<0)
     657                             {
     658                                 wrong = true;
     659                             }
     660                             else
     661                             {
     662                                 middle = strNF;
     663                                 middle = middle + 'd';
     664                                 middle = middle + strDF;
     665                                 middle = middle + sign;
     666                                 middle = middle + strNL;
     667                                 middle = middle + 'd';
     668                                 middle = middle + strDL;
     669                                 //Equation[i].shape = strNF + 'd';
     670                                 //Equation[i].shape = Equation[i].shape + strDF + sign + strNL + 'd' + strDL;
     671                             }
     672                         }
     673                     }
     674                 }
     675                 else                                                         //乘除
     676                 {
     677                     if (sign == '*')
     678                     {
     679                         value = ((double)NumeratorFormer / (double)DenominatorFormer) * ((double)NumeratorLatter / (double)DenominatorLatter);
     680                     }
     681                     else
     682                     {
     683                         value = ((double)NumeratorFormer / (double)DenominatorFormer) / ((double)NumeratorLatter / (double)DenominatorLatter);
     684                     }
     685                     if (value<MinOfRange || value>MaxOfRange)
     686                     {
     687                         wrong = true;
     688                     }
     689                     else
     690                     {
     691                         middle = strNF;
     692                         middle = middle + 'd';
     693                         middle = middle + strDF;
     694                         middle = middle + sign;
     695                         middle = middle + strNL;
     696                         middle = middle + 'd';
     697                         middle = middle + strDL;
     698                         //Equation[i].shape = strNF + 'd';
     699                         //Equation[i].shape = Equation[i].shape + strDF + sign + strNL + 'd' + strDL;
     700                     }
     701                 }
     702             }
     703         } while (wrong);
     704         Equation[i].shape = middle;
     705         Equation[i].value = value;
     706         Equation[i].num = 2;
     707         if (HasBrackets)
     708         {
     709             if (rand() % 5 != 0)
     710             {
     711 
     712                 Equation[i].shape = '(' + Equation[i].shape + ')';
     713                 equation *E = &Equation[i];
     714                 MakeBrackets(E);
     715 
     716             }
     717         }
     718         for (int v = 0; v < i; v++)
     719         {
     720             if (Equation[i].shape == Equation[v].shape)
     721             {
     722                 Equation[i].shape = "";
     723                 Equation[i].value = 0;
     724                 Equation[i].num = 0;
     725                 i = i - 1;
     726                 break;
     727             }
     728 
     729         }
     730         //cout << Equation[i].shape << endl;///////////////////////////////////////////////////////
     731     }
     732 }
     733 
     734 void MakeBrackets(equation *thisEquation)                        //加括号
     735 {
     736 
     737     bool wrong = false;
     738     double value=0;
     739     string interForShape="";
     740     do{
     741         interForShape = (*thisEquation).shape;
     742         wrong = false;
     743         if ((*thisEquation).isFraction)                          //若为分数运算
     744         {
     745             int numerator;
     746             int denominator;
     747             do{
     748                 numerator = distribution(generator);
     749             } while (numerator == 0);
     750             do{
     751                 denominator = distribution(generator);
     752             } while (denominator == 0 || denominator == numerator);
     753             absoluteValue(numerator, denominator);
     754             /*if (numerator > denominator)
     755             {
     756                 int tem;
     757                 tem = numerator;
     758                 numerator = denominator;
     759                 denominator = tem;
     760             }*/
     761             char strNumerator[7];
     762             char strDenominator[7];
     763             itoa(numerator, strNumerator, 10);
     764             itoa(denominator, strDenominator, 10);
     765             switch (rand() % 8)
     766             {
     767             case 0:
     768                 if (HasNegative)
     769                 {
     770                     value = (*thisEquation).value + (double)numerator / (double)denominator;
     771                     if (value > MaxOfRange || value < MinOfRange)
     772                     {
     773                         wrong = true;
     774                         break;
     775                     }
     776                     interForShape = '+' + interForShape;
     777                     interForShape = strDenominator + interForShape;
     778                     interForShape = 'd' + interForShape;
     779                     interForShape = strNumerator + interForShape;
     780                 }
     781                 else
     782                 {
     783                     if (numerator > 0 && denominator > 0)
     784                     {
     785                         value = (*thisEquation).value + (double)numerator / (double)denominator;
     786                         if (value > MaxOfRange || value < MinOfRange || value < 0)
     787                         {
     788                             wrong = true;
     789                             break;
     790                         }
     791                         interForShape = '+' + interForShape;
     792                         interForShape = strDenominator + interForShape;
     793                         interForShape = 'd' + interForShape;
     794                         interForShape = strNumerator + interForShape;
     795                     }
     796                     else
     797                     {
     798                         wrong = true;
     799                         break;
     800                     }
     801                 }
     802                 break;
     803             case 1:
     804                 if (HasNegative)
     805                 {
     806                     value = (*thisEquation).value + (double)numerator / (double)denominator;
     807                     if (value > MaxOfRange || value < MinOfRange)
     808                     {
     809                         wrong = true;
     810                         break;
     811                     }
     812                     interForShape = interForShape + '+';
     813                     interForShape = interForShape + strNumerator;
     814                     interForShape = interForShape + 'd';
     815                     interForShape = interForShape + strDenominator;
     816                 }
     817                 else
     818                 {
     819                     if (numerator > 0 && denominator > 0)
     820                     {
     821                         value = (*thisEquation).value + (double)numerator / (double)denominator;
     822                         if (value > MaxOfRange || value < MinOfRange || value < 0)
     823                         {
     824                             wrong = true;
     825                             break;
     826                         }
     827                         interForShape = interForShape + '+';
     828                         interForShape = interForShape + strNumerator;
     829                         interForShape = interForShape + 'd';
     830                         interForShape = interForShape + strDenominator;
     831                     }
     832                     else
     833                     {
     834                         wrong = true;
     835                         break;
     836                     }
     837                 }
     838                 break;
     839             case 2:
     840                 if (HasNegative)
     841                 {
     842                     value = (double)numerator / (double)denominator - (*thisEquation).value;
     843                     if (value > MaxOfRange || value < MinOfRange)
     844                     {
     845                         wrong = true;
     846                         break;
     847                     }
     848                     interForShape = '-' + interForShape;
     849                     interForShape = strDenominator + interForShape;
     850                     interForShape = 'd' + interForShape;
     851                     interForShape = strNumerator + interForShape;
     852                 }
     853                 else
     854                 {
     855                     if (numerator > 0 && denominator > 0)
     856                     {
     857                         value = (double)numerator / (double)denominator - (*thisEquation).value;
     858                         if (value > MaxOfRange || value < MinOfRange || value < 0)
     859                         {
     860                             wrong = true;
     861                             break;
     862                         }
     863                         interForShape = '-' + interForShape;
     864                         interForShape = strDenominator + interForShape;
     865                         interForShape = 'd' + interForShape;
     866                         interForShape = strNumerator + interForShape;
     867                     }
     868                     else
     869                     {
     870                         wrong = true;
     871                         break;
     872                     }
     873                 }
     874                 break;
     875             case 3:
     876                 if (HasNegative)
     877                 {
     878                     value = (*thisEquation).value - (double)numerator / (double)denominator;
     879                     if (value > MaxOfRange || value < MinOfRange)
     880                     {
     881                         wrong = true;
     882                         break;
     883                     }
     884                     interForShape = interForShape + '-';
     885                     interForShape = interForShape + strNumerator;
     886                     interForShape = interForShape + 'd';
     887                     interForShape = interForShape + strDenominator;
     888                 }
     889                 else
     890                 {
     891                     if (numerator > 0 && denominator > 0)
     892                     {
     893                         value = (double)numerator / (double)denominator - (*thisEquation).value;
     894                         if (value > MaxOfRange || value < MinOfRange || value < 0)
     895                         {
     896                             wrong = true;
     897                             break;
     898                         }
     899                         interForShape = interForShape + '-';
     900                         interForShape = interForShape + strNumerator;
     901                         interForShape = interForShape + 'd';
     902                         interForShape = interForShape + strDenominator;
     903                     }
     904                     else
     905                     {
     906                         wrong = true;
     907                         break;
     908                     }
     909                 }
     910                 break;
     911             case 4:
     912                 if (HasMultAndDivi)
     913                 {
     914                     value = (double)numerator / (double)denominator * (*thisEquation).value;
     915                     if (value > MaxOfRange || value < MinOfRange)
     916                     {
     917                         wrong = true;
     918                         break;
     919                     }
     920                     interForShape = '*' + interForShape;
     921                     interForShape = strDenominator + interForShape;
     922                     interForShape = 'd' + interForShape;
     923                     interForShape = strNumerator + interForShape;
     924                 }
     925                 else
     926                 {
     927                     wrong = true;
     928                 }
     929                 break;
     930             case 5:
     931                 if (HasMultAndDivi)
     932                 {
     933                     value = (*thisEquation).value * (double)numerator / (double)denominator;
     934                     if (value > MaxOfRange || value < MinOfRange)
     935                     {
     936                         wrong = true;
     937                         break;
     938                     }
     939                     interForShape = interForShape + '*';
     940                     interForShape = interForShape + strNumerator;
     941                     interForShape = interForShape + 'd';
     942                     interForShape = interForShape + strDenominator;
     943                 }
     944                 else
     945                 {
     946                     wrong = true;
     947                 }
     948                 break;
     949             case 6:
     950                 if (HasMultAndDivi)
     951                 {
     952                     value = (double)numerator / (double)denominator / (*thisEquation).value;
     953                     if (value > MaxOfRange || value < MinOfRange)
     954                     {
     955                         wrong = true;
     956                         break;
     957                     }
     958                     interForShape = '/' + interForShape;
     959                     interForShape = strDenominator + interForShape;
     960                     interForShape = 'd' + interForShape;
     961                     interForShape = strNumerator + interForShape;
     962                 }
     963                 else
     964                 {
     965                     wrong = true;
     966                 }
     967                 break;
     968             case 7:
     969                 if (HasMultAndDivi)
     970                 {
     971                     value = (*thisEquation).value / ((double)numerator / (double)denominator);
     972                     if (value > MaxOfRange || value < MinOfRange)
     973                     {
     974                         wrong = true;
     975                         break;
     976                     }
     977                     interForShape = interForShape + '/';
     978                     interForShape = interForShape + strNumerator;
     979                     interForShape = interForShape + 'd';
     980                     interForShape = interForShape + strDenominator;
     981                 }
     982                 else
     983                 {
     984                     wrong = true;
     985                 }
     986                 break;
     987             }
     988         }
     989         else                                                       //若为整数运算
     990         {
     991             int integer;
     992             integer = distribution(generator);
     993             char strInteger[7];
     994             itoa(integer, strInteger, 10);
     995             switch (rand() % 8)
     996             {
     997             case 0:
     998                 if (HasNegative)
     999                 {
    1000                     value = (*thisEquation).value + (double)integer;
    1001                     if (value > MaxOfRange || value < MinOfRange)
    1002                     {
    1003                         wrong = true;
    1004                         break;
    1005                     }
    1006                     interForShape = '+' + interForShape;
    1007                     if (integer < 0)
    1008                     {
    1009                         //interForShape = '(' + strInteger + ')' + interForShape;
    1010                         interForShape = ')' + interForShape;
    1011                         interForShape = strInteger + interForShape;
    1012                         interForShape = '(' + interForShape;
    1013                     }
    1014                     else
    1015                     {
    1016                         interForShape = strInteger + interForShape;
    1017                     }
    1018                 }
    1019                 else
    1020                 {
    1021                     if (integer > 0)
    1022                     {
    1023                         value = (*thisEquation).value + (double)integer;
    1024                         if (value > MaxOfRange || value < MinOfRange || value < 0)
    1025                         {
    1026                             wrong = true;
    1027                             break;
    1028                         }
    1029                         interForShape = '+' + interForShape;
    1030                         interForShape = strInteger + interForShape;
    1031                     }
    1032                     else
    1033                     {
    1034                         wrong = true;
    1035                         break;
    1036                     }
    1037                 }
    1038                 break;
    1039             case 1:
    1040                 if (HasNegative)
    1041                 {
    1042                     value = (*thisEquation).value + (double)integer;
    1043                     if (value > MaxOfRange || value < MinOfRange)
    1044                     {
    1045                         wrong = true;
    1046                         break;
    1047                     }
    1048                     interForShape = interForShape + '+';
    1049                     if (integer < 0)
    1050                     {
    1051                         //interForShape = interForShape + '(' + strInteger + ')';
    1052                         interForShape = interForShape + '(';
    1053                         interForShape = interForShape + strInteger;
    1054                         interForShape = interForShape + ')';
    1055                     }
    1056                     else
    1057                     {
    1058                         interForShape = interForShape + strInteger;
    1059                     }
    1060                 }
    1061                 else
    1062                 {
    1063                     if (integer > 0)
    1064                     {
    1065                         value = (*thisEquation).value + (double)integer;
    1066                         if (value > MaxOfRange || value < MinOfRange || value < 0)
    1067                         {
    1068                             wrong = true;
    1069                             break;
    1070                         }
    1071                         interForShape = interForShape + '+';
    1072                         interForShape = interForShape + strInteger;
    1073                     }
    1074                     else
    1075                     {
    1076                         wrong = true;
    1077                         break;
    1078                     }
    1079                 }
    1080                 break;
    1081             case 2:
    1082                 if (HasNegative)
    1083                 {
    1084                     value = (double)integer - (*thisEquation).value;
    1085                     if (value > MaxOfRange || value < MinOfRange)
    1086                     {
    1087                         wrong = true;
    1088                         break;
    1089                     }
    1090                     interForShape = '-' + interForShape;
    1091                     if (integer < 0)
    1092                     {
    1093                         //interForShape = '(' + strInteger + ')' + interForShape;
    1094                         interForShape = ')' + interForShape;
    1095                         interForShape = strInteger + interForShape;
    1096                         interForShape = '(' + interForShape;
    1097                     }
    1098                     else
    1099                     {
    1100                         interForShape = strInteger + interForShape;
    1101                     }
    1102                 }
    1103                 else
    1104                 {
    1105                     if (integer > 0)
    1106                     {
    1107                         value = (double)integer - (*thisEquation).value;
    1108                         if (value > MaxOfRange || value < MinOfRange || value < 0)
    1109                         {
    1110                             wrong = true;
    1111                             break;
    1112                         }
    1113                         interForShape = '-' + interForShape;
    1114                         interForShape = strInteger + interForShape;
    1115                     }
    1116                     else
    1117                     {
    1118                         wrong = true;
    1119                         break;
    1120                     }
    1121                 }
    1122                 break;
    1123             case 3:
    1124                 if (HasNegative)
    1125                 {
    1126                     value = (*thisEquation).value - (double)integer;
    1127                     if (value > MaxOfRange || value < MinOfRange)
    1128                     {
    1129                         wrong = true;
    1130                         break;
    1131                     }
    1132                     interForShape = interForShape + '-';
    1133                     if (integer < 0)
    1134                     {
    1135                         //interForShape = interForShape + '(' + strInteger + ')';
    1136                         interForShape = interForShape + '(';
    1137                         interForShape = interForShape + strInteger;
    1138                         interForShape = interForShape + ')';
    1139                     }
    1140                     else
    1141                     {
    1142                         interForShape = interForShape + strInteger;
    1143                     }
    1144                 }
    1145                 else
    1146                 {
    1147                     if (integer > 0)
    1148                     {
    1149                         value = (*thisEquation).value - (double)integer;
    1150                         if (value > MaxOfRange || value < MinOfRange || value < 0)
    1151                         {
    1152                             wrong = true;
    1153                             break;
    1154                         }
    1155                         interForShape = interForShape + '-';
    1156                         interForShape = interForShape + strInteger;
    1157                     }
    1158                     else
    1159                     {
    1160                         wrong = true;
    1161                         break;
    1162                     }
    1163                 }
    1164                 break;
    1165             case 4:
    1166                 if (HasMultAndDivi)
    1167                 {
    1168                     value = (double)integer * (*thisEquation).value;
    1169                     if (value > MaxOfRange || value < MinOfRange)
    1170                     {
    1171                         wrong = true;
    1172                         break;
    1173                     }
    1174                     interForShape = '*' + interForShape;
    1175                     if (integer < 0)
    1176                     {
    1177                         //interForShape = '(' + strInteger + ')' + interForShape;
    1178                         interForShape = ')' + interForShape;
    1179                         interForShape = strInteger + interForShape;
    1180                         interForShape = '(' + interForShape;
    1181                     }
    1182                     else
    1183                     {
    1184                         interForShape = strInteger + interForShape;
    1185                     }
    1186                 }
    1187                 else
    1188                 {
    1189                     wrong = true;
    1190                 }
    1191                 break;
    1192             case 5:
    1193                 if (HasMultAndDivi)
    1194                 {
    1195                     value = (*thisEquation).value * (double)integer;
    1196                     if (value > MaxOfRange || value < MinOfRange)
    1197                     {
    1198                         wrong = true;
    1199                         break;
    1200                     }
    1201                     interForShape = interForShape + '*';
    1202                     if (integer < 0)
    1203                     {
    1204                         //interForShape = interForShape + '(' + strInteger + ')';
    1205                         interForShape = interForShape + '(';
    1206                         interForShape = interForShape + strInteger;
    1207                         interForShape = interForShape + ')';
    1208                     }
    1209                     else
    1210                     {
    1211                         interForShape = interForShape + strInteger;
    1212                     }
    1213                 }
    1214                 else
    1215                 {
    1216                     wrong = true;
    1217                 }
    1218                 break;
    1219             case 6:
    1220                 if (HasMultAndDivi)
    1221                 {
    1222                     if ((*thisEquation).value<1E-7&&(*thisEquation).value>-(1E-7))          //若除数为0
    1223                     {
    1224                         wrong = true;
    1225                         break;
    1226                     }
    1227                     if (HasRemainder)
    1228                     {
    1229                         value = (double)integer / (*thisEquation).value;
    1230                         if (value > MaxOfRange || value < MinOfRange)
    1231                         {
    1232                             wrong = true;
    1233                             break;
    1234                         }
    1235                         interForShape = '/' + interForShape;
    1236                         if (integer < 0)
    1237                         {
    1238                             //interForShape = '(' + strInteger + ')' + interForShape;
    1239                             interForShape = ')' + interForShape;
    1240                             interForShape = strInteger + interForShape;
    1241                             interForShape = '(' + interForShape;
    1242                         }
    1243                         else
    1244                         {
    1245                             interForShape = strInteger + interForShape;
    1246                         }
    1247                     }
    1248                     else
    1249                     {
    1250                         if ((*thisEquation).value - int((*thisEquation).value) > 1E-7 || (*thisEquation).value - int((*thisEquation).value) < -(1E-7))
    1251                         {
    1252                             wrong = true;
    1253                             break;
    1254                         }
    1255                         if (integer%int((*thisEquation).value) > 1E-7 || integer%int((*thisEquation).value) < -(1E-7))
    1256                         {
    1257                             wrong = true;
    1258                             break;
    1259                         }
    1260                         else
    1261                         {////
    1262                             value = (double)integer / (*thisEquation).value;
    1263                             if (value > MaxOfRange || value < MinOfRange)
    1264                             {
    1265                                 wrong = true;
    1266                                 break;
    1267                             }
    1268                             interForShape = '/' + interForShape;
    1269                             if (integer < 0)
    1270                             {
    1271                                 //interForShape = '(' + strInteger + ')' + interForShape;
    1272                                 interForShape = ')' + interForShape;
    1273                                 interForShape = strInteger + interForShape;
    1274                                 interForShape = '(' + interForShape;
    1275                             }
    1276                             else
    1277                             {
    1278                                 interForShape = strInteger + interForShape;
    1279                             }
    1280                         }
    1281                     }
    1282                 }
    1283                 else
    1284                 {
    1285                     wrong = true;
    1286                 }
    1287                 break;
    1288             case 7:
    1289                 if (HasMultAndDivi)
    1290                 {
    1291                     if (0 == integer)          //若除数为0
    1292                     {
    1293                         wrong = true;
    1294                         break;
    1295                     }
    1296                     if (HasRemainder)
    1297                     {
    1298                         value = (*thisEquation).value / (double)integer;
    1299                         if (value > MaxOfRange || value < MinOfRange)
    1300                         {
    1301                             wrong = true;
    1302                             break;
    1303                         }
    1304                         interForShape = interForShape + '/';
    1305                         if (integer < 0)
    1306                         {
    1307                             //interForShape = interForShape + '(' + strInteger + ')';
    1308                             interForShape = interForShape + '(';
    1309                             interForShape = interForShape + strInteger;
    1310                             interForShape = interForShape + ')';
    1311                         }
    1312                         else
    1313                         {
    1314                             interForShape = interForShape + strInteger;
    1315                         }
    1316                     }
    1317                     else
    1318                     {
    1319                         if ((*thisEquation).value - int((*thisEquation).value) > 1E-7 || (*thisEquation).value - int((*thisEquation).value) < -(1E-7))
    1320                         {
    1321                             wrong = true;
    1322                             break;
    1323                         }
    1324                         if ((int((*thisEquation).value)) % integer > 1E-7 || (int((*thisEquation).value)) % integer < -(1E-7))
    1325                         {
    1326                             wrong = true;
    1327                             break;
    1328                         }
    1329                         else
    1330                         {////
    1331                             value = (*thisEquation).value / (double)integer;
    1332                             if (value > MaxOfRange || value < MinOfRange)
    1333                             {
    1334                                 wrong = true;
    1335                                 break;
    1336                             }
    1337                             interForShape = interForShape + '/';
    1338                             if (integer < 0)
    1339                             {
    1340                                 //interForShape = interForShape + '(' + strInteger + ')';
    1341                                 interForShape = interForShape + '(';
    1342                                 interForShape = interForShape + strInteger;
    1343                                 interForShape = interForShape + ')';
    1344                             }
    1345                             else
    1346                             {
    1347                                 interForShape = interForShape + strInteger;
    1348                             }
    1349 
    1350                         }
    1351                     }
    1352                 }
    1353                 else
    1354                 {
    1355                     wrong = true;
    1356                 }
    1357                 break;
    1358             }
    1359         }
    1360     } while (wrong);
    1361     (*thisEquation).shape = interForShape;
    1362     (*thisEquation).value = value;
    1363     (*thisEquation).num += 1;
    1364     if (rand() % 2 > 0 && (*thisEquation).num < 10)
    1365     {
    1366         (*thisEquation).shape = '(' + (*thisEquation).shape + ')';
    1367         MakeBrackets(thisEquation);
    1368     }
    1369 }
    1370 
    1371 void Print()
    1372 {
    1373     int totalR=0;
    1374     ofstream ofile;
    1375     ofile.open("print.txt");
    1376     for (int i = 0; i < NUM_equation; i++)
    1377     {
    1378         if (Equation[i].isFraction)
    1379         {
    1380             string line1 = "";
    1381             string line2 = "";
    1382             string line3 = "";
    1383             bool Fin_Negative = false;
    1384             bool Fin_Numerator = false;
    1385             bool Fin_Denominator = false;
    1386             int NumNumerator = 0;
    1387             int NumDenominator = 0;
    1388             for (int j = 0;j<Equation[i].shape.length(); j++)
    1389             {
    1390                 if ((Equation[i].shape[j]<48 || Equation[i].shape[j]>57) && Equation[i].shape[j] != 'd'&& Equation[i].shape[j] != '-')
    1391                 {
    1392                     Fin_Denominator = true;
    1393                     Fin_Numerator = false;
    1394                     line1 = line1 + "   ";
    1395                     line2 = line2 + ' '+ Equation[i].shape[j] + ' ';
    1396                     line3 = line3 + "   ";
    1397                 }
    1398                 else if (Equation[i].shape[j] == '-')
    1399                 {
    1400                     if (j != 0 && (Equation[i].shape[j - 1] == '-' || Equation[i].shape[j - 1] == '+' || Equation[i].shape[j - 1] == '*' || Equation[i].shape[j - 1] == '/'))
    1401                     {
    1402                         line1 = line1 + '-';
    1403                         line2 = line2 + '-';
    1404                         line3 = line3 + ' ';
    1405                     }
    1406                     else
    1407                     {
    1408 
    1409                         Fin_Denominator = true;
    1410                         Fin_Numerator = false;
    1411 
    1412                         line1 = line1 + "   ";
    1413                         line2 = line2 + " - ";
    1414                         line3 = line3 + "   ";
    1415                     }
    1416                 }
    1417                 else if (Equation[i].shape[j] == 'd')
    1418                 {
    1419                     Fin_Numerator = true;
    1420                     Fin_Denominator = false;
    1421                     for (int k = 1;; k++)
    1422                     {
    1423                         //if ((Equation[i].shape[j + k]==NULL)||(Equation[i].shape[j + k] < 48 || Equation[i].shape[j + k] > 57))
    1424                         if ((j + k) > Equation[i].shape.length() || (Equation[i].shape[j + k] < 48 || Equation[i].shape[j + k] > 57))
    1425                         {
    1426                             NumDenominator = k - 1;
    1427                             break;
    1428                         }
    1429                     }
    1430                     for (int h = 1;; h++)
    1431                     {
    1432                         if ((j - h < 0) || (Equation[i].shape[j - h] < 48 || Equation[i].shape[j - h] > 57))
    1433                         {
    1434                             NumNumerator = h - 1;
    1435                             break;
    1436                         }
    1437                     }
    1438                     if (NumNumerator > NumDenominator)
    1439                     {
    1440                         for (int n = 0; n < NumNumerator - NumDenominator; n++)
    1441                         {
    1442                             line3 = line3 + ' ';
    1443                         }
    1444                         for (int n = 0; n < NumNumerator; n++)
    1445                         {
    1446                             line2 = line2 + '-';
    1447                         }
    1448                     }
    1449                     if (NumDenominator > NumNumerator)
    1450                     {
    1451                         for (int n = 0; n < NumDenominator - NumNumerator; n++)
    1452                         {
    1453                             line1 = line1 + ' ';
    1454                         }
    1455                         for (int n = 0; n < NumDenominator; n++)
    1456                         {
    1457                             line2 = line2 + '-';
    1458                         }
    1459                     }
    1460                     else
    1461                     {
    1462                         for (int n = 0; n < NumDenominator; n++)
    1463                         {
    1464                             line2 = line2 + '-';
    1465                         }
    1466                     }
    1467                 }
    1468                 else
    1469                 {
    1470                     if (!Fin_Numerator)
    1471                     {
    1472                         line1 = line1 + Equation[i].shape[j];
    1473                     }
    1474                     else if (!Fin_Denominator)
    1475                     {
    1476                         line3 = line3 + Equation[i].shape[j];
    1477                     }
    1478                 }
    1479             }
    1480             if (PrintToFile)
    1481             {
    1482                 ofile << line1 << endl << line2 << endl << line3 << endl << endl;
    1483             }
    1484             //else
    1485             //{
    1486                 cout << line1 << endl << line2 << endl << line3 << endl << endl;
    1487             //}
    1488 
    1489         }
    1490         else
    1491         {
    1492             if (PrintToFile)
    1493             {
    1494                 ofile << Equation[i].shape << endl << endl;
    1495             }
    1496             //else
    1497             //{
    1498                 cout << Equation[i].shape << endl << endl;
    1499             //}
    1500         }
    1501         string buffer;
    1502         bool Result_Right = true;
    1503         int NumofDiv=0;
    1504         int Numofdot = 0;
    1505         int SpaceofDiv;
    1506         cout << "结果:";
    1507         cin >> buffer;
    1508         if (!buffer.empty())
    1509         {
    1510             for (int m = 0; m < buffer.length(); m++)
    1511             {
    1512                 if ((buffer[m] < 48 || buffer[m]>57) && buffer[m] != '/'&& buffer[m] != '.'&&buffer[m]=='-')
    1513                 {
    1514                     Result_Right = false;
    1515                     break;
    1516                 }
    1517                 if (buffer[m] == '/')
    1518                 {
    1519                     NumofDiv += 1;
    1520                     if (NumofDiv > 1)
    1521                     {
    1522                         Result_Right = false;
    1523                         break;
    1524                     }
    1525                     SpaceofDiv = m;
    1526                 }
    1527                 if (buffer[m] == '.')
    1528                 {
    1529                     Numofdot += 1;
    1530                     if (Numofdot > 1)
    1531                     {
    1532                         Result_Right = false;
    1533                         break;
    1534                     }
    1535                 }
    1536             }
    1537             if (Result_Right)
    1538             {
    1539                 double result;
    1540                 if (NumofDiv == 1)
    1541                 {
    1542                     string strfor=buffer.substr(0,SpaceofDiv);
    1543                     string strlat = buffer.substr(SpaceofDiv+1,buffer.length()-SpaceofDiv-1);
    1544                     double former = atof(strfor.c_str());
    1545                     double latter = atof(strlat.c_str());
    1546                     if ((latter - 0) < 1E-7 && (latter - 0) > (-1E-7))
    1547                     {
    1548                         Result_Right = false;
    1549                         break;
    1550                     }
    1551                     result = former / latter;
    1552                 }
    1553                 else
    1554                 {
    1555                     result = atof(buffer.c_str());
    1556                 }
    1557                 if ((result - Equation[i].value) < 1E-2 && (result - Equation[i].value) > -(1E-2))
    1558                 {
    1559                     Result_Right = true;
    1560                 }
    1561                 else
    1562                 {
    1563                     Result_Right = false;
    1564                 }
    1565             }
    1566             if (Result_Right)
    1567             {
    1568                 cout << "正确!" << endl << endl;
    1569                 totalR += 1;
    1570             }
    1571             else
    1572             {
    1573                 cout << "错误!" << endl << endl;
    1574             }
    1575         }
    1576         else
    1577         {
    1578             cout << "错误!" << endl << endl;
    1579         }
    1580     }
    1581     ofile.close();
    1582     cout << "" << NUM_equation << "道题,其中答对了" << totalR << "道题。" << endl;
    1583 }
    1584 
    1585 int main()
    1586 {
    1587     system("mode con: cols=120 lines=40");
    1588     srand(time(0));
    1589     getRequirement();
    1590     CreateEquation();
    1591     Print();
    1592     return 0;
    1593 }
    View Code

    截图:

    此次结对编程合作者是同班的李娜(20132985),链接:

    http://www.cnblogs.com/linanil/p/5296597.html

    项目计划总结:

    日期&&任务 听课 编写程序 阅读相关书籍 网上查资料 日总计
    周一 2 3     5
    周二     1   1
    周三       1 1
    周四 2       2
    周五   3   1 4
    周六   10   2 12
    周日     2   2
    周总计 4 16 3 4 27

    时间纪录日志:

    日期 开始时间 结束时间 中断时间 净时间 活动 备注
    3/14 14:00 15:00 10 100 听课 软件工程
      16:00 20:00 60 180 继续上周的代码 二柱子02
    3/16 15:00 21:00 120 240

    继续上周代码、

    二柱子03代构思

     
    3/17 14:00 15:00 10 100 听课 软件工程
      20:00 22:00 60 60 写代码、吃东西  
    3/18 19:00 22:00 60 240 写代码  
    3/19 9:00 22:00 120 180 写博客、改程序、测试  

     

    缺陷记录日志:

    日期 编号 类型 引入阶段 排除阶段 修复时间 修复缺陷
    3/16 1   字符溢出 不能一起加,要分开加 120min  
    3/18 3   重复定义 修改定义 10min  
  • 相关阅读:
    Centos 卸载 MySQL
    Kafka体系架构、命令、Go案例
    Go 平滑重启(优雅重启)
    etcd集群数据迁移至新集群
    ubuntu 20.04使用TLSv1
    mybatis拦截器对SQL处理,数据权限逻辑控制
    java敏感字查找和替换
    SpringBoot自定义validation验证
    java使用druid解析器解析SQL语句
    国产数据库人大金仓 KingbaseES V8 R2 在 x86_64 Linux 安装过程
  • 原文地址:https://www.cnblogs.com/ning-JML/p/5296763.html
Copyright © 2020-2023  润新知