面向对象程序设计寒假作业2

这个作业属于哪个课程 我的班级
这个作业要求在哪里 作业要求
这个作业的目标 1继续完成编程题
2新建一个github仓库,并把作业推送到该仓库
3发布博客
作业正文 面向对象程序设计寒假作业2
面向对象程序设计编程题完善1.0
其他参考文献 使用git将项目上传到GitHub
.gitignore的使用

实践题:新建一个github仓库并把接下去的编程题的代码及测试脚本传到这个仓库。

新建仓库的过程忘记截图了。。于是只有建成后的截图


我上传过程参考的博客:使用git将项目上传到GitHub

补充截图:

.gitignore

打包放入文件夹

若初次上传,右键后点开"Git Bash Here"

打开GitHub,复制我的仓库链接

由于之前已经上传过一次,上述步骤后续无法进行,如下图:

首次上传请看上方链接!!

所以这次我直接拖动文件夹到GitHub desktop,然后抓取就完成了上传


编程题

汉字编程已经在前几天进行了修改并发布了第一版,面向对象程序设计编程题完善1.0

今天找出了一个在主函数里的小bug,原来代码为:

	if(sum>10)
	{
		int ten_position=sum/10;
		if(ten_position==1)cout<<"十";
		else{
			output(ten_position);
			cout<<"十";
		}
		output(sum%10);
	}

当输出为二十的时候,会变成:

于是做了个小改进output(sum%10); --> if(sum%10)output(sum%10);,这样就会修复。

其他函数的分块介绍已经贴在上方链接中,但肯定有人懒得点链接(看到这句话请去点点上面的链接plz),于是在这贴出完整代码:

#include<iostream>
#include<cstring>
using namespace std;
int sum;//总额 
char var[10],ini[10],oper[100];//变量variable,初始initial operation 运算
int trans(char str[])
{
	if(strcmp("零",str)==0)return 0;
	if(strcmp("一",str)==0)return 1;
	if(strcmp("二",str)==0)return 2;
	if(strcmp("三",str)==0)return 3;
	if(strcmp("四",str)==0)return 4;
	if(strcmp("五",str)==0)return 5;
	if(strcmp("六",str)==0)return 6;
	if(strcmp("七",str)==0)return 7;
	if(strcmp("八",str)==0)return 8;
	if(strcmp("九",str)==0)return 9;
	if(strcmp("十",str)==0)return 10;
} 
void deal_add(char str[])
{
	if(strcmp(" 增加 一",str)==0)sum+=1;
	if(strcmp(" 增加 二",str)==0)sum+=2;
	if(strcmp(" 增加 三",str)==0)sum+=3;
	if(strcmp(" 增加 四",str)==0)sum+=4;
	if(strcmp(" 增加 五",str)==0)sum+=5;
	if(strcmp(" 增加 六",str)==0)sum+=6;
	if(strcmp(" 增加 七",str)==0)sum+=7;
	if(strcmp(" 增加 八",str)==0)sum+=8;
	if(strcmp(" 增加 九",str)==0)sum+=9;
	if(strcmp(" 增加 十",str)==0)sum+=10;
}
void deal_minus(char str[])
{
	if(strcmp(" 减少 一",str)==0)sum-=1;
	if(strcmp(" 减少 二",str)==0)sum-=2;
	if(strcmp(" 减少 三",str)==0)sum-=3;
	if(strcmp(" 减少 四",str)==0)sum-=4;
	if(strcmp(" 减少 五",str)==0)sum-=5;
	if(strcmp(" 减少 六",str)==0)sum-=6;
	if(strcmp(" 减少 七",str)==0)sum-=7;
	if(strcmp(" 减少 八",str)==0)sum-=8;
	if(strcmp(" 减少 九",str)==0)sum-=9;
	if(strcmp(" 减少 十",str)==0)sum-=10;
}
void output(int x)
{
	if(x==0)cout<<"零";	
	if(x==1)cout<<"一";	
	if(x==2)cout<<"二";	
	if(x==3)cout<<"三";	
	if(x==4)cout<<"四";	
	if(x==5)cout<<"五";	
	if(x==6)cout<<"六";	
	if(x==7)cout<<"七";	
	if(x==8)cout<<"八";	
	if(x==9)cout<<"九";	
	if(x==10)cout<<"十";	
} 

int main()
{
	for(int i=0;i<2;i++)cin>>var;//读入变量名 
	for(int i=0;i<2;i++)cin>>ini;//读入初始值	
	sum=trans(ini);//将初始值转换为数字,赋值给总额。 
	for(;;)
	{
		cin>>var;//通过cin读入变量名,遇到空格停止 
		gets(oper);//通过gets读入计算操作,但会读入前面的一个空格,所以上方的加减函数字符串前面有空格 
		deal_add(oper);//加
		deal_minus(oper);//减 
		if(strcmp("看看",var)==0)break;//当读入“看看”时退出 
	}
	if(sum<=10)output(sum);
	if(sum>10)
	{
		int ten_position=sum/10;
		if(ten_position==1)cout<<"十";
		else{
			output(ten_position);
			cout<<"十";
		}
		if(sum%10)output(sum%10);
	}
	return 0;
}

至于助教额外要求的文件读入功能,ddl快到了,来不及写,预计过几天会研究并发布升级版本2.0.

初步思路:

头文件

#include<iostream>
#include<fstream>
#include<string>
#include<cstring>
//还是不要用万能头吧。。

文件读入部分,但目前这种方式不契合我的输入方式,所以暂时是无法输入的。

	ifstream in;
	string filename;
	getline(in,filename);
	in.open(filename.data());
	if(!in)
	{
		cout<<"打开文件出错!"<<endl;
		return 1;
	}
        
        ...
        in.close(filename.data());

制作脚本环节

我使用的是Windows批处理来制作编译器脚本。制作脚本的前24个小时内我仍然一窍不通,多亏有学长和一位L姓大佬救助。至于参考文献及链接...实在查找太多了,贴不过来...可以谷歌或者bing搜索“Windows批处理” “脚本”等你认为有关的关键字(🤝)

了解了部分知识、开始制作后,我被“编译失败”卡了6个小时。我拷来的原文本为gcc 1.cpp -o 1.exe,结果一直没发现这边写的是gcc,而我的代码使用了c++来写,自然会编译失败。于是在学长的提醒下改成了g++ 1.cpp -o 1.exe就成功了。

双击脚本 得到:

文本:

@echo off
cd /d D:/Desktop/OOP
g++ 1.cpp -o 1.exe
if exist "1.exe" echo 编译成功
if not exist "1.exe" echo 编译失败
pause

单元测试环节

脚本代码:

@echo off
cd /d D:/Desktop/OOP
set /p a=请输入所要测试单元
echo 测试开始
"%a%"
echo over
pause

这里仅对output和trans函数进行测试

output

单元测试代码:

#include<bits/stdc++.h>
using namespace std;
int sum;//总额 
char var[10],ini[10],oper[100];//变量,初始化 operation 运算
void output(int x)
{
	if(x==0)cout<<"零";	
	if(x==1)cout<<"一";	
	if(x==2)cout<<"二";	
	if(x==3)cout<<"三";	
	if(x==4)cout<<"四";	
	if(x==5)cout<<"五";	
	if(x==6)cout<<"六";	
	if(x==7)cout<<"七";	
	if(x==8)cout<<"八";	
	if(x==9)cout<<"九";	
	if(x==10)cout<<"十";	
}  
int main()
{
	for(int i=0;i<=10;i++)
	{
		output(i);
		cout<<endl;
	}
	return 0; 
} 

trans


脚本代码同上
单元测试代码:

#include<bits/stdc++.h>
using namespace std;
int sum;//总额 
char var[10],ini[10],oper[100];//变量,初始化 operation 运算
int trans(char str[])
{
	if(strcmp("零",str)==0)return 0;
	if(strcmp("一",str)==0)return 1;
	if(strcmp("二",str)==0)return 2;
	if(strcmp("三",str)==0)return 3;
	if(strcmp("四",str)==0)return 4;
	if(strcmp("五",str)==0)return 5;
	if(strcmp("六",str)==0)return 6;
	if(strcmp("七",str)==0)return 7;
	if(strcmp("八",str)==0)return 8;
	if(strcmp("九",str)==0)return 9;
	if(strcmp("十",str)==0)return 10;
} 
int main()
{
	char s[10];
	for(int i=1;i<=5;i++)//测试五个数据
	{
		gets(s);
		cout<<trans(s)<<endl; 
	} 
	return 0; 
} 
posted @ 2020-02-05 14:45  LiangYC1021  阅读(180)  评论(0编辑  收藏  举报