问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c++建立返回值为成员指针的成员函数的问题 求大神解答

发布网友 发布时间:2023-09-01 19:21

我来回答

1个回答

热心网友 时间:2024-08-17 15:13

#include <iostream>
using namespace std;

int const MAXLEN = 10; // Time的字符存储长度

class Time {
public:
Time(int h = 0,int m = 0,int s = 0) {
hour = h;
minute = m;
second = s;
}
void Seth(int h) { hour = h; }
void Setm(int m) { minute = m; }
void Sets(int s) { second = s; }
void Show() const {printf("%02d:%02d:%02d\n",hour,minute,second); }
int Geth() const { return hour; }
int Getm() const { return minute; }
int Gets() const { return second; }
private:
int hour;
int minute;
int second;
};

class DynamicTimeArray {
public:
explicit DynamicTimeArray(int n = 0) {
if(n > 0) {
point = new Time[n];
size = n;
}
else {
point  = NULL;
size = 0;
}
}
DynamicTimeArray(char *tarr[],int n);
void sort();
int search(const Time &t) const;
bool edit(const Time &t);
bool modify(int index);
void display();
~DynamicTimeArray() {delete [] point;}
private:
Time *point;
int size;
};

DynamicTimeArray::DynamicTimeArray(char *tarr[],int n) {
point = new Time[n];
int h,m,s;
for(int i = 0; i < n; ++i) {
sscanf(tarr[i],"%d:%d:%d",&h,&m,&s);
point[i].Seth(h);
point[i].Setm(m);
point[i].Sets(s);
}
size = n;
}

void DynamicTimeArray::sort() {
int i,j,k;
char front[MAXLEN],next[MAXLEN];
Time t;
for(i = 0; i < size - 1; ++i) {
k = i;
sprintf(front,"%02d:%02d:%02d",point[i].Geth(),point[i].Getm(),point[i].Gets());
for(j = i + 1; j < size; ++j) {
sprintf(next,"%02d:%02d:%02d",point[j].Geth(),point[j].Getm(),point[j].Gets());
if(strcmp(front,next) > 0) {
k = j;
sprintf(front,"%02d:%02d:%02d",point[k].Geth(),point[k].Getm(),point[k].Gets());
}
}
if(k != i) {
t = point[k];
point[k] = point[i];
point[i] = t;
}
}
}

int DynamicTimeArray::search(const Time &t) const {
int low = 0,high = size - 1,mid,cmpres;
char dest[MAXLEN],tmp[MAXLEN];
sprintf(dest,"%02d:%02d:%02d",t.Geth(),t.Getm(),t.Gets());
while(low <= high) {
mid = (low + high) / 2;
sprintf(tmp,"%02d:%02d:%02d",point[mid].Geth(),point[mid].Getm(),point[mid].Gets());
cmpres = strcmp(dest,tmp);
if(cmpres < 0) high = mid - 1;
else if(cmpres == 0) return mid;
else low = mid + 1;
}
return -1;
}

bool DynamicTimeArray::edit(const Time &t) {
int n,res = search(t);
if(res < 0) {
cout << "没找到:";
t.Show();
return false;
}
t.Show();
cout << point[res].Geth() << " 改为 :";
cin >> n;
point[res].Seth(n);
cout << point[res].Getm() << " 改为 :";
cin >> n;
point[res].Setm(n);
cout << point[res].Gets() << " 改为 :";
cin >> n;
point[res].Sets(n);
return true;
}

bool DynamicTimeArray::modify(int index) {
int n;
if(index < 0 || index > size - 1) {
cout << "数组索引越界。\n";
return false;
}
point[index].Show();
cout << point[index].Geth() << " 改为 :";
cin >> n;
point[index].Seth(n);
cout << point[index].Getm() << " 改为 :";
cin >> n;
point[index].Setm(n);
cout << point[index].Gets() << " 改为 :";
cin >> n;
point[index].Sets(n);
return true;
}

void DynamicTimeArray::display() {
for(int i = 0; i < size; ++i)
point[i].Show();
}

int main() {
char *st[MAXLEN] = {"18:56:32","25:01:01","31:10:31","10:03:20","12:12:31","21:03:08"};
int h,m,s;
DynamicTimeArray ta(st,6);
Time t;
cout << "排序前:\n";
ta.display();
ta.sort();
cout << "排序后:\n";
ta.display();
sscanf(st[1],"%d:%d:%d",&h,&m,&s);
t.Seth(h);
t.Setm(m);
t.Sets(s);
ta.edit(t);
ta.modify(5);
cout << "修改后:\n";
ta.sort();
ta.display();
return 0;
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
四开大门要多少宽度 四开大门尺寸多少 大门四开门尺寸是多少 秦昊新剧《亲爱的小孩》网上褒贬不一,你觉得这部剧是否符合现实呢? 《亲爱的小孩》妻子产后失禁,丈夫嫌弃反复洗手,你怎么看? 求推荐一个安卓手机文档管理工具吧,手机实在太乱了,也没有介绍的? 手机文件管理器哪个好用 隐私文件夹app哪个好用 泰山茶年产600吨品牌近40个销售额达5亿元 山东茶叶品牌 山东茶叶厂家 山东有哪些茶叶品牌【品牌库】 从广延路到真如中学如何走? 急求:09年广东金融学院会计(审计)分数线是多少啊 广东金融学院有统招生的专科吗? 正常呼吸每一分钟多少次 新浪微博怎样取消个人账号的企业认证 音箱老是有嗡嗡声? 如何排除音响低音炮有嗡嗡声? 音响一直嗡嗡响怎么办? ipad关机了怎么充电? ...BOSS 几点出在哪出,要坐标 详细点,看好我什么时候提问的,别找原先的... 谁能告诉我征途2所有黄绿BOSS的刷新坐标.我要坐标.不要时间.包括万宝宫... 有一块石头,不知道是什么?求专家鉴定 石器鉴别: 一块石头,求大神鉴别一下是什么石头?石器鉴别? 捡到一块很圆的石头,求专家鉴定? ...的女生,她高考压力大都要哭出来了,我该怎么安慰她 我捡到一块石头!求鉴定! ...高三女友因为学习压力大,怎样发短信鼓励她,安慰她,说些什么好?_百 ... 石头一块,黄色的求高手鉴定。 ...我女朋友高三了,我觉得她学习压力很大我该用什么话题来给她解压让... 按摩肝胆有什么好处 自己如何按摩肝俞 按摩肝俞的好处 在淘宝买的美白牙齿的东西,用了好久了...今天照镜子发现牙龈上有白点... 早上用开水泡姜片,空腹是否能喝?用量多少?怎样冲泡最好?姜片能否一起吃... 除去二氧化碳中混有的盐酸时通常将该气体通入什么溶液或者什么溶液写 ... 要除去二氧化碳气体中所混有的少量的盐酸气体最好的方法是___. 什么能除去CO2中的HCL 平常就闻不得烟味,闻到就咽喉痛,今天别人抽烟闻了一下午,然后现在发烧... ...人抽烟,烟味太浓,回家总咳嗽,别人都说我是感冒了,为什么我觉得是我闻... 我平时不咳嗽,一闻到别人抽烟的烟味,就咳嗽,是怎么回事? 乙二醇挥发会有黑色固体吗 乙二醇液体质量好,还是固体质量好 杨氏之子中孔君平的原话是什么? 谁知道爱格中的著名作家 多说几个 南风知我意的作者简介 有两个男生追我,我怎么办? 有两个男生同时追我 该怎么办 美术生高考填志愿,第一批次,第三批,第五批次为校考批次。那么我没有... 剖腹产有报销吗 农保 《诗经·卫风·氓》:曾经笑嘻嘻的小伙儿,最终还是选择抛弃了我_百度... 用诗一般的语言翻译《氓》 求改编的搞笑版诗经《氓》,拜托了,谢谢