| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1004 人关注过本帖
标题:[求助]求做一题
只看楼主 加入收藏
chenkuanyi
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2007-4-21
收藏
 问题点数:0 回复次数:6 
[求助]求做一题

这个题不会,做不出来,又没有答案!
请大家做一下!不胜感激!

设一维数组的每个元素具有年,月,日结构类型,设计一个函数COPY,实现数组整体赋值.

下面是我做的,但错的太多啊!

#include <iostream>
#include <string>
using namespace std;
struct Date
{
Date(){};
Date(int year,int month,int day)
{
Year=year;
Month=month;
Day=day;
}
int Year;
int Month;
int Day;
};
class Array
{
public:
Array(int n )
{
size=n;
};
void Copy(Date A[],Date B[],size);
int size;
Date Array1[size];
Date Array2[size];
};
void Array:: Copy(Date A[],Date B[],size)
{
for(int i=0;i<size;i++)
{
B[i].Year=A[i].Year;
B[i].Month=A[i].Month;
B[i].Day=A[i].Day;
}
}

void main()
{
Array Array(2);
Array.Array1[2]={{2007,5,3},{2007,8,6}},Array.Array2[2]={{0,0,0},{0,0,0}};
Copy(Array2,Array1,2);
for(int i=0;i<2;i++)
cout<<Array1[i].Year<<"\t"<<Array1[i].Month<<"\t"<<Array1[i].Day<<endl;
}

4.cpp(24) : error C2061: 语法错误 : 标识符“size”
4.cpp(26) : error C2327: “Array::size”: 不是类型名称、静态或枚举数
4.cpp(26) : error C2065: “size”: 未声明的标识符
4.cpp(27) : error C2327: “Array::size”: 不是类型名称、静态或枚举数
4.cpp(29) : error C2061: 语法错误 : 标识符“size”
4.cpp(42) : error C2059: 语法错误 : “{”
4.cpp(42) : error C2143: 语法错误 : 缺少“;”(在“{”的前面)
4.cpp(42) : error C2143: 语法错误 : 缺少“;”(在“}”的前面)
4.cpp(42) : error C2143: 语法错误 : 缺少“;”(在“,”的前面)
4.cpp(42) : error C2059: 语法错误 : “,”
4.cpp(43) : error C2065: “Array2”: 未声明的标识符
4.cpp(43) : error C2065: “Array1”: 未声明的标识符
4.cpp(43) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
4.cpp(43) : error C2078: 初始值设定项太多
4.cpp(44) : error C2059: 语法错误 : “for”
4.cpp(44) : error C2143: 语法错误 : 缺少“)”(在“;”的前面)
4.cpp(44) : error C2143: 语法错误 : 缺少“;”(在“<”的前面)
4.cpp(44) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
4.cpp(44) : error C2143: 语法错误 : 缺少“;”(在“++”的前面)
4.cpp(44) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
4.cpp(44) : error C2086: “int i”: 重定义
4.cpp(44) : 参见“i”的声明
4.cpp(44) : error C2059: 语法错误 : “)”
4.cpp(46) : error C2059: 语法错误 : “}”
4.cpp(46) : error C2143: 语法错误 : 缺少“;”(在“}”的前面)
4.cpp(46) : error C2059: 语法错误 : “}”

但我的思想是想再创建一个类,类的包含有结构体,
表COPY函数是类的成员函数,类中的构造函数对结构体进行初始化


版主能否让我这个思维再给出个答案啊
谢谢

[此贴子已经被作者于2007-4-30 22:18:54编辑过]

搜索更多相关主题的帖子: 不胜感激 答案 
2007-04-30 19:00
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 

这样就行了吧

struct date{
int year,month,day;
}

//copy 函数,b是目标数组
void copy(date a[],date b[],int size){
for (int i = 0;i < size;++i){
b[i].year = a[i].year;
b[i].month = a[i].month;
b[i].day = a[i].day;
}
}



Fight  to win  or  die...
2007-04-30 20:35
chenkuanyi
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2007-4-21
收藏
得分:0 

#include <iostream>
#include <string>
using namespace std;
struct date
{
int year,month,day;
};

//copy 函数,b是目标数组
void copy(date a[],date b[],int size)
{
for (int i = 0;i < size;++i)
{
b[i].year = a[i].year;
b[i].month = a[i].month;
b[i].day = a[i].day;
}
}

void main()
{
date Array1[2]={{2007,5,3},{2007,8,6}},Array2[2]={{0,0,0},{0,0,0}};
copy(Array2,Array1,2);
for(int i=0;i<2;i++)
cout<<Array1[i].year<<"\t"<<Array1[i].month<<"\t"<<Array1[i].day<<endl;
}

E:\cpp\数据结构>8
0 0 0
0 0 0

这样没错,
但我的思想是想再创建一个类,类的包含有结构体,
表COPY函数是类的成员函数,类中的构造函数对结构体进行初始化

版主能否让我这个思维再给出个答案啊
谢谢

2007-04-30 22:02
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
这样没错,
但我的思想是想再创建一个类,类的包含有结构体,
表COPY函数是类的成员函数,类中的构造函数对结构体进行初始化

版主能否让我这个思维再给出个答案啊
谢谢

你想再创建一个类封装数组吧!可以这样做,但是数组的大小在编译时确定,就意味是一个常量,所以你想传一个int表示大小是做不到的,非要这样做,就得使用动态数组。

再一个,类的目的是把对象的属性,行为整合,使之可以用很自然的方式使用。这里,你创建一个类然后仅有数据成员date d[],这样做时多余的。并且这样一来初始化一个类对象也要用数组的复制,然后再定义一个类成员函数。
这样一来,我想把一个简单的问题复杂化了。


Fight  to win  or  die...
2007-04-30 22:44
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
Array Array(2);
void Array:: Copy(Date A[],Date B[],size)//size 的类型

倚天照海花无数,流水高山心自知。
2007-05-01 09:29
未入流小菜鸟
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2007-5-1
收藏
得分:0 

//简单示例
#include <iostream>
typedef struct
{
int nYear;
int nMonth;
int nDay;
} _Date;

class DDate
{
private:
_Date date;
public:
DDate(int y=0,int m=0,int d=0)
{
date.nYear = y;
date.nMonth = m;
date.nDay = d;
}
void CopyDate(DDate &other)
{
*this = other;
}
void show()
{
std::cout<<"year: "<<date.nYear<<" month: "<<date.nMonth<<" day: "<<date.nDay<<std::endl;
}
};
int main()
{
DDate a(2006,5,1);
std::cout<<"original:\n";
a.show();

DDate b;
b.CopyDate(a); //copy
std::cout<<"copy:"<<std::endl;
b.show();
return 0;
}

2007-05-01 14:00
chenkuanyi
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2007-4-21
收藏
得分:0 
回复:(未入流小菜鸟)//简单示例#include

感觉这位也是高手!!

哈哈哈

2007-05-01 14:18
快速回复:[求助]求做一题
数据加载中...
 
   



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

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