c++函数与数组,记录房地产价值案例

本案例是在c++perimer plus书的214页一个案例,为了方便了解代码,本文将其逐句进行了详细的注解。

#include <iostream>
using namespace std; //添加工作空间,这样在cout打印的前面不用加std::
const int MAX = 5;//定义一个常量让他的值是5
int fill_array(double arr[], int limit);//声明一下定义的函数
void show_array(const double ar[],int n);
void revalue(double r,double ar[],int n);

int main() {
    //首先创建一个数组名字,利用宏定义的方式,定义MAX,然后定义MAX=5;
    double properties[MAX];//房地产的类型是浮点类型用double
    //1:填充数组内容
    //填充数组的内容,定义一个函数fill_array,填充填充数组名和成员和成员个数
    //接下来定义函数;int fill_array(double ar[], int limit)
    //定义完成函数之后发现函数需要一个返回值size
    int size = fill_array(properties,MAX );
    //2显示数组内容
    //输入数组之后显示数组,需要显示数组名和有效输入个数size,然后定义函数
    show_array(properties,size);
    //3重新评估数组内容
    //如果显示的有效个数size>0,可以评估
    if(size >0)
    {
        //size大于0时,输入值

        cout<<"提示输入比例系数factor:";
        //比例系数设置一个因子factor,
        double factor;//设置的比例因子
        //cin>>factor;//利用cin进行捕获,捕获的数字放到factor
        //如果输入错误不能进行捕获
        while(!(cin>>factor))
        {
            cin.clear();
            while(cin.get() != '\n')
                continue;
            cout<<"输入错误"<<endl;
        }
        //修改数组
        revalue(factor,properties,size);
        //显示修改factor后的函数
        show_array(properties,size);
    }
    cout<<"done.\n";
    cin.get();
    cin.get();

    return 0;
}
//这里用int,而不用void是因为返回值最多是5个,也可能只有3,4个,所以返回值设置为return i;超过最大返回值便不能用,存储个数与i有关
int fill_array(double ar[], int limit)//函数的指针和数组有大小limit
{
    double temp;
    int i;
    //本文需要让用户输入信息,然后填充一下内容,所以用for循环
    for(int i =0; i<MAX;i++)
    {
        cout<<"ENTER #"<<(i+1)<<endl;//因为i=0,用户没有第0组,只有从第一组开始,所以i+1
        cin>>temp;//给出提示让用户输入信息,是浮点型double,在上面输入double temp;
        //如果cin输入错误,就会取反
        if (!cin)
        {
            cin.clear();//清楚错误标志位
            //把所有cin所有错误标志位除去,包括的回车等等
            //cin。get把缓冲区的字符读出来 whlie(cin.get())
            //只要读出来的内容不是回车就一直读,!='\n';只要读到回车跳过这个循环
            while(cin.get() != '\n')
                 continue;
            cout<<"输入错误"<<endl;//读到回车,提示输入错误
            break;//停止程序执行
        }
        //如果输入的值小于0,也是错误的
        else if (temp<0)
            break;
        ar[i] = temp;//正常输出结果
    }
    return i;
}
//无返回值函数,现实的数组ar和大小n,这里面指向的对象不能修改,加const
void show_array(const double ar[],int n)
{
    for(int i = 0; i<n;i++)
    {
        cout<<"property "<<(i+1)<<": $";

        cout<<ar[i]<<endl;
    }
}
void revalue(double r,double ar[],int n)
{
    for (int i = 0; i < n;i++)//需要将数组的内容都进行修改,修改ar【】
    {
        ar[i] *= r;
    }
}

猜你喜欢

转载自blog.csdn.net/qq_45677875/article/details/128267151
今日推荐