第6回演習の解答例


(1)四角形の幅と高さを入力すると,面積と外周を求める関数.
ヒント:void area_out(float width, float height, float *area, float *out)...


#include<stdio.h>
void area_out(float width,float height,float *area,float *out)
{
	*area=width*height;
	*out=width*2.0+height*2.0;

}
void main()
{
	float h,l;
	float area=0.0;
	float out=0.0;

	printf("幅l="); scanf("%f",&l);
	printf("高さh="); scanf("%f",&h);

	area_out(l,h,&area,&out);

	printf("面積は%f,外周は%f¥n",area,out);
}

(2)自由落下運動時の加速度と時間を入力すると,速度と距離を求める関数.
ヒント:void v_s(float a, float t, float *v, float *s)...


#include<stdio.h>
void v_s(float a,float t,float *v,float *s)
{
	*v=a*t;
	*s=0.5*a*t*t;
}
void main()
{
	float a,t;
	float v=0.0;
	float s=0.0;

	printf("a="); scanf("%f",&a);
	printf("t="); scanf("%f",&t);

	v_s(a,t,&v,&s);

	printf("速度は%f,距離は%f¥n",v,s);
}

(3)抵抗と電流を入力すると,電圧と電力を求める関数.
ヒント:void v_p(float r, float i, float *v, float *p)...


#include<stdio.h>

void v_p(float r,float i,float *v,float *p)
{
	*v=r*i;
	*p=r*i*i;
	
	printf("¥n電圧は%.2f(V)です¥n電力は%.2f(W)です¥n",*v,*p);
	
	return;

}


void main()
{
	float teikou,denryu,jikan,denatsu=0.0,denryoku=0.0;
	
	printf("抵抗(Ω)を入力:");
	scanf("%f",&teikou);

	printf("電流(A)を入力:");
	scanf("%f",&denryu);
	
	v_p(teikou,denryu,&denatsu,&denryoku);
}

(4)抵抗と電流と時間を入力すると,電圧と電力と電力量を求める関数.
ヒント:void v_p_wh(float r, float i, float h, float *v, float *p, float *wh)...


#include<stdio.h>

void v_p_wh(float r,float i,float h,float *v,float *p,float *wh)
{
	*v=r*i;
	*p=*v*i;
	*wh=*p*h;
	
	printf("¥n電圧は%.2f(V)です¥n電力は%.2f(W)です¥n電力量は%.2f(Wh)です¥n",*v,*p,*wh);
	
	return;

}


void main()
{
	float teikou,denryu,jikan,denatsu=0.0,denryoku=0.0,denryokuryou=0.0;
	
	printf("抵抗(Ω)を入力:");
	scanf("%f",&teikou);

	printf("電流(A)を入力:");
	scanf("%f",&denryu);
	
	printf("時間(h)を入力:");
	scanf("%f",&jikan);
	
	v_p_wh(teikou,denryu,jikan,&denatsu,&denryoku,&denryokuryou );
}

(5)実数型配列の要素をキーボードから10個入力し,その標準偏差を求めるプログラムを作成する.配列の要素を入力する関数と,標準偏差を求める関数を作成せよ.


#include<stdio.h>
#include<math.h>
void nyuryoku(float *a,int n)
{
	int i;

	for(i=0;i<n;i++){
		printf("a[%d]=",i); scanf("%f",&a[i]);
	}
}
float hyoujyunhensa(float *a,int n)
{
	float sum1=0.0;
	float sum2=0.0;
	float heikin,bunsan,v;
	int i;
	
	for(i=0;i<n;i++){
		sum1=sum1+*(a+i);
	}
	heikin=sum1/(float)n;

	for(i=0;i<n;i++){
		sum2=sum2+(*(a+i)-heikin)*(*(a+i)-heikin);
	}
	bunsan=sum2/(float)n;
	
	v=sqrt(bunsan);

	return v;	
}
void main()
{
	float a[10],deviation;

	nyuryoku(a,10);

	deviation=hyoujyunhensa(a,10);

	printf("標準偏差=%f¥n",deviation);
}