软件工程第二次作业:熟悉使用工具

第二次作业:熟悉使用工具

GIT地址 https://github.com/
GIT用户名 Sisyphus121
学号后五位 61313
博客地址 我的博客
作业链接 https://www.cnblogs.com/harry240/p/11515697.html
1.环境配置

我使用的是VS2019版本,之前在做C++课程的作业时已经使用了VS,环境配置没有截图。

安装了Git和GitHub。

2.问题及代码

阿超家里的孩子上小学一年级了,这个暑假老师给家长们布置了一个作业:家长每天要给孩子出一些合理的,但要有些难度的四则运算题目,并且家长要对孩子的作业打分记录。

作为程序员的阿超心想,既然每天都需要出题,那何不做一个可以自动生成小学四则运算题目与解决题目的命令行 “软件”呢。他把老师的话翻译一下,就形成了这个软件的需求:

程序接收一个命令行参数 n,然后随机产生 n 道加减乘除(分别使用符号+-*/来表示)练习题,每个数字在 0 和 100 之间,运算符在 2 个 到 3 个之间。
由于阿超的孩子才上一年级,并不知道分数。所以软件所出的练习题在运算过程中不得出现非整数,比如不能出现 3÷5+2=2.6 这样的算式。
练习题生成好后,将生成的 n 道练习题及其对应的正确答案输出到一个文件 subject.txt 中。

当程序接收的参数为4时,以下为一个输出文件示例。

13+17-1=29
11*15-5=160
3+10+4-16=1
15÷5+3-2=4

代码

#include <iostream>
#include <ctime>
#include <fstream>

using namespace std;

int getrandnum();//获取1-100的随机数字
char getrandsignal();//随机获取四个运算符
bool judgeint(int ,int[] ,char[] );//判断结果是否为整数
void filein(int , int[] , char[] );//将算式写入到文本文档中
void display(int , int[] , char[] );//屏幕输出算式
int main()
{
	int n;
	int m,i,j;
	int num[5];
	char sign[5];
	fstream file("subject.txt", ios::out);//清空subject文档
	cout << "请输入要产生的题目数量: ";
	cin >> n;
	cout << "题目:" << endl;
	srand(time(0));//获取随机数

	while (n != 0) {//算式生成
		m = rand() % 4 + 2;
		for (i = 0; i < m; i++) {
			num[i] = getrandnum();
		}
		for (i = 0; i < m - 1; i++) {
			sign[i] = getrandsignal();
		}
		if(judgeint(m,num,sign))
		{
			n--;
			display(m, num, sign);
			filein(m, num, sign);
		}
	}
}

//获取1-100的随机数字
int getrandnum() {
	return rand() % 100 + 1;
}

//随机获取四个运算符
char getrandsignal() {
	char signal[4] = { '+','-','*','/' };
	int q;
	q = rand() % 4;
	return signal[q];
}

//判断结果是否为整数
bool judgeint(int k, int num[5], char sign[5]) {
	int c1=0;
		for (int j = 0; j < k - 1; j++) {
			if (sign[j] == '/')
				c1 = num[j] % num[j + 1];
		}
	if (c1 != 0)
		return false;
	else
		return true;
}

//将算式写入到文本文档中
void filein(int k, int num[5], char sign[5]){
	ofstream questions("subject.txt", ios::app);
	if (questions.is_open()) {
		for (int i = 0; i < k-1; i++) {
			questions << num[i] << sign[i];
	}
	questions << num[k - 1];
		questions << " =\n";
		questions.close();
	}
}

//屏幕输出算式
void display(int k, int num[5], char sign[5]) {
	
	for (int i = 0; i < k-1; i++) {
		cout << num[i] << sign[i];
	}
	cout << num[k - 1];
	cout << '=' << endl;
}

运行结果

3.克隆与上传

克隆部分很顺利,按照教程一下子就克隆过来了,然后开始写代码,但是上传一直出问题,现在也不清楚上传没有,问题如图:

4.感想

这次作业其实写代码并不麻烦,调试几遍也出来了自己想要的结果,但是关于vs和GitHub的使用方法还是很晕,尤其是GitHub,那一堆英文过于不友好,教程中也出现了问题,debug中有一个obj文件根本就没有,和教程上有出入,同时在用git命令时也不是很顺利,总之这次作业我只完成了代码的部分,关于GitHub和vs的使用还有再继续研究研究。

posted @ 2019-09-21 20:23  别跟我套磁递葛  阅读(222)  评论(2编辑  收藏  举报