スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

/*********************************************
度数法弧度法変換プログラム
 かみさまみならい製作

2007/01/01 version1.00完成
改良予定なし

**********************************************/
#include
#include
#include


double PI(void)
{
return acos(0)*2;

}
typedef struct tg_dosu
{
double doo;//度
double fun;//分
double byou;//秒
bool fugou;//符号マイナスなら1,プラスなら0
} dosu;

double radtofun(double radian)//ラジアンから分へ
{
return radian * 10800/PI();
}

double funtorad(double fun)//分からラジアンへ
{
return fun *PI()/10800;
}

double dotofun(dosu kaku)//度数法から分へ
{
double out;
if(kaku.fugou ==0){
out = kaku.doo*60 + kaku.fun + kaku.byou/60;
}else{
out = kaku.doo*60 + kaku.fun + kaku.byou/60;
out *= -1;
}
return out;
}

dosu funtodo(double fun)//分から度数法へ
{
dosu out;
double syou, sei;
div_t dd;

/*分の整数部分と小数部分に分ける
小数部分は60倍すると秒
整数部分は、60で割った整数部分が度
その残りが分
*/
if(fun <0){
fun *=-1, out.fugou = 1;
}else{
out.fugou =0;
}

syou = modf(fun , &sei);

dd = div(sei ,60);

out.doo = dd.quot;
out.fun = dd.rem;
out.byou= syou *60;

return out;
}

dosu radtodo(double radian) //ラジアンから度数法へ
{
return funtodo(radtofun(radian));
}

double dotorad(dosu kaku)//度数法からラジアンへ
{
return funtorad(dotofun(kaku));
}

void show_do(dosu show)
{
if(show.fugou ==1) printf("-");

printf("%3.0lf度%3.2lg分%3.2lg秒",show.doo,show.fun,show.byou);
}

void set_dotorad()
{
dosu kaku;
for(;;){
printf("\r\n度数法から弧度法に変換します。\r\n");
printf("角度を入力してください\r\n");
kaku.doo =0, kaku.fun =0,kaku.byou =0,kaku.fugou =1;
scanf("%le%le%le",&kaku.doo, &kaku.fun, &kaku.byou);
if(kaku.fun<0 ||kaku.fun >60){
printf("分は0から60間の値を入れてください\r\n");
}else if(kaku.byou<0 || kaku.byou>60){
printf("秒は0から60間の値を入れてください\r\n");
}else{
break;
}
}

if(kaku.doo >0){
kaku.fugou =0;
}else{
kaku.fugou =1, kaku.doo *=-1;
}
printf("%3.2lfrad\r\n\r\n", dotorad(kaku));

}

void set_radtodo()
{
double radian;
printf("\r\n弧度法から度数法にに変換します。\r\n");
printf("角度を入力してください\r\n");
scanf("%le", &radian);
show_do(radtodo(radian));
printf("\r\n\r\n");
}
/****************************************************************
main
****************************************************************/

int main(void)
{
int flag;

do{
do{
printf("度数法から弧度法に変換する場合は1、弧度法から度数法に変換する場合は2を、");
printf("終わる場合は0を押してください。\r\n");
scanf("%d",&flag);
}while((flag != 0)&&(flag !=1)&&(flag !=2));

switch(flag){
case 1:
set_dotorad();
break;
case 2:
set_radtodo();
break;
case 0:
break;
default:
printf("----error---\r\n開発者に連絡してください\r\n");
exit(1);
}
}while(flag != 0);
printf("プログラムを終了します。\r\n");
}
スポンサーサイト
プロフィール

かみさまみならい

Author:かみさまみならい
FC2ブログへようこそ!

最近の記事
最近のコメント
最近のトラックバック
月別アーカイブ
カテゴリー
ブロとも申請フォーム

この人とブロともになる

ブログ内検索
RSSフィード
リンク
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。