| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 2538 人关注过本帖
标题:代码通过编译,但是运行不了,
取消只看楼主 加入收藏
peng880610
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:128
专家分:123
注 册:2017-3-29
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
代码通过编译,但是运行不了,
#include <iostream>
const int Max = 5;
double * fill_array( double * begin,  double * end);
void show_array(const double * begin, const double * end);
void revalue(double r, double * begin, double * end);

using namespace std;
int main()
{
    double str[Max];
    double * strp = fill_array(str, str+Max);
    show_array(str, strp+1);
    if (*strp > 0)
    {
        cout << "Enter revaluation factor: ";
        double factor;
        while (!(cin >> factor))
        {
            cin.clear();
            while (cin.get() != '\n')
                continue;
            cout << "Bad input; Please enter a number: ";
        }
        revalue(factor, str, strp+1);
        show_array(str, strp+1);
    }
    cout << "Done!\n";
    return 0;
}
double * fill_array( double * begin,  double * end)
{
     double * pb;int i;
    for (pb = begin,i = 0; pb != end; pb++,i++)
    {
        int temp;
cout << "Enter value # " << i+1 << ": ";
        cin >> temp;
        if (!cin)
        {
            cin.clear();
            while (cin.get() != '\n')
                continue;
            break;
        }
        else if (temp < 0)
            break;
        *pb = temp;
    }
    return pb;
}

void show_array(const double * begin, const double * end)
{
    const double * pb;
    for (pb = begin; begin != end; pb++)
    {
        cout << *pb << endl;
    }
}
void revalue(double r, double * begin, double * end)
{
    double * pb;
    for (pb = begin; pb != end; pb++)
        *pb = *pb * r;
}
大神帮忙看看!
2017-08-16 21:38
peng880610
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:128
专家分:123
注 册:2017-3-29
收藏
得分:0 
回复 2楼 rjsp
对对,是我疏忽了!
这本来是书上的一个练习题,有三个函数应用于这个程序。
第一个函数是:接收用户输入的数据,并保存到一个数组。返回数组元素的个数。
第二个函数是:显示数组元素。
第三个函数是:加了一个参数,用于改变原数组数据;

题目要求:把这些函数的参数,改成使用两个指针参数来表示区间。
第一个函数返回也改成,返回一个指向最后被填充的位置的指针。
上诉代码运行之后,可以按要求输入数据,但是结束输入的时候,程序就崩溃了。
2017-08-17 18:10
peng880610
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:128
专家分:123
注 册:2017-3-29
收藏
得分:0 
回复 5楼 yangfrancis
那我这个函数应该怎样改?可能返回这块出问题了,但不知道怎么改?
我需要函数返回的是一个指针,该指针指向最后输入的哪个元素。
2017-08-17 22:47
peng880610
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:128
专家分:123
注 册:2017-3-29
收藏
得分:0 
我调试了下,是这个函数有问题,但不知道问题在哪?
void show_array(const double * begin, const double * end)
{
    const double * pb;
    for (pb = begin; begin != end; pb++)
        cout << *pb << endl;  这行代码是问题代码,求解,错在哪里,我要显示这个数组的元素。
}
2017-08-17 23:41
快速回复:代码通过编译,但是运行不了,
数据加载中...
 
   



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

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019343 second(s), 9 queries.
Copyright©2004-2025, BC-CN.NET, All Rights Reserved