看代码回答,谢谢

name61 2008-03-11 10:53:34
这是一本书上的问题,下面是我的答案,显然结果不是预期的,请教高手,谢谢

#include "stdafx.h"
#include <iostream>
const int Max = 5;
const double* Fill_arr(const double* b, const double* e);
void show_arr(const double* b, const double* e);
void revalue(const double* b, const double* e);

int main(int argc, _TCHAR* argv[])
{
double properties[Max];

const double *End = Fill_arr(properties, properties+Max);
show_arr(properties, End);

return 0;
}

const double* Fill_arr(const double* begin, const double* end)
{
double temp;
const double* pt;
int i=0;
for (pt = begin; pt!=end; pt++) //可能一开始就错了
{
std::cout<<"Enter value #"<<(i+1)<<": ";
i++;
std::cin>>temp;
if (!std::cin)
{
std::cin.get();
while (std::cin.get()!='\n')
continue;
std::cout<<"Bad input; input process terminated.\n";
break;
}
pt = &temp; //怎样设置输入呢?
}
return pt; //需要返回最后被填充的位置。。??要如何返回呢
}

void show_arr(const double* begin, const double* end)
{
const double* pt;
for (pt=begin; pt!=end; pt++)
std::cout<<*pt<<' ';
std::cout<<std::endl;
}
...全文
77 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
name61 2008-03-12
  • 打赏
  • 举报
回复
!~问题解决了,先谢谢以上各位的解答
但我有点不理解的是,为何要使用 (*pt) = temp; 而不是 pt = &temp;
xzh3152 2008-03-11
  • 打赏
  • 举报
回复
return pt; //需要返回最后被填充的位置。。??要如何返回呢 return pt + i - 1;

sorry,错了,return pt; 就行了的
3楼的大哥正解
星羽 2008-03-11
  • 打赏
  • 举报
回复


#include "stdafx.h"
#include <iostream>
const int Max = 5;
const double* Fill_arr(double* b, double* e);
void show_arr(const double* b, const double* e);
void revalue(const double* b, const double* e);

int main(int argc, _TCHAR* argv[])
{
double properties[Max];

const double *End = Fill_arr(properties, properties+Max);
show_arr(properties, End);

return 0;
}

const double* Fill_arr(double* begin, double* end)
{
double temp;
double* pt;
int i=0;
for (pt = begin; pt!=end; pt++) //可能一开始就错了
{
std::cout<<"Enter value #"<<(i+1)<<": ";
i++;
std::cin>>temp;
if (!std::cin)
{
std::cin.get();
while (std::cin.get()!='\n')
continue;
std::cout<<"Bad input; input process terminated.\n";
break;
}
(*pt) = temp; //怎样设置输入呢?
}
return pt; //需要返回最后被填充的位置。。??要如何返回呢
}

void show_arr(const double* begin, const double* end)
{
const double* pt;
for (pt=begin; pt!=end; pt++)
std::cout<<*pt<<' ';
std::cout<<std::endl;
}
xzh3152 2008-03-11
  • 打赏
  • 举报
回复
pt = &temp; //怎样设置输入呢? : *pt = temp;
return pt; //需要返回最后被填充的位置。。??要如何返回呢 return pt + i - 1;
name61 2008-03-11
  • 打赏
  • 举报
回复
再把格式整理一下
#include "stdafx.h"
#include <iostream>
const int Max = 5;
const double* Fill_arr(const double* b, const double* e);
void show_arr(const double* b, const double* e);
void revalue(const double* b, const double* e);

int main(int argc, _TCHAR* argv[])
{
double properties[Max];

const double *End = Fill_arr(properties, properties+Max);
show_arr(properties, End);

return 0;
}

const double* Fill_arr(const double* begin, const double* end)
{
double temp;
const double* pt;
int i=0;
for (pt = begin; pt!=end; pt++) //可能一开始就错了
{
std::cout<<"Enter value #"<<(i+1)<<": ";
i++;
std::cin>>temp;
if (!std::cin)
{
std::cin.get();
while (std::cin.get()!='\n')
continue;
std::cout<<"Bad input; input process terminated.\n";
break;
}
pt = &temp; //怎样设置输入呢?
}
return pt; //需要返回最后被填充的位置。。??要如何返回呢
}

void show_arr(const double* begin, const double* end)
{
const double* pt;
for (pt=begin; pt!=end; pt++)
std::cout<<*pt<<' ';
std::cout<<std::endl;
}

64,670

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧