我需要实现以下功能:
void calc ( double* a, double* b, int r, int c, double (*f) (double) )
参数a、r、c和f是输入,b是输出。"a"和"b"是具有"r"行和"c"列的二维矩阵。"f"是函数指针,可以指向以下类型的任何函数:
double function‐name ( double x ) {
…
}
函数calc
将矩阵a中的每个元素(即aij)转换为矩阵b中的bij = f(aij)。
我实现了calc
函数,如下所示,并将其放入一个程序中进行测试:
#include <stdlib.h>
#include <iostream>
using namespace std;
double f1(double x){
return x * 1.7;
}
void calc (double* a, double* b, int r, int c, double (*f) (double))
{
double input;
double output;
for(int i=0; i<r*c; i++)
{
input = a[i];
output = (*f)(input);
b[i] = output;
}
}
int main()
{
// Input array:
int r=3;
int c=4;
double* a = new double[r*c];
double* b = new double[r*c];
// Fill "a" with test data
//...
for (int i=0; i<r*c; i++)
{
a[i] = i;
}
// Transform a to b
calc(a, b, r, c, f1);
// Print to test if the results are OK
//...
for (int i=0; i<r*c; i++)
{
b[i] = i;
}
return 0;
}
问题是,我无法编译它。这是当我点击 * 编译和执行 * 按钮时 * DevC ++* 的输出:
怎么啦?
我感谢任何意见,使执行更有效。
8条答案
按热度按时间zkure5ic1#
正如前面的回复中提到的,这通常发生在编译复制粘贴代码的时候。如果你有一个Bash shell,下面的命令通常可以工作:
kiayqfof2#
看起来你的源代码中有非法字符。我不知道
\240
应该是什么字符,但很明显它在第10行的开头在您发布的代码中,该问题不存在:* * 一个
eni9jsuy3#
/240
错误是由于行的每个代码前有非法空格。例如
做
代替
在IDE中复制和粘贴代码时,此错误很常见。
uyhoqukh4#
您的程序中包含无效/不可见字符。
当你从另一个网站或文档中复制粘贴代码时,你很可能会发现这些看不见的字符。将代码从网站复制到另一个文本文档中,然后复制粘贴到你的代码编辑器中可能会起作用,但根据你的代码长度,你应该一个字一个字地把它打出来。
2sbarzqh5#
我得到了同样的错误,当我刚刚复制了完整的行,但当我重写代码再次,而不是复制粘贴,写它完全然后错误不再存在。
结论:可能有一些不可接受的话,以语言得到复制导致这个错误。
niknxzdl6#
**解决方案:**删除该行代码(如果是从另一个源文档复制的),然后自己键入。
错误:程序中的“\240”只是字符编码错误消息。
根据我的经验,这只是一个字符编码的问题。例如,如果你从网页上复制一段代码,或者你在IDE中复制和粘贴之前先在文本编辑器中编写它,它可以与源文档或编辑器的字符编码一起提供。
3yhwsihp7#
由于整个代码中存在非法空格,我也遇到过同样的问题。
我通过选择其中一个空格并使用
find and replace
将所有匹配项替换为常规空格来修复它。kyks70gy8#
我做了以下工作来解决这个问题:
将损坏的代码粘贴到一个txt文件中。用一些十六进制编辑器打开代码文件。用空字符串替换文档中出现的每个“C2A0”十六进制链。保存它。现在你应该可以复制文本代码,没有任何问题。