結對題目:四則運算

來源:互聯網
上載者:User

標籤:idt   RoCE   ima   隨機數   info   提升   自動產生   瞭解對方   表示   

git:https://github.com/yyyyyykx/yyyyyyykx98/blob/master/1.cpp

成員:於可欣   梁子君

PSP表格:

PSP2.1

Personal Software Process Stages

預估耗時(分鐘)

實際耗時(分鐘)

Planning

計劃

30

40

· Estimate

· 估計這個任務需要多少時間

30

40

Development

開發

1260

1560

· Analysis

· 需求分析 (包括學習新技術)

300

400

· Design Spec

· 產生設計文檔

30

40

· Design Review

· 設計複審 (和同事審核設計文檔)

30

40

· Coding Standard

· 代碼規範 (為目前的開發制定合適的規範)

40

45

· Design

· 具體設計

60

65

· Coding

· 具體編碼

400

500

· Code Review

· 代碼複審

240

245

· Test

· 測試(自我測試,修改代碼,提交修改)

160

225

Reporting

報告

120

120

· Test Report

· 測試報告

40

50

· Size Measurement

· 計算工作量

40

30

· Postmortem & Process Improvement Plan

· 事後總結, 並提出流程改善計劃

40

40

合計

 

1410

1720

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

設計實現過程

設計代碼由12個函數組成,要自動產生四則運算題目並得出算術式的答案可以分成兩個部分,分別為算術式的產生和算術式結果。自動產生就表示要靠隨機函數rand()來完成,運算子的個數,運算子的種類,數位個數,數位大小都是隨機的。其中運算子的個數和數位個數是相互制約的。算術式結果的計算就是要根據先算括弧內的然後按照先乘除後加減的從左向右的運算順序來完成的。

 

代碼說明:

算術式的產生函數,先調用隨機產生運算子和隨機數的函數,然後用數組形式把它們列出來

//產生一個算術式並輸出char Formula(int range, int no,FILE *fp) {    int i,j=1;    RandomNum(range,no);  //產生隨機運算子    SignOfOperator(no);  //產生隨機數    for( i=0;i<=no; i++) {        if(n[i][1]==1) {   //若分母為1則可以確定數字為自然數            fprintf(fp,"%d",n[i][0]);            printf("%d",n[i][0]);        }        else {   //若為分數            fprintf(fp,"%d‘%d/%d",n[i][0],n[i][2],n[i][1]);            printf("%d‘%d/%d",n[i][0],n[i][2],n[i][1]);        }        fprintf(fp,"%c",sign[i]);        printf("%c",sign[i]);    }    fprintf(fp,"\n");    printf("\n");}

主函數部分:

嘗試過括弧部分但沒有成功:

//隨機是否加括弧int Bracket() {    int num;    int choice[2] = {1, 2};   //1為添加( 2為否    srand ((unsigned)time(NULL));    num = rand()%2;    return choice[num];}
//產生一個算術式void Formula(string &t) {    int i, j, b;    int num = SignOfOperatorNum();    int s[4];    char c[5];    for(i=0; i<num+1; i++) {        s[i] = RandomNum(range);   //將隨機產生的數字存入數組    }    for(j=0; j<num; j++) {        c[j] = SignOfOperator();   //將隨機產生的符號存入數組    }    b = Bracket();   //判斷是否存在括弧    int n, m;    if(b==1 && num!=1) {   //添加括弧        if(num==2) {   //當有兩個運算子時            n = rand()%2;            if(n==0) {   //在開頭加入括弧                c[3] = c[1];                c[2] = ‘)‘;                c[1] = c[0];                c[0] = ‘(‘;            } else if(n==1) {   //在第一個符號後加入括弧                c[3] = ‘)‘;                c[2] = c[1];                c[1] = ‘(‘;            }        } else if(num==3) {   //當有三個運算子時            n = rand()%3;            for( ; num>n; num--) {                c[num] = c[num-1];            }            c[n] = ‘(‘;            if(n==0) {   //在開頭加入括弧後                m = rand()%2;                for( ; num>m+1; num--) {                    c[num+1] = c[num];                }                c[m+2] = ‘)‘;            } else if(n==1) {   //在第一個運算子後加入括弧後                m = rand()%2;                for( ; num>m+2; num--) {                    c[num+1] = c[num];                }                c[m+3] = ‘)‘;            } else {   //在第二個運算子後加入括弧後                c[num+1] = ‘)‘;            }        }    }    c[num+2] = ‘=‘;    int k;    i = 0, j = 0;    for( k=0; k<num; k++) {        if(c[j]==‘(‘) {            t += c[j];            j++;        }        t += s[i];        i++;        if(c[j]==‘)‘) {            t += c[j];            j++;        }        t += c[j];        j++;    }}

 

 

測試回合

輸出題目

 

項目小結

在這次結對項目中,首先要感謝我的搭檔的積極性,作為一個有拖延症的人,我的搭檔首先對項目進行了瞭解並開始,我隨後才跟上。我也感受到和別人結對的困難,因為兩人思路上的不同,會導致瞭解對方思路的困難。但同時,我們也看到對方看不到的東西。

自身對C語言還是不夠熟悉,在編程的過程中多次出現問題導致停滯不前和一些需求並沒有實現。對學過的知識印象不夠深刻,比如資料結構。自己尋找程式bug的能力還需要鍛煉和提升。

 

結對題目:四則運算

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.