第二次結對做業 四則運算生成器

#第二次結對做業 四則運算生成器ios

##1.題目要求git

  • 題目1:
    • 咱們在剛開始上課的時候介紹過一個小學四則運算自動生成程序的例子,請實現它,要求:
      • 可以自動生成四則運算練習題
      • 能夠定製題目數量
      • 用戶能夠選擇運算符
      • 用戶設置最大數(如十之內、百之內等)
      • 用戶選擇是否有括號、是否有小數
      • 用戶選擇輸出方式(如輸出到文件、打印機等)
      • 最好能提供圖形用戶界面(根據本身能力選作,以完成上述功能爲主)

完整代碼算法

##2.代碼部分 我在本次結對做業中擔任的是駕駛員的角色,負責全部代碼工做。編程

以下是涉及到的頭文件與定義變量。函數

#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#include<iostream>
#include <fstream>  
#include <iomanip>  
#include<ctime>
using namespace std;
int num;//題目數量
int suanfa;//算法
int max;//最大數
int kuo;//是否有括號
int xiao;//是否有小數
int wen;//輸出到文件
float shu1, shu2, shu3;
char fuhao1, fuhao2;

如下是變量輸入部分,以完成根據用戶須要進行四則運算的生成的目標。測試

int main()
{
    srand((unsigned int)time(0));
    cout<<"請輸入生成題目數量:\n";
    cin >> num;
    while (1)
    {
        if (num > 100 || num < 0)
        {
            cout<<"輸入錯誤\n";
            cin >> num;
        }
        else
            break;
    }
    cout << "請輸入生成題目類型:\n";
    cout << "1.加減 2.乘除 3.加減乘除\n";
    cin >> suanfa;
    while (1)
    {
        if ((suanfa != 1)&&(suanfa != 2)&&(suanfa != 3))
        {
            cout << "輸入錯誤\n";
            cin >> suanfa;
        }
        else
            break;
    }
    cout << "請輸入生成最大數:\n";
    cin >> max;
    while (1)
    {
        if (max<0||max>10000)
        {
            cout << "輸入錯誤\n";
            cin >> max;
        }
        else
            break;
    }
    cout << "請輸入是否有括號:\n";
    cout << "1.沒有 2.有\n";
    cin >> kuo;
    while (1)
    {
        if (kuo!=1 && kuo!=2)
        {
            cout << "輸入錯誤\n";
            cin >> kuo;
        }
        else
            break;
    }
    cout << "請輸入是否有小數:\n";
    cout << "1.沒有 2.有\n";
    cin >> xiao;
    while (1)
    {
        if (xiao != 1 && xiao != 2)
        {
            cout << "輸入錯誤\n";
            cin >> xiao;
        }
        else
            break;
    }

使用rand函數進行隨機數生成,分別進行小數的生成和整數的生成,以及使用隨機數生成產生所需的操做符。 經過if判斷保證所產生的隨機數與操做符在用戶所需的範圍內。spa

float decimal()
{
    float  a;
    while(1)
    {
        a = rand() % 10000 + 1;
        a = a * (0.01);
        if (a <= max)
            break;
    }
    return a;
}
int integer()
{
    int  b;
    b = rand() % max + 1;
    return b;
}
char suanfu()
{
    int  c;
    char ch;
    while(1)
    { 
        c = rand() % 4 ;
        switch (c)
        {
        case 1:ch = '+'; break;
        case 2:ch = '-'; break;
        case 3:ch = '*'; break;
        case 4:ch = '/'; break;
        }
        if ((suanfa == 1) && ((c == 1) || (c == 2)))
            break;
        if ((suanfa == 2) && ((c == 3) || (c == 4)))
            break;
        if (suanfa == 3 && ((c == 1) || (c == 2)||(c == 3) || (c == 4)))
            break;
    }
    return ch;
}

根據用戶要求的出題數量進行循環調用函數隨機生成不一樣的題目並輸出.net

int i;
    for (i = 1; i <= num; i++)
    {
        if (xiao == 1)
        {
            shu1 = integer();
            shu2 = integer();
            shu3 = integer();
        }
        else
        {
            shu1 = decimal();
            shu2 = decimal();
            shu3 = decimal();
        }
        fuhao1 = suanfu();
        fuhao2 = suanfu();
        if (kuo == 1)
        {
            wukuo();
        }
        else
        {
            int k;
            k = rand() % 2;
            if (k == 1)
                kuo1();
            else
                kuo2();
        }
    }

進行一下測試 輸入需求 輸出四則運算 還挺成功的code

##3.心得體會與總結 本次做業是第一次真正兩人在一塊兒進行結對編程,個人結對搭檔吳瓊同窗盡職盡責地完成了領航員的職責,在我進行編程時在我身邊督促我,檢查錯誤,理清思路,並幫助我查找必要的資料,在此予以至意。二人結對後感受效率有了顯著的提升,思路更加開闊,解決問題的速度也有了明顯的提高。在編程是與人合做是一種很新奇的體驗,期待合做所能讓我看見的更多可能性。 本次做業所要求的的隨機生成四則運算題最終採用了包含三個隨機數的分別進行加減、乘除、加減乘除三種模式的各分爲有無括號與有無小數的版本。整體來講用戶所需的要求已經基本實現,不過因爲技術緣由並未完成輸出到文本的方面,只能直接輸出到屏幕,這是從此仍須要鑽研和提高的部分。 本次結對做業讓我意識到了合做的重要性,面對相對複雜的算法可以有人自始至終跟進你的思路,及時找出編程中的漏洞並提出具備建設性的建議是一件很是有意義的事,這提升了編程的效率與準確性,使在編程上花的時間遠小於個人預計時間,可見結對編程的重要性,也讓我更加期待以後的團隊項目。blog

相關文章
相關標籤/搜索