結對編程隊友代碼分析

結隊編程隊友使用的是C++語言,主函數循環是三個出題函數以及一個主函數進行登陸選擇,下面進行一部分的代碼分析。算法

代碼的一些不足之處:編程

①代碼重用度較差數組

    未使用面向對象編程,部分重複代碼能夠更充分封裝。函數

    如spa

    time_t now_time = time(NULL);  //獲取當前時間 
    struct tm *p;
    p = gmtime(&now_time);
    char filename[256] = {0};
    sprintf(filename,"%d-%d-%d-%d-%02d-%02d.txt", 1900 + p->tm_year, 1 + p->tm_mon, p->tm_mday, 8 + p->tm_hour, p->tm_min, p->tm_sec);  //將當前時間做爲爲文件名 
    ofstream mycout(filename);   //生成txt文件    

   部分大量出現,可封裝爲函數。code

②算式生成算法亟需改進對象

int bracket_l[10][3] = {0, 0, 0, 5, 0, 0, 0, 11, 0, 0, 1, 0, 0, 5, 0, 5, 11, 0, 0, 1, 11, 0, 1, 2, 0, 5, 17, 5, 11, 17}; //左半括號可能的位置 
int bracket_r[10][3] = {9, 0, 0, 14, 0, 0, 9, 19, 0, 14, 9, 0, 15, 14, 0, 20, 19, 0, 20, 9, 19, 19, 14, 9, 15, 14, 24, 26, 25, 24};  //與左半括號分別對應的右半括號位置 

    這部分是括號的位置,沒有用算法,暴力枚舉了幾種括號的插入位置,雖然支持部分多個括號的插入,可是治標不治本。blog

    但這種方法也並非沒有可取之處,此方法簡化了複雜的括號生成,用了一種較爲簡單的方法解決較爲複雜的問題,並且在絕大多數下是可以知足須要的。文檔

③未進行查重操做字符串

    需求文檔中要求進行查重,但代碼中未進行查重操做。

 

可取之處

①使用定長字符數組

    

string str1[27];  //考慮括號全部位置後建立一個長度爲27的字符串數組存儲算式 
int flag = rand() % 2;  //算式中是否出現括號 
int flag1 = rand() % 3;  //算式中是否出現平方或開根號 

        用一個定長字符數組,且僅僅是用於存儲標記。

  for (int j = 0; j < 27; j++)
        {
            if ((n > 0) && (j == 3 || j == 8 || j == 13 || j == 18 || j == 23))  //操做數的位置直接輸出隨機數 
            {
                if (radical[n - 1] == "")  //是否輸出開根號 
                {
                    mycout << radical[n - 1];
                }
                if (trig_sit[n - 1] != 3)  //是否輸出三角函數符號 
                {
                    mycout << trig[trig_sit[n - 1]];
                }
                mycout << rand() % 100 + 1;
                if (square[n - 1] == "^2")  //是否輸出平方 
                {
                    mycout << square[n - 1];
                }
                n--; 
            }
            else if (str1[j] != " ")
            {
                mycout << str1[j];
            }
        }
        mycout << "=" << endl << endl;
    }

 

    生成對應的各個算式標記後,再統一遍歷該字符數組的各個標記,從而產生各個的算式。

    避免了由於不斷的字符插入致使的字符串各字符的index紊亂的狀況,極大地減輕了工做量。

② 總體效率較高

    未使用C++的String類的成員函數,避免了耗時的插入查找操做,使程序運行效率較大提升。

相關文章
相關標籤/搜索