当前位置:编程学习 > C/C++ >>

“一百分高分悬赏,答对还有追加” (请教编程高手C++主函数传递给类指针的问题)

编的是一段求平均值的程序,运行报错说:指针运算出了问题,好像是对类进行指针传递不被程序认可,不知道如何修改,还请各位大虾帮忙,小生在此感激不尽!

#include<iostream>
#include<stdlib.h>
using namespace std;

#define k 10

class filter{
private:

int n;
float *m;
public:

float zz(int c,float *d ){
n=c;
m=d;
zzz( n, m);

}

private:

float zzz(int n, float *m){
{
float g=0;
float s=0;
for(int i=0;i<n;i++)
{if *(m+g)<*(m+i)

g=i;
if *(m+s)>*(m+i)

s=i;
}
*(m+g)=0;
*(m+s)=0;
for(i=0;i<n;i++)
s+=*(m+i);

s=s/(n-2);
return s;

}
}

};




void main(){
filter f1;
int i;
float a[k];
for (i=0;i<k;i++)
{
cout<<"enter ten number"<<i<<":";
cin>>a[i];

cout<<f1. zz(k,a);

}
}

运行报错,
error C2059: syntax error : '*'
cpp(29) : error C2059: syntax error : '*'
cpp(32) : error C2111: pointer addition requires integral operand
cpp(33) : error C2111: pointer addition requires integral operand
执行 cl.exe 时出错.
答案:======================
以下代码已经调通,编译通过,
相关改的地方已经用/////////////////在后面标注了:

#include<iostream>
#include<stdlib.h>

using namespace std;

#define k 10

class filter{
private:
int n;
float *m;
public:

float zz(int c,float *d ){
n=c;
m=d;
zzz( n, m);

return 1; /////////////////
}

private:

float zzz(int n, float *m){
{
//float g=0; /////////////////
//float s=0; /////////////////
int g=0;
int s=0;

for(int i=0;i<n;i++)
{
//if *(m+g)<*(m+i) /////////////////
//g=i; /////////////////
//if *(m+s)>*(m+i) /////////////////
//s=i; /////////////////
if( m[g]<m[i] ) g=i;
if( m[s]>m[i] ) s=i;
}
*(m+g)=0;
*(m+s)=0;
for(i=0;i<n;i++)
s+=*(m+i);
s=s/(n-2);
return s;

}
}

};




void main(){
filter f1;
int i;
float a[k];
for (i=0;i<k;i++)
{
cout<<"enter ten number"<<i<<":";
cin>>a[i];
cout<<f1. zz(k,a);

}
}

一点注意:
float zz(int c,float *d )
上面这个函数之前没有返回值,我强制给返回了1,你看看按照你的设计,改一下

上一个:用C++语言编程,输入一个十进制数,输出相应的二进制数。设计一个递归函数实现数制转换,要完整的过程。
下一个:推荐出个比较实用的软件编程网站(Java,C#,VB,C++等)。

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,