1 //信1301-1班 张鹏宇 四则运算 2 /*代码结构如下: 3 (——表示之后还有分类,否则是直接输出) 4 减法没有负数—— 5 没有乘除法—— 6 有括号 7 无括号 8 有乘除法—— 9 除法没有余数 10 除法余数不作要求 11 减法负数不做要求—— 12 没有乘除法—— 13 有括号 14 无括号 15 有乘除法—— 16 除法没有余数 17 除法余数不作要求 18 19 说明: 20 1,负数部分:先产生所有符号,存在数组,扫描,设置标志位flag=1 21 当前符号为+时:下一个符号为+或-,则产生一个随机数,并做+运算,将结果存在一个数组中,将“num1+num2”这个式子转化为字符串 22 下一个符号为*或/时,只产生一个随机数,并将flag置0 23 当前符号为-时:下一个符号为+或-,则产生一个随机数,并做-运算,将结果存在一个数组中,将“num1-num2”这个式子转化为字符串 24 下一个符号为*或/时,只产生一个随机数,并将flag置0 25 当前符号为*时:flag=1,则产生一个随机数,并做*运算,将结果存在一个数组中,将“num1*num2”这个式子转化为字符串 26 flag=0,则产生两个随机数,并做*运算,将结果存在一个数组中,将“num1*num2”这个式子转化为字符串 27 当前符号为时/:flag=1,则产生一个随机数,并做/运算,将结果存在一个数组中,将“num1/num2”这个式子转化为字符串 28 flag=0,则产生两个随机数,并做/运算,将结果存在一个数组中,将“num1/num2”这个式子转化为字符串 29 这样做考虑到优先级,存储了每一步的结果,可以保证每一步出现减法的部分都不是负数 30 而且转化为字符串便于输出 31 2,括号部分:用了两个变量,一个随机数看是否有括号,一个看括号位置 32 位置的时候用了一个flag变量,保证括号成对出现 33 而且根据符号的个数可以排除在最后一个数的时候还添加前括号,只有两个变量的时候还添加括号 34 3,余数部分:用了一个for循环,判定是除法的时候,用num1%num2做条件 35 4,乘除法部分:跟第一次作业类似,注意除数不为零 36 5,数值范围:用户输入,你懂得 37 6,定制方式:用户选择 38 39 */ 40 #include<iostream> 41 #include<stdio.h> 42 #include<time.h> 43 #include<fstream> 44 #include<string.h> 45 #include<sstream> 46 using namespace std; 47 48 void main() 49 { 50 int range,signbracket; 51 int way,bracket,minus,muldiv,div,numsign,sign; 52 int num1,num2,num3=0,number; 53 string Num1,Num2,Num3; 54 int i; 55 ofstream outfile("ZhangPY.txt",ios::out);//写 56 srand((unsigned)time(NULL)); 57 58 cout<<"请输入打印方式(文件打印请输入1,dos打印请输入0):"; 59 cin>>way; 60 cout<<"请输入操作数允许最大值: "; 61 cin>>range; 62 cout<<"减法是否出现负数(不作要求请输入1,否请输入0): "; 63 cin>>minus; 64 cout<<"是否有乘除法(是请输入1,否请输入0): "; 65 cin>>muldiv; 66 cout<<"请输入打印数量: "; 67 cin>>number; 68 if(muldiv==1) 69 { 70 cout<<"除法是否有余数(不作要求请输入1,否请输入0): "; 71 cin>>div; 72 } 73 else 74 { 75 cout<<"是否有括号(是请输入1,否请输入0): "; 76 cin>>bracket; 77 } 78 for(i=0;i<number;i++) 79 { 80 81 if(minus==0) 82 { //减法没有负数 83 if(muldiv==0) 84 { //无乘除法 85 numsign=rand()%9+1; //符号数目随机 86 num1=rand()%range; //第一个变量 87 num3=num1; 88 stringstream stream; //int转化为string 89 stream.clear(); 90 stream<< num1; 91 stream >> Num1; 92 int sb=0; 93 for(int j=0;j<numsign;j++) 94 { 95 sign=rand()%2; 96 if(bracket==0) 97 signbracket=0; 98 else 99 signbracket=rand()%2; 100 if(sign==0) 101 { //+ 102 num2=rand()%range; 103 num3=num2+num3; 104 stringstream stream; //int转化为string 105 stream<< num2; 106 stream >> Num2; 107 stream.clear(); 108 if(signbracket==1) 109 { 110 if(sb==0&&(j!=numsign-1)) 111 { 112 Num1=Num1+'+'+'('+Num2; 113 sb=-1; 114 } 115 else if(j==numsign-1&&sb==0) 116 Num1=Num1+'+'+Num2; 117 else 118 { 119 Num1=Num1+'+'+Num2+')'; 120 sb=0; 121 } 122 } 123 else 124 { 125 if(sb==-1&&j==numsign-1) 126 Num1=Num1+'+'+Num2+')'; 127 else 128 Num1=Num1+'+'+Num2; 129 } 130 } 131 else 132 { //- 133 num2=rand()%range; 134 for(;num3-num2<0;) 135 num2=rand()%range; 136 num3=num3-num2; 137 stream<< num2; 138 stream >> Num2; 139 stream.clear(); 140 if(signbracket==1) 141 { 142 if(sb==0&&(j!=numsign-1)) 143 { 144 Num1=Num1+'+'+'('+Num2; 145 sb=-1; 146 } 147 else if(j==numsign-1&&sb==0) 148 Num1=Num1+'+'+Num2; 149 else 150 { 151 Num1=Num1+'+'+Num2+')'; 152 sb=0; 153 } 154 } 155 else 156 { 157 if(sb==-1&&j==numsign-1) 158 Num1=Num1+'+'+Num2+')'; 159 else 160 Num1=Num1+'+'+Num2; 161 } 162 } 163 } 164 if(way==1) 165 { 166 if(!outfile) 167 { 168 cerr<<"open error!"<<endl; 169 exit(1); 170 } 171 else 172 outfile<<Num1<<"="<<endl; 173 } 174 else if(way==0) 175 cout<<Num1<<"="<<endl; 176 } 177 178 else 179 { //有乘除法 180 if(div==0) 181 { //没有余数 182 string answer[10]; //保存乘除结果 183 int Answer[10]; 184 int k=0; 185 bool flag=1; 186 int Sign[10]={0}; //保存符号 187 numsign=rand()%9+1; //符号数目随机 188 for(int j=0;j<numsign;j++) 189 Sign[j]=rand()%4; 190 num1=rand()%range; 191 Answer[k]=num1; 192 stringstream stream; //int转化为string 193 stream.clear(); 194 stream<< num1; 195 stream >> answer[k]; 196 for(int j=0;j<numsign;j++) //第一遍扫描处理乘除和加 197 { 198 if(Sign[j]==0) //+ 199 { 200 if(Sign[j+1]==1||Sign[j+1]==0) 201 { 202 num2=rand()%range; 203 Answer[k]=Answer[k]+num2; 204 stream.clear(); 205 stream<< num2; 206 stream >> Num2; 207 answer[k]=answer[k]+'+'+Num2; 208 } 209 else 210 { 211 num3=rand()%range; 212 stream.clear(); 213 stream<< num3; 214 stream >> Num3; 215 k=k+1; 216 flag=0; 217 } 218 } 219 else if(Sign[j]==1) //- 220 { 221 if(Sign[j+1]==0||Sign[j+1]==1) 222 { 223 num2=rand()%range; 224 for(;Answer[k]<num2;) 225 num2=rand()%range; 226 Answer[k]=Answer[k]-num2; 227 stream.clear(); 228 stream<< num2; 229 stream >> Num2; 230 answer[k]=answer[k]+'-'+Num2; 231 } 232 else 233 { 234 num3=rand()%range; 235 stream.clear(); 236 stream<< num3; 237 stream >> Num3; 238 k=k+1; 239 flag=0; 240 } 241 } 242 else if(Sign[j]==2) //* 243 { 244 if(flag==1) 245 { 246 num2=rand()%range; 247 Answer[k]=Answer[k]*num2; 248 stream.clear(); 249 stream<< num2; 250 stream >> Num2; 251 answer[k]=answer[k]+'*'+Num2; 252 } 253 else 254 { 255 num2=rand()%range; 256 Answer[k]=num3*num2; 257 stream.clear(); 258 stream<< num2; 259 stream >> Num2; 260 answer[k]=Num3+'*'+Num2; 261 flag=1; 262 } 263 } 264 else if(Sign[j]==3) // / 265 { 266 if(flag==1) 267 { 268 num2=rand()%(range)+1; 269 for(;Answer[k]%num2!=0;) 270 num2=rand()%(range)+1; 271 num3=Answer[k]/num2; 272 stream.clear(); 273 stream<< num2; 274 stream >> Num2; 275 answer[k]=answer[k]+'/'+Num2; 276 } 277 else 278 { 279 num2=rand()%(range)+1; 280 for(;num3%num2!=0;) 281 num2=rand()%(range)+1; 282 Answer[k]=num3/num2; 283 stream.clear(); 284 stream<< num2; 285 stream >> Num2; 286 answer[k]=Num3+'/'+Num2; 287 flag=1; 288 } 289 } 290 } 291 292 num3=Answer[0]; 293 Num1=answer[0]; 294 for(int j=1;j<k;j++) //处理合并 295 { 296 sign=rand()%2; 297 if(sign==0) 298 { 299 num3=num3+Answer[j]; 300 Num1=Num1+'+'+answer[j]; 301 } 302 else 303 { 304 for(;num3<Answer[j];) 305 { 306 num3=num3+Answer[j]; 307 Num1=Num1+'+'+answer[j]; 308 } 309 num3=num3-Answer[j]; 310 Num1=Num1+'-'+answer[j]; 311 } 312 } 313 if(way==1) 314 { 315 if(!outfile) 316 { 317 cerr<<"open error!"<<endl; 318 exit(1); 319 } 320 else 321 { 322 if(num1==num3) 323 outfile<<Num1<<"*1="<<endl; 324 else 325 outfile<<Num1<<"="<<endl; 326 } 327 } 328 else { 329 if(num1==num3) 330 cout<<Num1<<"*1="<<endl; 331 else 332 cout<<Num1<<"="<<endl; 333 } 334 } 335 336 else{ //余数不作要求 337 string answer[10]; //保存乘除结果 338 int Answer[10]; 339 int k=0; 340 bool flag=1; 341 int Sign[9]; //保存符号 342 numsign=rand()%9; //符号数目随机 343 numsign=numsign+1; 344 for(int j=0;j<numsign;j++) 345 Sign[j]=rand()%4; 346 num1=rand()%range; 347 Answer[k]=num1; 348 stringstream stream; //int转化为string 349 stream.clear(); 350 stream<< num1; 351 stream >> answer[k]; 352 for(int j=0;j<numsign;j++) //第一遍扫描处理乘除和加 353 { 354 if(Sign[j]==0) //+ 355 { 356 if(Sign[j+1]==1||Sign[j+1]==0) 357 { 358 num2=rand()%range; 359 Answer[k]=Answer[k]+num2; 360 stream.clear(); 361 stream<< num2; 362 stream >> Num2; 363 answer[k]=answer[k]+'+'+Num2; 364 } 365 else 366 { 367 num3=rand()%range; 368 stream.clear(); 369 stream<< num3; 370 stream >> Num3; 371 k=k+1; 372 flag=0; 373 } 374 } 375 else if(Sign[j]==1) //- 376 { 377 if(Sign[j+1]==0||Sign[j+1]==1) 378 { 379 num2=rand()%range; 380 for(;Answer[k]<num2;) 381 num2=rand()%range; 382 Answer[k]=Answer[k]-num2; 383 stream.clear(); 384 stream<< num2; 385 stream >> Num2; 386 answer[k]=answer[k]+'-'+Num2; 387 } 388 else 389 { 390 num3=rand()%range; 391 stream.clear(); 392 stream<< num3; 393 stream >> Num3; 394 k=k+1; 395 flag=0; 396 } 397 } 398 else if(Sign[j]==2) //* 399 { 400 if(flag==1) 401 { 402 num2=rand()%range; 403 Answer[k]=Answer[k]*num2; 404 stream.clear(); 405 stream<< num2; 406 stream >> Num2; 407 answer[k]=answer[k]+'*'+Num2; 408 } 409 else 410 { 411 num2=rand()%range; 412 Answer[k]=num3*num2; 413 stream.clear(); 414 stream<< num2; 415 stream >> Num2; 416 answer[k]=Num3+'*'+Num2; 417 flag=1; 418 } 419 } 420 else if(Sign[j]==3) // / 421 { 422 if(flag==1) 423 { 424 num2=rand()%(range)+1; 425 num3=Answer[k]/num2; 426 stream.clear(); 427 stream<< num2; 428 stream >> Num2; 429 answer[k]=answer[k]+'/'+Num2; 430 } 431 else 432 { 433 num2=rand()%(range)+1; 434 Answer[k]=num3/num2; 435 stream.clear(); 436 stream<< num2; 437 stream >> Num2; 438 answer[k]=Num3+'/'+Num2; 439 flag=1; 440 } 441 } 442 } 443 num3=Answer[0]; 444 Num1=answer[0]; 445 for(int j=1;j<k;j++) //处理合并 446 { 447 sign=rand()%2; 448 if(sign==0) 449 { 450 num3=num3+Answer[j]; 451 Num1=Num1+'+'+answer[j]; 452 } 453 else 454 { 455 for(;num3<Answer[j];) 456 { 457 num3=num3+Answer[j]; 458 Num1=Num1+'+'+answer[j]; 459 } 460 num3=num3-Answer[j]; 461 Num1=Num1+'-'+answer[j]; 462 } 463 } 464 if(way==1) 465 { 466 if(!outfile) 467 { 468 cerr<<"open error!"<<endl; 469 exit(1); 470 } 471 else 472 { 473 if(num1==num3) 474 outfile<<Num1<<"*1="<<endl; 475 else 476 outfile<<Num1<<"="<<endl; 477 } 478 } 479 else { 480 if(num1==num3) 481 cout<<Num1<<"*1="<<endl; 482 else 483 cout<<Num1<<"="<<endl; 484 } 485 } 486 } 487 } 488 else{ //减法不作要求 489 if(muldiv==0) 490 { //无乘除法 491 int sb=0; 492 numsign=rand()%9+1; //符号数目随机 493 num1=rand()%range; //第一个变量 494 num3=num1; 495 stringstream stream; //int转化为string 496 stream<< num1; 497 stream >> Num1; 498 stream.clear(); 499 if(bracket==0) 500 signbracket=0; 501 else 502 signbracket=rand()%2; 503 for(int j=0;j<numsign;j++) 504 { 505 sign=rand()%2; 506 if(sign==0) 507 { //+ 508 num2=rand()%range; 509 num3=num2+num3; 510 stringstream stream; //int转化为string 511 stream<< num2; 512 stream >> Num2; 513 stream.clear(); 514 if(signbracket==1) 515 { 516 if(sb==0&&(j!=numsign-1)) 517 { 518 Num1=Num1+'+'+'('+Num2; 519 sb=-1; 520 } 521 else if(j==numsign-1&&sb==0) 522 Num1=Num1+'+'+Num2; 523 else 524 { 525 Num1=Num1+'+'+Num2+')'; 526 sb=0; 527 } 528 } 529 else 530 { 531 if(sb==-1&&j==numsign-1) 532 Num1=Num1+'+'+Num2+')'; 533 else 534 Num1=Num1+'+'+Num2; 535 } 536 } 537 else 538 { //- 539 num2=rand()%range; 540 num3=num3-num2; 541 stream<< num2; 542 stream >> Num2; 543 stream.clear(); 544 if(signbracket==1) 545 { 546 if(sb==0&&(j!=numsign-1)) 547 { 548 Num1=Num1+'-'+'('+Num2; 549 sb=-1; 550 } 551 else if(j==numsign-1&&sb==0) 552 Num1=Num1+'-'+Num2; 553 else 554 { 555 Num1=Num1+'-'+Num2+')'; 556 sb=0; 557 } 558 } 559 else 560 { 561 if(sb==-1&&j==numsign-1) 562 Num1=Num1+'-'+Num2+')'; 563 else 564 Num1=Num1+'-'+Num2; 565 } 566 } 567 } 568 if(way==1) 569 { 570 if(!outfile) 571 { 572 cerr<<"open error!"<<endl; 573 exit(1); 574 } 575 else 576 outfile<<Num1<<"="<<endl; 577 } 578 else if(way==0) 579 cout<<Num1<<"="<<endl; 580 } 581 582 else 583 { //有乘除法 584 if(div==0) 585 { //没有余数 586 string answer[10]; //保存乘除结果 587 int Answer[10]; 588 int k=0; 589 bool flag=1; 590 int Sign[10]={0}; //保存符号 591 numsign=rand()%9+1; //符号数目随机 592 for(int j=0;j<numsign;j++) 593 Sign[j]=rand()%4; 594 num1=rand()%range; 595 Answer[k]=num1; 596 stringstream stream; //int转化为string 597 stream.clear(); 598 stream<< num1; 599 stream >> answer[k]; 600 for(int j=0;j<numsign;j++) //第一遍扫描处理乘除和加 601 { 602 if(Sign[j]==0) //+ 603 { 604 if(Sign[j+1]==1||Sign[j+1]==0) 605 { 606 num2=rand()%range; 607 Answer[k]=Answer[k]+num2; 608 stream.clear(); 609 stream<< num2; 610 stream >> Num2; 611 answer[k]=answer[k]+'+'+Num2; 612 } 613 else 614 { 615 num3=rand()%range; 616 stream.clear(); 617 stream<< num3; 618 stream >> Num3; 619 k=k+1; 620 flag=0; 621 } 622 } 623 else if(Sign[j]==1) //- 624 { 625 if(Sign[j+1]==0||Sign[j+1]==1) 626 { 627 num2=rand()%range; 628 Answer[k]=Answer[k]-num2; 629 stream.clear(); 630 stream<< num2; 631 stream >> Num2; 632 answer[k]=answer[k]+'-'+Num2; 633 } 634 else 635 { 636 num3=rand()%range; 637 stream.clear(); 638 stream<< num3; 639 stream >> Num3; 640 k=k+1; 641 flag=0; 642 } 643 } 644 else if(Sign[j]==2) //* 645 { 646 if(flag==1) 647 { 648 num2=rand()%range; 649 Answer[k]=Answer[k]*num2; 650 stream.clear(); 651 stream<< num2; 652 stream >> Num2; 653 answer[k]=answer[k]+'*'+Num2; 654 } 655 else 656 { 657 num2=rand()%range; 658 Answer[k]=num3*num2; 659 stream.clear(); 660 stream<< num2; 661 stream >> Num2; 662 answer[k]=Num3+'*'+Num2; 663 flag=1; 664 } 665 } 666 else if(Sign[j]==3) // / 667 { 668 if(flag==1) 669 { 670 num2=rand()%(range)+1; 671 for(;Answer[k]%num2!=0;) 672 num2=rand()%(range)+1; 673 num3=Answer[k]/num2; 674 stream.clear(); 675 stream<< num2; 676 stream >> Num2; 677 answer[k]=answer[k]+'/'+Num2; 678 } 679 else 680 { 681 num2=rand()%(range)+1; 682 for(;num3%num2!=0;) 683 num2=rand()%(range)+1; 684 Answer[k]=num3/num2; 685 stream.clear(); 686 stream<< num2; 687 stream >> Num2; 688 answer[k]=Num3+'/'+Num2; 689 flag=1; 690 } 691 } 692 } 693 num3=Answer[0]; 694 Num1=answer[0]; 695 for(int j=1;j<k;j++) //处理合并 696 { 697 sign=rand()%2; 698 if(sign==0) 699 { 700 num3=num3+Answer[j]; 701 Num1=Num1+'+'+answer[j]; 702 } 703 else 704 { 705 num3=num3-Answer[j]; 706 Num1=Num1+'-'+answer[j]; 707 } 708 } 709 if(way==1) 710 { 711 if(!outfile) 712 { 713 cerr<<"open error!"<<endl; 714 exit(1); 715 } 716 else 717 { 718 if(num1==num3) 719 outfile<<Num1<<"*1="<<endl; 720 else 721 outfile<<Num1<<"="<<endl; 722 } 723 } 724 else 725 cout<<Num1<<"="<<endl; 726 } 727 else 728 { //余数不作要求 729 string answer[10]; //保存乘除结果 730 int Answer[10]; 731 int k=0; 732 bool flag=1; 733 int Sign[9]; //保存符号 734 numsign=rand()%9; //符号数目随机 735 numsign=numsign+1; 736 for(int j=0;j<numsign;j++) 737 Sign[j]=rand()%4; 738 num1=rand()%range; 739 Answer[k]=num1; 740 stringstream stream; //int转化为string 741 stream.clear(); 742 stream<< num1; 743 stream >> answer[k]; 744 for(int j=0;j<numsign;j++) //第一遍扫描处理乘除和加 745 { 746 if(Sign[j]==0) //+ 747 { 748 if(Sign[j+1]==1||Sign[j+1]==0) 749 { 750 num2=rand()%range; 751 Answer[k]=Answer[k]+num2; 752 stream.clear(); 753 stream<< num2; 754 stream >> Num2; 755 answer[k]=answer[k]+'+'+Num2; 756 } 757 else 758 { 759 num3=rand()%range; 760 stream.clear(); 761 stream<< num3; 762 stream >> Num3; 763 k=k+1; 764 flag=0; 765 } 766 } 767 else if(Sign[j]==1) //- 768 { 769 if(Sign[j+1]==0||Sign[j+1]==1) 770 { 771 num2=rand()%range; 772 Answer[k]=Answer[k]-num2; 773 stream.clear(); 774 stream<< num2; 775 stream >> Num2; 776 answer[k]=answer[k]+'-'+Num2; 777 } 778 else 779 { 780 num3=rand()%range; 781 stream.clear(); 782 stream<< num3; 783 stream >> Num3; 784 k=k+1; 785 flag=0; 786 } 787 } 788 else if(Sign[j]==2) //* 789 { 790 if(flag==1) 791 { 792 num2=rand()%range; 793 Answer[k]=Answer[k]*num2; 794 stream.clear(); 795 stream<< num2; 796 stream >> Num2; 797 answer[k]=answer[k]+'*'+Num2; 798 } 799 else 800 { 801 num2=rand()%range; 802 Answer[k]=num3*num2; 803 stream.clear(); 804 stream<< num2; 805 stream >> Num2; 806 answer[k]=Num3+'*'+Num2; 807 flag=1; 808 } 809 } 810 else if(Sign[j]==3) // / 811 { 812 if(flag==1) 813 { 814 num2=rand()%(range)+1; 815 num3=Answer[k]/num2; 816 stream.clear(); 817 stream<< num2; 818 stream >> Num2; 819 answer[k]=answer[k]+'/'+Num2; 820 } 821 else 822 { 823 num2=rand()%(range)+1; 824 Answer[k]=num3/num2; 825 stream.clear(); 826 stream<< num2; 827 stream >> Num2; 828 answer[k]=Num3+'/'+Num2; 829 flag=1; 830 } 831 } 832 } 833 num3=Answer[0]; 834 Num1=answer[0]; 835 for(int j=1;j<k;j++) //处理合并 836 { 837 sign=rand()%2; 838 if(sign==0) 839 { 840 num3=num3+Answer[j]; 841 Num1=Num1+'+'+answer[j]; 842 } 843 else 844 { 845 for(;num3<Answer[j];) 846 num3=num3-Answer[j]; 847 Num1=Num1+'-'+answer[j]; 848 } 849 } 850 if(way==1) 851 { 852 if(!outfile) 853 { 854 cerr<<"open error!"<<endl; 855 exit(1); 856 } 857 else 858 { 859 if(num1==num3) 860 outfile<<Num1<<"*1="<<endl; 861 else 862 outfile<<Num1<<"="<<endl; 863 } 864 } 865 else 866 cout<<Num1<<"="<<endl; 867 } 868 } 869 } 870 } 871 872 }
缺陷:1,乘除加括号有的时候会出bug,会出现缺少右括号或者两个运算符在一起的情况,应该是控制条件出错了,不过调试的很长时间,没有办法保证完全正确,偶尔会有bug
2,输出算式的时候会出现,一个随机数=,的情况,循环条件的问题,多次调试未果,添加了一个条件结构弄了一个伪随机,这个做的不太好
3,添加的括号数目随机,位置随机,但是没有办法出现嵌套,也没有思路,想过用栈,不过最终没有成型,不知道具体怎么实现
4,查重,最后所有的算式都转化成了string类型,想过用string类型的数组保存所有结果外进行查重,不过代码太长了,加了几次数组,会出现结构错误,最后删除了
5,没有做分数的,不知道dos怎么输出分数,之前的分数是用除法形式输出的,这次加括号加除法二者会重复,随意没有加分数
2,输出算式的时候会出现,一个随机数=,的情况,循环条件的问题,多次调试未果,添加了一个条件结构弄了一个伪随机,这个做的不太好
3,添加的括号数目随机,位置随机,但是没有办法出现嵌套,也没有思路,想过用栈,不过最终没有成型,不知道具体怎么实现
4,查重,最后所有的算式都转化成了string类型,想过用string类型的数组保存所有结果外进行查重,不过代码太长了,加了几次数组,会出现结构错误,最后删除了
5,没有做分数的,不知道dos怎么输出分数,之前的分数是用除法形式输出的,这次加括号加除法二者会重复,随意没有加分数
项目计划纪录(单位:h):
听课 | 编写程序 | 阅读相关书籍 | 网上查找资料 | 日总结 | |
周一 | 2 | 0 | 1 | 0 | 3 |
周二 | 0 | 1 | 0 | 1 | 2 |
周三 |
0 | 5 | 0 | 0 | 5 |
周四 | 2 | 4 | 0 | 0 | 6 |
周五 | 0 | 7 | 1 | 0 | 8 |
周六 | 0 | 2 | 1 | 0 | 3 |
周日 | 0 | 0 | 0 | 0 | 0 |
周总计 | 4 | 19 | 3 | 1 | 27 |
时间记录日志(单位:min):
日期 | 开始时间 | 结束时间 | 中断时间 | 净时间 | 活动 | 备注 |
星期一 | 14:00 | 15:50 | 10 | 100 | 听课 | 软件工程 |
19:00 | 20:00 | 0 | 60 | 看书 | 构建之法 | |
星期二 | 19:00 | 20:00 | 0 | 60 | 编程 | 四则运算 |
星期三 | 15:00 | 18:00 | 20 | 160 | 编程 | |
19:30 | 22:00 | 20 | 130 | 编程 | 四则运算 | |
星期四 | 14:00 | 15:50 | 10 | 100 | 听课 | 四则运算 |
19:30 | 22:30 | 30 | 150 | 看书 | ||
星期五 | 9:00 | 9:50 | 0 | 50 | 看书 | 构建之法 |
20:00 | 22:00 | 20 | 100 | 编程 | ||
星期六 | 9:00 | 10:00 | 0 | 60 | 看书 | 构建之法 |
15:00 | 16:00 | 0 | 60 | 编程 写博客 | 构建之法 |