C ++ 类 | 类与数组(Array)_4

类与数组的例子

对于此程序,请使用以下 类 来练习:

使用 Dog类 创建动物收容所名册。在 Dog类 中添加一个构造函数。 狗的初始名称是 " Unknown ";

声明并定义函数:

printRoster(roster,SIZE);

okay,我们直接上码:

using namespace std;

class Dog
{
    string name;
    int licenseNumber;
public:
    Dog();
    void setName(string nameIn);
    void setLicenseNumber(int licenseNumberIn);
    string getName();
    int getLicenseNumber();
    void printInfo();
};

Dog::Dog()
{
     name="Unknown";
}

void Dog::setName(string nameIn)
{
    name = nameIn;
}

void Dog::setLicenseNumber(int licenseNumberIn)
{
    licenseNumber = licenseNumberIn;
}

string Dog::getName()
{
    return name;
}

int Dog::getLicenseNumber()
{
    return licenseNumber;
}

void Dog::printInfo()
{
    cout<<name<<" "<<licenseNumber;
}

以上代码保存在 dog.cpp 文件里。

#include<iostream>
#include "Dog.cpp"

using namespace std;

void printRoster(Dog roster[], int size);

void printRoster(Dog roster[], int size)
{
    for(int i=0;i<size;i++)
    {
        roster[i].printInfo();
        cout<<"\n\n";
    }
}

以上代码作为头文件 main.hpp 。

#include "main.hpp"


int main()
{
    //ToDo: assign the dogs to an array called roster
    //Then assign names to the Dog.
    
    //ToDo: declare and define this function
    //in the header file
    const int SIZE=3;
    Dog roster[SIZE];

    roster[0].setName("Blue");
    roster[1].setName("King");
    roster[2].setName("Spot");

    printRoster(roster,SIZE);
    return 0;
}

运行结果:

代码解析:

void printRoster(Dog roster[], int size);

这里是创建一个 无返回值 的 函数printRoster(单词意思:打印花名册),这里重点注意 Dog roster[],这里的 roster[] 是可以调用Dog类的函数和值的。

void printRoster(Dog roster[], int size)
{
    for(int i=0;i<size;i++)
    {
        roster[i].printInfo();
        cout<<"\n\n";
    }
}

做 for 循环,让roster[i]打印出每行的信息,然后打印两个回车。注意这里的输出结果,我们没有输入license,其实内存暂时分配。


假如编程易懂得,那么程序员就不会热情地写出注释,也不会有得到编程的快乐。

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要在尽可能减少时间复杂度的情况下求表达式的最大值,可以使用双指针法来解决这个问题。以下是算法思想和步骤: 1. 首先,对数组a进行排序,以便于后续的计算。 2. 定义四个指针:i、j、k、m,初始时分别指向数组a的第一个元素。 3. 初始化最大值max_diff为0。 4. 使用循环遍历数组a,直到指针m指向数组的最后一个元素为止: - 计算当前表达式的值diff = |ai−aj|+|aj−ak|+|ak−am|+|am−ai|。 - 如果diff大于max_diff,则更新max_diff为diff。 - 将指针m向后移动一位。 - 如果指针m指向的元素与指针i指向的元素相等,则将指针i向后移动一位。 - 如果指针m指向的元素与指针j指向的元素相等,则将指针j向后移动一位。 - 如果指针m指向的元素与指针k指向的元素相等,则将指针k向后移动一位。 5. 返回最大值max_diff。 以下是使用C语言实现的代码: ```c #include <stdio.h> #include <stdlib.h> int maxExpressionValue(int a[], int n) { // Sort the array qsort(a, n, sizeof(int), compare); int i = 0, j = 0, k = 0, m = 0; int max_diff = 0; while (m < n) { int diff = abs(a[i] - a[j]) + abs(a[j] - a[k]) + abs(a[k] - a[m]) + abs(a[m] - a[i]); if (diff > max_diff) { max_diff = diff; } m++; if (m < n && a[m] == a[i]) { i++; } if (m < n && a[m] == a[j]) { j++; } if (m < n && a[m] == a[k]) { k++; } } return max_diff; } int compare(const void* a, const void* b) { return (*(int*)a - *(int*)b); } int main() { int a[] = {1, 2, 3, 4, 5}; int n = sizeof(a) / sizeof(a[0]); int max_diff = maxExpressionValue(a, n); printf("Max expression value: %d\n", max_diff); return 0; } ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值