找回密码
 注册
搜索
热搜: 回贴
  • 前程无忧官网首页 有什么好的平台可以
  • 最新的销售平台 互联网营销的平台有哪
  • 制作网页的基本流程 网页制作和网页设
  • 【帝国CMS】输出带序号的列表(数字排
  • 网站建设公司 三一,中联,极东泵车的
  • 织梦 建站 织梦网站模版后台怎么更改
  • 云服务官网 哪些网站有免费的简历模板
  • 如何建网站要什么条件 建网站要用什么
  • 吉林市移动公司电话 吉林省退休人员网
  • 设计类毕业论文 网站设计与实现毕业论
查看: 785|回复: 1

这是怎么回事儿?

[复制链接]
发表于 2009-11-5 01:03:40 | 显示全部楼层 |阅读模式 IP:江苏扬州
编程实现一个可以把文本文件中的数字(文件中每行只有一个数字,行数未知)按照从大到小顺序输出,并求其平均数的类,调试连接都没问题,运行结果也正确,但是程序结束时系统跳出一个对话框,内容是:"0x00404595"指令引用的"0x00000000"内存。该内存不能为"read"。关掉此对话框之后,又跳出一个内容是"0x00404595"指令引用的"0xdddddddc"内存。该内存不能为"read"。哪里出的问题?请解释一下,谢谢

源代码如下:

//ave.h----------------------------
//---------------------------------
#ifndef HEADER_AVE
#define HEADER_AVE
#include<fstream>
using namespace std;
class Ave //定义这个类
{
protected:
double* d; //数组,用于储存文件中的数据
int s; //整形变量,数组的长度
public:
Ave(ifstream a); //构造函数
void input(ifstream a); //输入数据
void displaybyorder(); //排序并输出
double getave(); //求平均值
~Ave(); //析构
};
#endif


//ave.cpp----------------------- //类中的成员函数的定义
//------------------------------
#include "ave.h"
#include <iostream>
#include <fstream>
using namespace std;
Ave::Ave(ifstream a)
{
s=0;
double t;
for(;a>>t;s++); //用s记录文件中数据的个数
d=new double[s]; //新建一个长度为s的数组
}

void Ave::input(ifstream a)
{
for(int i=0;a>>d[i];i++);
}
void Ave::displaybyorder()
{
int i,j;
for(i=0;i<s;i++) //冒泡法排序
{
double max=d[i],t;
for(j=i+1;j<s;j++)
{
if(d[j]>max)
{
t=d[j];
d[j]=max;
max=t;
}
}
d[i]=max;
}
for(i=0;i<s;i++) //输出
cout<<d[i]<<' ';
cout<<endl;
}
double Ave::getave()
{
double sum=0;
for(int i=0;i<s;i++)
sum+=d[i];
return sum/s; //返回平均值
}
Ave::~Ave()
{
delete[] d; //释放内存
}

//main.cpp------------------------------
----------------------------------------
#include "ave.h"
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
using namespace std;
void main()
{
ifstream fin("aplusb.txt");
ifstream b("aplusb.txt");
Ave a(fin);
a.input(b);
a.displaybyorder();
double d=a.getave();
cout<<d<<endl;
}
发表于 2009-11-5 01:03:42 | 显示全部楼层 IP:江苏扬州
程序代码:
//ave.h----------------------------
//---------------------------------
#ifndef HEADER_AVE
#define HEADER_AVE
#include<fstream>
using namespace std;
class Ave //定义这个类
{
protected:
double* d; //数组,用于储存文件中的数据
int s; //整形变量,数组的长度
ifstream ins;
public:
Ave(const char *filename); //构造函数
void input(ifstream a); //输入数据
void displaybyorder(); //排序并输出
double getave(); //求平均值
~Ave(); //析构
};
#endif

//ave.cpp----------------------- //类中的成员函数的定义
//------------------------------
#include "ave.h"
#include <iostream>
#include <fstream>
using namespace std;
Ave::Ave(const char* filename)
{
ins.open(filename); //最好判断下文件是否存在,而且数据要读两遍似乎慢了点
s=0;
double t;
for(;a>>t;s++); //用s记录文件中数据的个数
d=new double[s]; //新建一个长度为s的数组
ins.close();
}
void Ave::input()
{
ins.open(filename); //最好判断下文件是否存在
for(int i=0;a>>d[i];i++);
ins.close();
}
void Ave::displaybyorder()
{
int i,j;
for(i=0;i<s;i++) //冒泡法排序
{
double max=d[i],t;
for(j=i+1;j<s;j++)
{
if(d[j]>max)
{
t=d[j];
d[j]=max;
max=t;
}
}
d[i]=max;
}
for(i=0;i<s;i++) //输出
cout<<d[i]<<' ';
cout<<endl;
}
double Ave::getave()
{
double sum=0;
for(int i=0;i<s;i++)
sum+=d[i];
return sum/s; //返回平均值
}
Ave::~Ave()
{
delete[] d; //释放内存
}
//main.cpp------------------------------
----------------------------------------
#include "ave.h"
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
using namespace std;
void main()
{
Ave a("aplusb.txt");
a.input();
a.displaybyorder();
double d=a.getave();
cout<<d<<endl;
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-10-1 09:44 , Processed in 0.197314 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表