剰余計算 Vol.2

5月1日付で書いた剰余計算の話ですが、Fortran77のソースしか書いておりません。
別にFortran77用のものだけでも良いような気はしますが、C言語のほうが汎用性も高いので記しておきます。
剰余計算は、Fortran77のプログラム中にも示したとおり、入力する2つの値をそれぞれa,bとおき、abの商をsyou、剰余をamariと置いたとすると (変数は整数型で宣言)
  • amari = a-syou*b
となります。
Cでもこの式は使えます。
以下に例を示します。

・剰余計算プログラム 1
#include <stdio.h>
int main(void)
{
 int a,b,syou,amari;
 
 printf("a=");
 scanf("%d",&a);
 printf("b=");
 scanf("%d",&b);
 printf("a=%d、b=%dが入力されました。\n",a,b);
 
 syou=a/b;
 amari=a%b;
 
 printf("%d÷%d=%d…%d\n",a,b,syou,amari);
 
 return(0);
}

・上記プログラム実行結果 (例)aに25、bに7を代入
a=25
b=7
a=25、b=7が入力されました。
25÷7=3…4

これでFortran77のときのプログラムと同じ結果を得ることができます。
これはこれで合っているのですが、Cには剰余演算子 "%" と呼ばれる便利な演算子が存在しています。
その名の通り、剰余を行うための演算子なのですが、使用する際は変数を整数型で宣言しておく必要があります。
剰余演算子に限らず、式を使って剰余計算を行う場合も整数型で宣言しておかないと意味がありません。
実数型で演算を行うと剰余の意味はないですよね?
剰余を出すときはとりあえず整数型という覚え方でも構わないと思います。
で、剰余演算子の使い方ですが、以下に上記プログラムに手を加えて示します。

・剰余計算プログラム 2
#include <stdio.h>
int main(void)
{
 int a,b,syou,amari;
 
 printf("a=");
 scanf("%d",&a);
 printf("b=");
 scanf("%d",&b);
 printf("a=%d、b=%dが入力されました。\n",a,b);
 
 syou=a/b;
 amari=a%b;
 
 printf("%d÷%d=%d…%d\n",a,b,syou,amari);
 
 return(0);
}


・上記プログラム実行結果 (例)a=25、b=7を代入
a=25
b=7
a=25、b=7が入力されました。
25÷7=3…4

amari=a-syou*bamari=a%bに置き換えただけです。
1行変えただけなので簡単ですよね。
ですので、どちらを使うかは人によるかと思います。
剰余を使う、使わないかは別としてお好きなほうを選択すればよいと思います。
ちなみに、このプログラムは剰余計算用の一例に過ぎないのでこれがすべてだとは思わないでください。 (そんなこと思う人居ないと思いますが)

ちなみに今回は大学の情報演習室のPCを利用して確認を行いました。
動作環境はWindows XP Professional、CPUはPentium4 2.40GHz、メモリは376MBです。
使用コンパイラはgcc Ver.3.3.3です。
当然ですが、CLI (コマンドプロンプト) で実行しています。
動作するかだけしか見てないので、規格に沿ってない場合もあると思いますが、その辺は無視してあげてください。

以上、剰余計算 Vol.2でした。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中