初めてCを触って、困っています
こんばんわ。研究のために初めてCを触ってやっています
もともとはVBAで動かしていたのですが、ファイル操作がどうしても上手くいかない+自由度が少ないためにCを始めました
使っているのはVC++2005Express Edittionです。予想していた値と全く違う値がでて困っています。どこか間違っているのでしょうか…
-------------------------------------------------------------------
#include <stdio.h>
#include <conio.h>
#include <math.h>
int num,num_2,num_3;
double xx[100],xy[100],xz[100],yx[100],yy[100],yz[100],zx[100],zy[100],zz[100];
char mol_name[100];
double delta(char,double,double,double,double,double,double,double,double,double,int,int);
double kekka;
int arg1,arg2;
main(){
mol_name[0]='c';
xx[0]=-61.1835;
xy[0]=-19.3027;
xz[0]=0.0062;
yx[0]=-21.1311;
yy[0]=25.2157;
yz[0]=0.0037;
zx[0]=0.0018;
zy[0]=0.0009;
zz[0]=77.9485;
num_2=0;
printf_s("一番目の角度を入力してください\n");
scanf_s("%d",&arg1);
printf_s("二番目の角度を入力してください\n");
scanf_s("%d",&arg2);
printf_s("1番目は%d,2番目は%d\n",arg1,arg2);
kekka=delta(mol_name[0],xx[0],xy[0],xz[0],yx[0],yy[0],yz[0],zx[0],zy[0],zz[0],arg1,arg2);
printf_s("arg1=%d ,arg2=%d\n",arg1,arg2);
printf_s("%fが結果です",kekka);
getch();
}
double delta(atom_name,xx,xy,xz,yx,yy,yz,zx,zy,zz,atai1,atai2){
static double pi=3;
double r31,r32,r33,angle1,angle2,gamma,deta;
printf_s("π=%fです\n",pi);
printf_s("atai1=%d ,atai2=%d",atai1,atai2);
angle1=pi*atai1/180;
angle2=pi*atai2/180;
printf_s("Φ=%d ,θ=%d",angle1,angle2);
printf_s("atom_nameは%cです\n",atom_name);
if (atom_name=='c')
gamma=0.673;
else
gamma=0.673;
printf_s("%f\n",gamma);
r31=sin(angle1)*sin(angle2);
r32=sin(angle1);
r33=cos(angle1);
printf_s("%f ,%f ,%f\n",r31,r32,r33);
deta=11.7*gamma*(r31*r31*xx+r31*r32*xy+r31*r33*xz+r32*r31*yx+r32*r32*yy+r32*r33*yz+r33*r31*zx+r33*r32*zy+r33*r33*zz)/(20*pi);
return deta;
}
-----------------------------------------------------------------
例えばarg1=10 arg2=20とすると、mainの方はちゃんとarg1=10 arg2=20と出てきます
ただし、関数delta内ではatai1=10 atai2=20となるはずが、atai1=1077491512,atai2=1608035756となってしまいます。その後の値もこれのせいで無茶苦茶です
宜しくお願いいたします