次の機能を実装することが望まれます。
void calc ( double* a, double* b, int r, int c, double (*f) (double) )
パラメータa、r、c、fは入力で、bは出力です。 「a」および「b」は、「r」、「row」、および「c」の列を含む2d行列です。 「f」は、次のタイプの機能を指すことができる機能ポインターです。
double function‐name ( double x ) {
…
}
Function calc
converts everyelement in matrix a、i.e.、aij、to bij = f(aij)in matrix b。
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++の出力です(Compile and Execute)ボタンをクリックしたとき:
どうしましたか?
実装をより効率的にするためのコメントに感謝します。
ソースに不正な文字が含まれているようです。どんなキャラクター\240
はあるはずですが、どうやら10行目の開始あたりです
投稿したコードでは、問題は存在しません:Live On Colir
以前の返信で述べたように、これは通常、コピーペーストされたコードをコンパイルするときに発生します。 bashシェルがある場合、通常、次のコマンドが機能します。
iconv -f utf-8 -t ascii//translit input.c > output.c
/240
エラーは、行のすべてのコードの前の不正なスペースが原因です。
例えば。
行う
printf( "Anything");
の代わりに
printf( "Anything");
IDEでコードをコピーして貼り付けると、このエラーがよく発生します。
プログラムに無効または不可視の文字が含まれています。別のWebサイトまたはドキュメントからコードをコピーして過去にコピーしたときに、これらの不可視の文字を拾った可能性が高いでしょう。サイトから別のテキストドキュメントにコードをコピーしてから、コードエディターにコピーして貼り付けることもできますが、コードの長さによっては、Word for Wordを入力してください。
行全体をコピーしただけで同じエラーが発生しましたが、コードをもう一度書き直すと、つまりコピーアンドペーストの代わりに完全に書き込むと、エラーはなくなりました。
結論:言語に受け入れられない単語がコピーされ、このエラーが発生する可能性があります。
解決策:そのコード行を削除し[*別のソース文書からコピーした場合]、自分で入力してください。
エラー:プログラム内の浮遊 '\ 240'は、単に文字エンコードエラーメッセージです。
私の経験から、それは文字エンコーディングの問題です。たとえば、Webページからコードをコピーした場合、またはIDEでコピーして貼り付ける前にテキストエディターで最初にコードを記述した場合、ソースドキュメントまたはエディターの文字エンコードが付属する場合があります。
コード全体に不正なスペースがあるため、同じ問題に直面しました。
これらのスペースのいずれかを選択し、find and replace
を使用してすべての一致を通常のスペースに置き換えて修正しました。