宣言の構文エラー?

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
家ねこ

宣言の構文エラー?

#1

投稿記事 by 家ねこ » 14年前

はじめまして。突然ですが、エラーがでで解決できません。初心者でまだわからないこといろいろなんで・・・。よろしければ知恵を貸していただきたいです。
ちなみに、Runge Kutta関数に関するものです。
エラーは: エラー E2141 無題11.c 17: 宣言の構文エラー と表示されています。

#include<stdio.h>
#include<math.h>

double function(double x, double *y, double j) // 連立方程式の右辺を求める関数//
{
double a;

if(j == 0) //i = 0のとき
a = y[1];

else //i = 1のとき
a = x * y [1] + y[0];

return a;
}

Void rungekutta(double x, double *y, double h) //Rrunge Kutta法による連立方程式の計算関数//
{
double ywork[2]; //yの変化量の一時保存用整合配列//
double k0[2], k1[2], k2[2], k3[2];
int j; //繰り返し用変数//

for(j = 0; j < 2; j++) //k1の計算//
{
k0[j] = h * function(x, y, j);
}
for(j = 0; j < 2; j++) //yの変化量y+0.5’k1を記憶//
{
ywork[j] = y[j] + 0.5 * k0[j];
}
for(j = 0; j < 2; j++) //k2の計算//
{
k1[j] = h * function(x + 0.5 * h, ywork, j);
}
for(j = 0; j < 2; j++) //yの変化量y+0.57k2を記憶//
{
ywork[j] = y[j] + 0.5 * k1[j];
}
for(j = 0; j < 2; j++) //k3の計算//
{
k2[j] = h * function(x +0.5 * h, ywork, j);
}
for(j = 0; j < 2; j++) //yの変化量y+k3を記憶//
{
ywork[j] = y[j] + k2[j];
}
for(j = 0; j < 2; j++) //k4の計算//
{
k3[j] = h * function(x + 0.5* h, ywork, j);
}
for(j = 0; j < 2; j++) //yの計算//
{
y[j] =y[j] + (k0[j] +2 * k1[j] + 2 * k2[j + k3[j]) / 6.0;
}
}

int main (void)
{
double x; //x
double y[2]; //y1, y2
double h; //刻み幅
int n; //繰り返しn
int j; //繰り返し用変数

x = 0;
h = 0.1;
y[0] = 1;
y[1] = 1;
n = 10;

for(j = 0; j < n; j++) //10回の繰り返し//
{
rungekutta(x, y, h); //Runge Kuttaの計算//
x = x + h; //xの増加//

//解の表示//
printf("\nn = %d, x = %lf, y[1] = %lf, y[2] = %lf", j+1, x, y[0], y[1]);
}
return 0;
}

asm

Re:宣言の構文エラー?

#2

投稿記事 by asm » 14年前

cppファイルにコピーしてデバッグしたところ
1>.\testmain.cpp(17) : error C2146: 構文エラー : ';' が、識別子 'rungekutta' の前に必要です。
1>.\testmain.cpp(17) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
1>.\testmain.cpp(18) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
1>.\testmain.cpp(53) : error C2143: 構文エラー : ']' が ')' の前にありません。
1>.\testmain.cpp(53) : error C2108: 添字に整数でない型が使われました。
1>.\testmain.cpp(55) : warning C4508: 'rungekutta' : 関数に戻り値の型が指定されていません。戻り値を void 型と見なします。


↓"V"oid → void 大文字によるミス
void rungekutta(double x, double *y, double h) //Rrunge Kutta法による連立方程式の計算関数//

↓* k2[j + k3[j]) → * k2[j] + k3[j]) 配列の添え字(])の抜け
y[j] =y[j] + (k0[j] +2 * k1[j] + 2 * k2[j] + k3[j]) / 6.0;

家ねこ

Re:宣言の構文エラー?

#3

投稿記事 by 家ねこ » 14年前

asm さん:
早い返答、分かりやすい説明をありがとうございました。

家ねこ

Re:宣言の構文エラー?

#4

投稿記事 by 家ねこ » 14年前

解決しました。
ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る