我想要实现以下功能:
void calc ( double* a, double* b, int r, int c, double (*f) (double) )
参数A,R,C和f是输入和b被输出。 “a”和“B”是与“R”行和“c”的2D矩阵 列。 “f”为一个函数指针可以指向以下类型的任何功能:
double function‐name ( double x ) {
…
}
功能calc
在矩阵的每一个元件,即,共同执行活动,以在Bij的矩阵B = 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 ++ 的输出:
怎么了?
我感谢任何评论,以提高实施效率。
答案 0 :(得分:5)
正如之前的回复中所提到的,这通常在编译复制粘贴代码时出现。如果您有bash shell,则以下命令通常有效:
iconv -f utf-8 -t ascii//translit input.c > output.c
答案 1 :(得分:4)
您的来源中似乎有非法字符。我无法弄清楚\240
应该是什么字符,但显然它位于第10行的开头
在您发布的代码中,问题不存在: Live On Coliru
答案 2 :(得分:4)
/240
错误是由于每行代码之前的非法空格造成的。
例如。
待办事项
printf("Anything");
而不是
printf("Anything");
在IDE中复制并粘贴代码时,此错误很常见。
答案 3 :(得分:2)
您的程序中包含无效/不可见字符。当您从其他网站或有时是文档复制和过去代码时,您很可能会拾取这些不可见的字符。将代码从站点复制到另一个文本文档,然后复制并粘贴到代码编辑器中可能会有效,但根据代码的长度,您应该逐字逐句地输入。
答案 4 :(得分:1)
当我刚刚复制整行时我得到了同样的错误,但是当我再次重写代码时,而不是复制粘贴,完全写入它然后错误不再存在。
结论:复制的语言可能会出现一些不可接受的词语,从而导致出现此错误。
答案 5 :(得分:0)
由于我的整个代码中存在非法空格,我遇到了同样的问题。
我通过选择其中一个空格来修复它,并使用find and replace
将所有匹配替换为常规空格。
答案 6 :(得分:0)
解决方案:删除代码行[*如果您从另一个来源文档中复制]并自行输入代码。
错误:程序中的错误'\ 240'只是一个字符编码错误消息。
根据我的经验,这只是字符编码的问题。例如,如果从网页复制一段代码,或者在IDE中复制和粘贴之前首先在文本编辑器中编写代码,则可以附带源文档或编辑器的字符编码。