Elec Days

電子工作やelectric的なこと、日常の出来事について、紹介していきます。
Elec Days TOP  >  最大公約数&最小公倍数

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
[ --/--/-- --:-- ] スポンサー広告 | TB(-) | CM(-)

【C言語】最大公約数・最小公倍数を求めるプログラム Ver.2

こんばんは。
今日は東京でもちょこっと雪が降りましたね。

さて、【C言語】最大公約数・最小公倍数を求めるプログラム も、プログラムを終了させずに複数回計算できるようにしました。

以下、ファイル達
・ソースファイル(g.c.mandl.c.m-ver.onefile-ver.2.c)
※メモ帳で開くこともできます。Microsoft Visual 推奨。
 ブラウザーで表示すると表示が崩れる可能性がありますので、ダウンロードしてからご覧ください。

<g.c.mandl.c.m-ver.onefile-ver.2.c>
#include <stdio.h>
#include <time.h>

/* gcm関数の定義 */
int gcm(int a, int b);

/* lcm関数の定義 */
int lcm(int n, int m);

int main(void)
{
int x;
int y;

int max;
int min;

int num;

FILE *fp;
time_t t;

char str[100];

printf("二つの数を入力してください。\n");

scanf("%d", &x);
scanf("%d", &y);

max = gcm(x, y);

min = lcm(x, y);

printf("最大公約数は%dです。\n", max);
printf("最小公倍数は%dです。\n", min);



printf("結果をファイルに出力しますか?出力する場合は半角で0を入力してください。プログラムを終了させるには半角で1を入力してください。\n(ファイルはこの実行ファイルがあるフォルダーに作られます。)\n");

scanf("%d", &num);

if(num == 0){
sprintf(str, "%ld", time(&t));
printf("%s\n", str);
fp = fopen(str, "w");

if(fp == NULL){
printf("ファイルを作成できませんでした。\n");
}
else{
fprintf(fp, "最大公約数は%dです。\n", max);
fprintf(fp, "最小公倍数は%dです。\n", min);
}
fclose(fp);
}

printf("プログラムを終了しました。\n");


return 0;
}




int gcm(int a, int b)
{
int i;

int ansg = 0;

for(i=a; i>0; i--){
if(a%i == 0){
if(b%i == 0){
ansg = i;
break;
}
}
}

return ansg;
}


int lcm(int n, int m)
{
int u;

int ansl = 0;

for(u=m; u>=m; u++){
if(u%n == 0){
if(u%m == 0){
ansl = u;
break;
}
}
}

return ansl;
}

・実行ファイル(g.c.mandl.c.m-ver.onefile-ver.2.exe)
※ダウンロードした上で、ダブルクリックで開くこともできます。

2月17日追加 ・実行ファイル(ライブラリ付属)(g.c.mandl.c.m-ver.onefile-ver.2lib.exe)
※お使いのパソコンに Microsoft Visual C++ 2010 または C# 2010 がインストールされていない場合は、こちらをお使いください。



プログラムの使い方 もご参照ください。

関数を個別ファイルに分けたものもあります。(【C言語】最大公約数・最小公倍数を求めるプログラム(ファイル分割版)


では
スポンサーサイト

【C言語】最大公約数・最小公倍数を求めるプログラム(ファイル分割版)

こんにちは

このごろ寒いですね。僕も今手が震えながらタイピングをしています。


さて、前の 【C言語】最大公約数・最小公倍数を求めるプログラム のファイル分割版を作ってみました。

ソースファイル
中心部分main(g.c.m.andl.c.mmain.c)
最大公約数を求める関数(g.c.m.c)
最小公倍数を求める関数(l.c.m.c)
※ソースファイルはメモ帳で開くことができます。
 ブラウザーで表示すると表示が崩れる可能性がありますので、ダウンロードしてからご覧ください。

<g.c.m.andl.c.mmain.c>
#include 
#include "G.C.M.c"
#include "L.C.M.c"
#include


int main(void)
{
/* gcm関数の定義 */
int gcm(int a, int b);

/* lcm関数の定義 */
int lcm(int n, int m);




int x;
int y;

int max;
int min;

int num;

FILE *fp;
time_t t;

char str[100];

printf("二つの数を入力してください。\n");

scanf("%d", &x);
scanf("%d", &y);

max = gcm(x, y);

min = lcm(x, y);

printf("最大公約数は%dです。\n", max);
printf("最小公倍数は%dです。\n", min);



printf("結果をファイルに出力しますか?出力する場合は半角で0を入力してください。プログラムを終了させるには半角で1を入力してください。\n(ファイルはこの実行ファイルがあるフォルダーに作られます。)\n");

scanf("%d", &num);

if(num == 0){
sprintf(str, "%ld", time(&t));
printf("%s\n", str);
fp = fopen(str, "w");

if(fp == NULL){
printf("ファイルを作成できませんでした。\n");
}
else{
fprintf(fp, "最大公約数は%dです。\n", max);
fprintf(fp, "最小公倍数は%dです。\n", min);
}
fclose(fp);
}

printf("プログラムを終了しました。\n");

return 0;
}


<g.c.m.c>
int gcm(int a, int b)
{
int i;

int ansg = 0;

for(i=a; i>0; i--){
if(a%i == 0){
if(b%i == 0){
ansg = i;
break;
}
}
}

return ansg;
}


<l.c.m.c>
int lcm(int n, int m)
{
int u;

int ansl = 0;

for(u=m; u>=m; u++){
if(u%n == 0){
if(u%m == 0){
ansl = u;
break;
}
}
}

return ansl;
}



実行ファイル
実行ファイル(g.c.m.andl.c.m.exe)

※ダブルクリックで実行できます。


どうぞ試してみてください。

実行ファイルの使い方は、プログラムの使い方をご覧ください。

ではさようなら

【C言語】最大公約数・最小公倍数を求めるプログラム

こんばんは

今日は、最大公約数・最小公倍数を求めるためのプログラムを作ってみました。

ソースファイル( g.c.mandl.c.m-ver.onefile.c)
※メモ帳でも開くことができます。
 ブラウザーで表示すると表示が崩れる可能性がありますので、ダウンロードしてからご覧ください。

<g.c.mandl.c.m-ver.onefile.c>
#include <stdio.h>
#include <time.h>

/* gcm関数の定義 */
int gcm(int a, int b);

/* lcm関数の定義 */
int lcm(int n, int m);

int main(void)
{
int x;
int y;

int max;
int min;

int num;

FILE *fp;
time_t t;

char str[100];

printf("二つの数を入力してください。\n");

scanf("%d", &x);
scanf("%d", &y);

max = gcm(x, y);

min = lcm(x, y);

printf("最大公約数は%dです。\n", max);
printf("最小公倍数は%dです。\n", min);



printf("結果をファイルに出力しますか?出力する場合は半角で0を入力してください。プログラムを終了させるには半角で1を入力してください。\n(ファイルはこの実行ファイルがあるフォルダーに作られます。)\n");

scanf("%d", &num);

if(num == 0){
sprintf(str, "%ld", time(&t));
printf("%s\n", str);
fp = fopen(str, "w");

if(fp == NULL){
printf("ファイルを作成できませんでした。\n");
}
else{
fprintf(fp, "最大公約数は%dです。\n", max);
fprintf(fp, "最小公倍数は%dです。\n", min);
}
fclose(fp);
}

printf("プログラムを終了しました。\n");


return 0;
}




int gcm(int a, int b)
{
int i;

int ansg = 0;

for(i=a; i>0; i--){
if(a%i == 0){
if(b%i == 0){
ansg = i;
break;
}
}
}

return ansg;
}


int lcm(int n, int m)
{
int u;

int ansl = 0;

for(u=m; u>=m; u++){
if(u%n == 0){
if(u%m == 0){
ansl = u;
break;
}
}
}

return ansl;
}


実行ファイル(g.c.mandl.c.m-ver.onefile.exe)
※本プログラムを実行するには、Microsoft Visual C++ 2008 が必要です。
 インストールされていない場合は、【C言語】最大公約数・最小公倍数を求めるプログラム Ver.2 にある「ライブラリ付属」のプログラムをお使いください。


このプログラムは、二数の最大公約数・最小公倍数を求めることができます。
また、そのデータをファイルに出力することもできます。

※このプログラムはコマンドプロンプトを使って実行します。ダブルクリックでは使えません。
 ダブルクリックで開けました。ダブルクリックのほうがずっと楽です。
 また、出力されたファイルはメモ帳を使って読んでください。

プログラムの実行の仕方はプログラムの使い方をご覧ください。


ではまた


追記(1/31)

【C言語】最大公約数・最小公倍数を求めるプログラム Ver.2 (現在最新) をリリースしました。

また、関数をファイル別に分けた 【C言語】最大公約数・最小公倍数を求めるプログラム(ファイル分割版) もあります。
プロフィール

elecho

Author:elecho
 
ElecDays にようこそ!!

趣味は、電子的なもの(電子工作やコンピュータ)なので、そういうものについて書くと思います。
あと、学生です。

よろしくお願いします。



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