情報工学基礎演習 波長もとめる?
C言語 ソースコード
--------------------------------------------------------------------------------------------------------------------
#include <stdio.h>
#include <math.h>
void datascan(double data[],int n);
void dataprint(double data[],int m);
void sin_kesan(double data[],double save[],int m,int n);
void cos_kesan(double data[],double save[],int m,int n);
void ru_ta(double save[],double save_c[],double save_r[],double save_ta[],double save_ta2[],int m);
int main(){
int i,j,n,m;/* n,n1=入力ようデータの個数 m=保存ようデータの個数*/
double data[100];
double save[50],save_c[50],save_r[50],save_ta[50],save_ta2[50];/* 結果保存用 */
printf("dataの個数を入力下さい\n");
scanf("%d",&n);
m=n/2;
for(i=0;i<=m;i++){
save[i]=0;
save_c[i]=0;
save_r[i]=0;
save_ta[i]=0;
save_ta2[i]=0;
}
datascan(data,n);
sin_kesan(save,data,n,m);
cos_kesan(save_c,data,n,m);
ru_ta(save,save_c,save_r,save_ta,save_ta2,m);
printf("sinの値\n");
dataprint(save,m);
printf("cosの値\n");
dataprint(save_c,m);
printf("atanの値\n");
dataprint(save_ta2,m);
printf("ruto\n");
dataprint(save_r,m);
printf("pusai\n");
dataprint(save_ta,m);
}
void datascan(double data[],int n){
int i;
printf("dataを入力して下さい");
for(i=0;i<n;i++)scanf("%lf",&data[i]);
}
void dataprint(double save[],int m){
int i;
for(i=0;i<m;i++)printf("%d番 %f \n",i+1,save[i]);
}
void sin_kesan(double save[],double data[],int n,int m){
double n1=n,m1=m;
int i,j;
for(i=0;i<m;i++){
for(j=0;j<n;j++){
save[i]+=(sin((i+1)*j/n1 * 2 * M_PI)) * data[j];
}
save[i]=save[i]/m1;
}
}
void cos_kesan(double save[],double data[],int n,int m){
double n1=n,m1=m;
int i,j;
for(i=0;i<m;i++){
for(j=0;j<n;j++){
save[i]+=(cos((i+1)*j/n1 * 2 * M_PI)) * data[j];
}
save[i]=save[i]/m1;
}
}
void ru_ta(double save[],double save_c[],double save_r[],double save_ta[],double save_ta2[],int m){
int k;
for(k=0;k<m;k++){
save_r[k]=sqrt(save[k]*save[k]+save_c[k]*save_c[k]);
if(save[k]==0){
if(save_c[k]>=0){save[k]=M_PI/2;}
else{save[k]=3*M_PI/2;}
}else if(save[k]>0){
save_ta[k]=atan(save_c[k]/save[k]);
if(save_ta[k]< 0 ){save_ta[k]=2*M_PI+save_ta[k];}
}else{save_ta[k]=atan(save_c[k]/save[k])+M_PI;
}
save_ta2[k]=atan(save_c[k]/save[k]);
}
}
------------------------------------------------------------------------------------------------------------------
使用マニュアル
まず、データの個数を入力し(おそらく12個だと思われる)
次に、グラフから求めたデータを0/12から順に入力すると、sinとの内積、など授業に必要な値が出力される
最終更新:2007年12月04日 14:33