尝试进行一些规范化并不断出现错误
Trying to do some normalization and keep getting error
我一直收到错误"错误:从'int*'到'int'的无效转换[-fallowive]",我不知道为什么;
我这样做是为了家庭作业,我们还没有讨论指针,所以使用它们是不可能的。
这是我的代码(PS 我是编程新手(
#include <iostream>
#include <cmath>
using namespace std;
double normalize (int , int);
double normalize (double,double);
int n=0;
int i=0;
const double SIZE=5;
double mean=0;
double meanDivide;
int main()
{
char dataType;
int norm[5];
int value =1;
cout<<"Which data type do you want (i, d): ";
cin>>dataType;
if (dataType =='i')
{
while(value<5)
{
cout<<"Enter value "<<value << ": ";
cin>> norm[n];
value++;
}
}
else if (dataType=='d')
{
cout<<"Enter value "<<value << ": ";
cin>> norm[n];
value++;
}
cout<<"The mean is: "<<normalize(norm,5)/* The error comes from here and
I do not know what to do or why */
<<endl;
cout<<"The normalized values: "<<endl;
int j=0;
cout<<"norm[1] = "<<norm[j]<<endl;
j++;
cout<<"norm[2] = "<<norm[j]<<endl;
j++;
cout<<"norm[3] = "<<norm[j]<<endl;
j++;
cout<<"norm[4] = "<<norm[j]<<endl;
j++;
cout<<"norm[5] = "<<norm[j]<<endl;
return 0;
}
double normalize(int norm[],int SIZE)
{
while(i<6)
{
meanDivide +=norm[i];
i++;
}
i=0;
while (i<n)
{
norm[i] -=meanDivide;
i++;
}
mean = meanDivide / 5;
return mean;
}
double normalize (double norm[],double SIZE)
{
while(i<6)
{
meanDivide +=norm[i];
i++;
}
i=0;
while (i<n)
{
norm[i] -=meanDivide;
i++;
}
mean = meanDivide / 5;
return mean;
}
这是我应该得到的输出。
//For integers:
Which data type do you want (i, d): i
Enter value 1: 0
Enter value 2: 3
Enter value 3: 4
Enter value 4: 8
Enter value 5: 12
The mean is: 5.4
The normalized values:
norm[1] = -5
norm[2] = -2
norm[3] = -1
norm[4] = 2
norm[5] = 6
//For doubles:
Which data type do you want (i, d): d
Enter value 1: 5.5
Enter value 2: 1.23
Enter value 3: 2.02
Enter value 4: 9.99
Enter value 5: 6.32
The mean is: 5.012
The normalized values:
norm[1] = 0.488
norm[2] = -3.782
norm[3] = -2.992
norm[4] = 4.978
norm[5] = 1.308
你像这样声明你的方法:
double normalize (int , int);
double normalize(double*, double);
然而,您正在尝试实现它们,例如:
double normalize(int norm[], int SIZE) {/*...*/}
double normalize(double norm[], double SIZE) {/*...*/}
请注意,参数类型不同,int, int
与int[], int
不同。这意味着您的实现实际上正在定义一个全新的函数,与您在示例顶部声明的函数无关。调用 normalize
函数时,仅找到初始声明,并尝试将int norm[5]
与失败int
匹配。若要解决此问题,请确保声明正确。将声明更改为以下内容:
double normalize(int[], int);
double normalize(double[], double);
这将修复您在此问题中提出的错误,但您的示例仍然存在其他问题。其中一些在评论中被确定。
声明非指针参数的原型:
double normalize (int , int);
double normalize (double,double);
使用指针参数调用:
cout<<"The mean is: "<<normalize(norm,5)
此时的C++编译器不关心下面带有指针参数的实现。尝试将实现与原型匹配。
也
a( 您递增value
但使用n
作为索引:
>> 规范[n]; 值++;
b( 你忽略了大小
c( 在这两种情况下,SIZE 都应该是无符号的 intd( 你的例子不是最小的 (https://stackoverflow.com/help/mcve(
您可能会发现这通常很有用:
https://ericlippert.com/2014/03/05/how-to-debug-small-programs/
相关文章:
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- QT在错误的班级中寻找空位
- vector.resize()中的分配错误
- 代码在main()中运行,但在函数中出现错误
- 释放错误后堆使用
- (C++)分析树以计算返回错误值的简单算术表达式
- Project Euler问题4的错误解决方案
- 我的字符计数代码计算错误.为什么
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 尝试导入pybind-opencv模块时出现libgtk错误
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 在某些循环内使用vector.push_back时出现分段错误
- MSVC多行宏编译器错误
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 尝试进行一些规范化并不断出现错误
- 禁止显示 wx文件名::规范化错误消息