ZBLOG

有两个类:CourseSchedule类和Course类,其关系为CourseSchedule类中的成员函数add和remove的参数是Course类的对象,courseSchedule类中要有一个成员变量用来存放多个Course,用动态分配的数组存放,add和remove函数用来添加和删除一个coureschedule中的course,course类的设计请自己完成(这里的CourseSchedule类是一个课程列表有多个课程对象)

下面是一个示例代码,演示了如何定义Course和CourseSchedule类,并实现add和remove函数来管理课程列表:

#include <iostream>

class Course {
private:
    std::string courseName;

public:
    Course(const std::string& name) : courseName(name) {}

    const std::string& getCourseName() const {
        return courseName;
    }
};

class CourseSchedule {
private:
    Course** courses;
    int size;
    int capacity;

public:
    CourseSchedule() : courses(nullptr), size(0), capacity(0) {}

    ~CourseSchedule() {
        clear();
    }

    void add(Course* course) {
        if (courses == nullptr) { // 初始化动态数组
            capacity = 1;
            courses = new Course*[capacity];
        }
        else if (size >= capacity) { // 动态扩展数组容量
            capacity *= 2;
            Course** temp = new Course*[capacity];
            for (int i = 0; i < size; ++i)
                temp[i] = courses[i];
            delete[] courses;
            courses = temp;
        }

        courses[size++] = course;
    }

    void remove(Course* course) {
        int index = -1;
        for (int i = 0; i < size; ++i) {
            if (courses[i] == course) {
                index = i;
                break;
            }
        }

        if (index != -1) { // 找到课程并移除
            --size;
            for (int i = index; i < size; ++i)
                courses[i] = courses[i + 1];

            if (size <= capacity / 2 && size > 1) { // 动态缩减数组容量
                capacity /= 2;
                Course** temp = new Course*[capacity];
                for (int i = 0; i < size; ++i)
                    temp[i] = courses[i];
                delete[] courses;
                courses = temp;
            }
        }
    }

    void clear() {
        delete[] courses;
        courses = nullptr;
        size = 0;
        capacity = 0;
    }

    void printCourses() const {
        std::cout << "Course Schedule: ";
        for (int i = 0; i < size; ++i)
            std::cout << courses[i]->getCourseName() << " ";
        std::cout << std::endl;
    }
};

int main() {
    // 创建课程对象
    Course course1("Math");
    Course course2("Physics");
    Course course3("Chemistry");

    // 创建课程表对象
    CourseSchedule schedule;

    // 添加课程到课程表
    schedule.add(&course1);
    schedule.add(&course2);
    
    // 打印当前的课程表
    schedule.printCourses();  // Output: Course Schedule: Math Physics
    
   // 删除一个课程,并打印更新后的课程表
   schedule.remove(&course1);
   schedule.printCourses();  // Output: Course Schedule: Physics

   return 0;
}

这是一个简单的示例,展示了如何定义Course和CourseSchedule类,并实现add和remove函数来管理Course对象的动态数组。你可以根据自己的需求进行进一步修改和扩展。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=13743

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?