| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 526 人关注过本帖
标题:[求助]请教一个熟悉问题但涉及一些小技巧的问题
只看楼主 加入收藏
heliujin
Rank: 2
等 级:论坛游民
帖 子:249
专家分:14
注 册:2006-3-14
结帖率:100%
收藏
 问题点数:0 回复次数:4 
[求助]请教一个熟悉问题但涉及一些小技巧的问题

程序代码如下:
#include<iostream.h>
#include<stdio.h>
#include<stdlib.h>

int d[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31},{31,29,31,30,31,30,31,31,30,31,30,31}};

class Data
{
public:
Data():sum(0)
{
data=0;
month=0;
year=1900;
}

Data(int d,int m,int y):sum(0)
{
data=d;
month=m;
year=y;
}

bool define(int x)
{
if((x%4==0&&x%100!=0)||(x%400==0))
return true;
else
return false;
}

bool defineyear()
{
if((year%4==0&&year%100!=0)||(year%400==0))
return true;
else
return false;
}

void inputdata()
{
while(f<=3)
{
cout<<"请输入年"<<endl;
int yy;
cin>>yy;
if(year<1900)
{
cout<<"底于最小值"<<endl;
f=f+1;
}

else if(year>3000)
{
cout<<"大于最大值"<<endl;
f=f+1;
}

else
{
year=yy;
}
cout<<"请输入月值"<<endl;
int mm;
cin>>mm;

if(mm<=12&&mm>=1)
{
month=mm;
}
else
{
cout<<"输入月值有误"<<endl;
f=f+1;
}
cout<<"输入日值"<<endl;
int dd;
cin>>dd;
enum M1={1,3,5,7,8,10,12};//枚举应该怎么定义 我C没学好 基础有点差 希望大家指点指点吧
enum M2={4,6,9,11};
if((dd>=1&&dd<=30&&month==M2)||(dd>=1&&dd<=31&&month==M1))
{
data=dd;
}
else if(defineyear()&&month==2)
{
data=29;
}
else if(!defineyear()&&month==2)
{
data=28;
}
else
{
cout<<"输入的日值有误"<<endl;
f=f+1;
}
}
if(f>3)
{
cout<<"三次输入错误程序将终止"<<endl;
system("pause");
}
}
void sumdata()
{
int n=0;
for(int i=1900;i<=year;i++)
{
if(define(i))
{
n=n+1;
}
}

sum=sum+(year-1900-n)*365+n*366;
if(defineyear())
{
sum=sum+d[1][month-1];
}
else
{
sum=sum+d[0][month-1];
}

sum=sum+data;
}

friend Data operator-(const Data &data1,const Data &data2)
{
Data s;
s.sum=data1.sum-data2.sum;
return s;
}//为什么去掉friend就不对了 如果不用friend 那该怎么做呢?

friend ostream & operator<<(ostream &out,const Data &other)
{
out<<other.sum;
return out;
}//同上个注释
private:
int year;
int month;
int data;
int f;
int sum;
};

void main(void)
{
Data x1;
Data x2;
x1.inputdata();
x2.inputdata();
cout<<x1-x2<<endl;
}

让大家见笑了 请指点指点吧  出的问题用注释标出来了 谢谢大家了


搜索更多相关主题的帖子: 技巧 
2006-08-14 19:17
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
枚举:你要知道枚举是作用-----&gt;一种新的类型
一般都是概括某种类:比如颜色可以这样写:enum color{white,black,green};

    friend Data operator-(const Data &amp;data1,const Data &amp;data2)
    {
        Data s;
        s.sum=data1.sum-data2.sum;
        return s;
    }//为什么去掉friend就不对了 如果不用friend 那该怎么做呢?
改成:
    Data operator-(const Data &amp;data1)
    {
        Data s;
        s.sum=sum-data1.sum;
        return s;
    }

第3个,你要得到cin&gt;&gt;x;这种形式就必须是友元,否则就变成了x&gt;&gt;cin了。

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-08-14 20:31
heliujin
Rank: 2
等 级:论坛游民
帖 子:249
专家分:14
注 册:2006-3-14
收藏
得分:0 

既然能概括某种类 那肯定能按照我的思想概括几个数了 为什么我又试了却出错了呢?
能不能具体分析一下啊?谢谢了
最好详细讲一下枚举的东西 我刚才运行了 还是枚举出的问题

2006-08-15 07:19
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
枚举是不能够是数的,他们都是常数,已经有了他自己的类型了
就好比enum e1{month1,month2};
如果在一个程序中又出现enum e2{month1,month2};
他会说month1在先前的声明中是enum型,也就是说你枚举了一个已经存在的类型

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-08-17 09:53
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
比如enum c{'c','b'};这也是错的,为什么呢?
因为‘c’已经是存在的类型,他的类型是char。
枚举就是将一些 标识符 关联起来共同表示同一种类型
避免2义性,不然你随便写一个‘c’你知道他是什么类型的呢?是c类型的吗?还是char类型的呢?

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-08-17 09:58
快速回复:[求助]请教一个熟悉问题但涉及一些小技巧的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.062874 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved