宣言の構文エラー?
Posted: 2010年11月22日(月) 01:05
はじめまして。突然ですが、エラーがでで解決できません。初心者でまだわからないこといろいろなんで・・・。よろしければ知恵を貸していただきたいです。
ちなみに、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;
}
ちなみに、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;
}