我有一道C++程序设计题,谁能帮我看看错在哪儿

来源:百度知道 编辑:UC知道 时间:2024/05/20 23:16:06
[题目]
已知由一个数组派生出另一个数组,其派生规则如下:假定原始数组为a[10],新数组为b[10],则b[i]的值为数组a中大于a[i]的元素的个数。例如,对于说明“int a[ ]={1,2,3,4,5};int b[5];”,其中a[1]=2,数组a中有3个元素比a[1]大,则b[1]=3。试建立一个实现此功能的类Array。具体要求如下:
(1)私有数据成员。
●int n:存放数组元素的个数。
●int *a,*b:根据n的值申请new两个动态数组,a、b指针分别指向它们。a存放原始数组,b存放派生数组。
(2)公有成员函数。
●Array(int data[ ], int n1):构造函数,用参数n1初始化n,根据n动态申请两个数组空间,并用data初始化成员数组a,数组b初始化为0。
●void process():由数组a根据上述派生规则,用循环语句计算数组b的各元素。
●void show(fstream &):输出数组a和b。
●~Array():析构函数,释放delete动态数组所占用的存储空间。
(3)在主程序中对该类进行测试。在主程序中定义一个Array类的对象v,用data数组及数组元素的个数初始化该对象,使用的测试数据为:{0,5,2,9,12,8,10,21,12,7},元素的个数为10。这些数据从输入文件中获得。然后按上述要求完成对该类的测试。
[要求]
将源程序取名为cd9.cpp,程序中使用的数据皆放在文件名为data.txt中,并使用C++读取文件的方式输入程序中需要的数据,最后程序运行的结果同时以2种方式输出:①屏幕显示方式和②文件的形式存放在文件名为result.txt中。

我编的程序:
#include<iostream.h>
#include<fstream.h>
class Array
{private:
int n;
int *a=new int[];
int *b=new int[];
public:
Array(int data[], int

你这个问题比较多啊,本来想帮你改好了发上来的,失去耐心了都。呵呵
就说第6、7行
int *a=new int[];
int *b=new int[];
你的愿意应该是
int *a=new int[n];
int *b=new int[n];
吧。
当然,这样还不够,因为你调用构造函数创建一个对象的时候
肯定是要先创建数据成员的,所以你
int *a=new int[n];
的时候,还没有给n赋值,怎么行!
这一段可改为:

int n;
int *a;
int *b;

public:
Array(int data[], int n1){
n=n1;
a=new int[n];
b=new int[n];
*a=data;
*b=0;
}

至于42行的错误,是因为你Array类的最后忘了'}'

先就这些吧,该睡了。

PS:楼主别生气,倒不是说你的错误真的很多,很大程度上是因为你的程序没有遵守iso C++98的标准,Visual C++2005下几乎编译不下去。要改就太麻烦了,楼主自己试吧
还有注意养成好的书写习惯哦