1508-张晨曦总结《2016年-11月-16日》【连续26天总结】

标题:兴奋之余,我们该做些什么?

关键词:析构函数的应用

内容

A. 一句话概括今日目标完成情况

a)巩固10.4 100%

b)学习10.5、10.6 50%(非常惭愧,只完成了一半的任务量。确实是眼睛都睁不开了)

B.具体内容

 今天学习了10.5实际意义的析构函数,这个实例学的我是头昏脑胀。理解并且写完之后再一次发现编程之后找错误真是最痛苦又最幸福的事情。

因为很认真地对待这段机器人代码,今天就破个例把他贴上来吧

#include<iostream>
#include<cstring>
using namespace std;
class robot
{
	private:
		char name[20];
		char type[20];
		int num;
		char *ps;
	public:
		robot()
		{
			strcpy(name,"XXXXXX");
			strcpy(type,"XXXXXX");
			num=0;
			ps=new char(5);
			strcpy(ps,"Zero");
		}
		void set(char n[],char t[],int m);
		char *out(int a);
		char *tran_int(int n);
		void print_num();
		~robot(){
			cout<<"堆区中"<<strlen(ps)+1<<"个字节空间释放内存"<<endl;
			delete[]ps; 
		};
}; 
static char *num1[]=  
{  
    " ","one ","two ","three ","four ","five ","six ","seven ",  "eight ","nine ","ten ","eleven ","twelve ","thirteen ",  "fourteen ","fifteen ",
"sixteen ","seventeen ","eighteen ",  "nineteen "  
};  
static char *num10[]=  
{  
    " "," ","twenty ","thirty ","forty ","fifty ","sixty ","seventy ",   "eighty ","ninety "  
};  
char *robot::out(int a)
{
	char k[1000]=" ";
	int b=a%100;
	if(a/100!=0){
		strcat(k,num1[a/100]);
		strcat(k,"hundred ");
		if(b!=0){
			strcat(k,"and ");
		}
	}
	if(b<20){
		strcat(k,num1[b]);
	}
	else{
		strcat(k,num10[b/10]);
		if(b%10!=0){
			strcat(k,"\b-");
			strcat(k,num1[b%10]);
		}
	}
	char *p=new char[strlen(k)+1];
	strcpy(p,k);
	return p;	
}
char *robot::tran_int(int n)
{
	char *p;
	char kk[1000]=" ";
	if(n>1999999999){
		strcpy(kk,"dev C++平台无法处理太大的数字!\n");
	}
	else{
		int a=n/1000000000;
		int b=(n%1000000000)/1000000;
		int c=(n%1000000)/1000;
		int d=n%1000;
		if(a!=0){
			p=out(a);
			strcpy(kk,p);
			strcat(kk,"billion ");
			delete[]p;
		}
		if(b!=0){
			p=out(b);
			strcat(kk,p);
			strcat(kk,"million ");
			delete[]p;
		}
		if(c!=0){
			p=out(c);
			strcat(kk,p);
			strcat(kk,"thousand ");
			delete[]p;
		}
		if(d!=0){
			if(d<100&&(a!=0||b!=0||c!=0)){
				strcat(kk,"and ");
			}
			p=out(d);
			strcat(kk,p);
			delete[]p;
		}
	}
	p=new char[strlen(kk)+1];
	strcpy(p,kk);
	return p;
}
void robot::print_num()
{
	cout<<"整数为:"<<num<<endl;
	if(ps==NULL){
		cout<<"zero"<<endl;
	}
	else{
		cout<<ps<<endl;
	}
}
void robot::set(char n[],char t[],int m)
{
	strcpy(name,n);
	strcpy(type,t);
	if(num==m){
		return;
	}
	else{
		num=m;
		delete[]ps;
	}
	if(num>0){
		char *tp=tran_int(num);
		ps=new char[strlen(tp)+1];
		strcpy(ps,tp);
		delete[]tp;
	}
	else if(num==0){
		ps=new char[5];
		strcpy(ps,"zero");
	}
	else{
		ps=new char[13];
		strcpy(ps,"负数不能翻译");
	}
}
int main()
{
	robot Andre;
	Andre.print_num();
	int n;
	cout<<"请输入要翻译的数字n:"<<endl;
	cin>>n;
	Andre.set("Andre","1207#",n);
	Andre.print_num();
	cout<<endl;
	cout<<"Thanks for using!";
	return 0;
}

这算是使用析构函数的典型例子把。目前为止这个我写过最长的程序理解起来其实有点难度的(不和人家大神几千几万行的代码比)。来来回回写了三遍(原谅我的笨办法)。但是在翻译99以上的数字的时候就出现问题了?程序运行停止?是什么鬼?照着老师的改了半天还是不能用,很苦恼。



我发现这样看的话,其实特别直观简单。

这是框架。整个程序的框架,是他的骨头。感觉这样的方法很有效。现在每次写完长一点的代码,我总会这样合起来来看看。首先看看他的框架,然后再往框架里一点一点去充实他的血肉。


今天主要还是想讲讲这次会议。

一如既往的北式幽默(不免有点讲相声的嫌疑)。如何把大家的积极性调动起来?我相信这是一个需要每个领导者思考的问题。

思绪万千,想了很多却怎么也写不出来。

今天发生了太多事,心情很烦。

只有沉浸在代码中,才能忘却所有。C++是一个巨人的肩膀,站在上面可以看得更远。


大二了,认真点。

再不搞出点名堂了真的对不起自己了。


C.明日计划

 10.5、10.6,加快进度。(听说60天以后要学习别的东西了,我C++才到第十周,还有两周多的课程没有看,周末两天准备疯狂刷课)

我的邮箱:smartisandre@yeah.net

我的博客:http://blog.csdn.net/andr3zzzz

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值