需要我实现以下功能:
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;
}
问题是,我无法编译它。这是当我点击 Compile and Execute 按钮时 DevC++ 的输出:
怎么了?
我感谢任何评论,以使实施更有效率。
在之前的回复中提到,这通常是在编译复制粘贴代码时出现的。如果您有 Bash shell,则通常可以使用以下命令:
iconv -f utf-8 -t ascii//translit input.c > output.c
/240
错误是由于每行代码前的非法空格引起的。
例如。
做
printf("任何东西");
代替
printf("任何东西");
当您在 IDE 中复制和粘贴代码时,此错误很常见。
您的程序中有无效/不可见的字符。
当您从另一个网站或有时从文档复制和粘贴代码时,您很可能会拾取这些不可见的字符。将代码从站点复制到另一个文本文档,然后复制并粘贴到您的代码编辑器中可能会起作用,但是根据您的代码的长度,您应该逐字逐句地输入它。
我刚刚复制完整行时遇到了同样的错误,但是当我再次重写代码时,即完全写入而不是复制粘贴,然后错误不再存在。
结论:复制的语言可能有一些不可接受的词导致这个错误。
解决方案: 删除那行代码(如果你从另一个源文档复制它)并自己输入。
Error: stray '�' in program 只是一个字符编码错误消息。
根据我的经验,这只是字符编码的问题。例如,如果您从网页复制一段代码,或者您先在文本编辑器中编写代码,然后再在 IDE 中复制和粘贴,那么它可以带有源文档或编辑器的字符编码。
由于整个代码中的非法空格,我遇到了同样的问题。
我通过选择这些空格之一来修复它,并使用
find and replace
将所有匹配项替换为常规空格。
我做了以下事情来解决这个问题:
现在您应该可以毫无问题地复制文本代码了。
我清除了代码中所有的红色空间。即错误空间。然后代码工作得很好。