二柱子的第三次入坑

设计思路:

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

使用结构体存储算式:

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  
原文地址:https://www.cnblogs.com/ning-JML/p/5296763.html