Elec Days

電子工作やelectric的なこと、日常の出来事について、紹介していきます。
Elec Days TOP  >  スポンサー広告 >  プログラミング  >  C言語 >  【C言語】素因数分解をするプログラム(ファイル分割版)

スポンサーサイト

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

【C言語】素因数分解をするプログラム(ファイル分割版)

こんばんは

さて、素因数分解のファイル分割に成功しました。

多次元配列のポインタ受け渡し、なんか以外とするっと解決してしましました。


てことで、以下ファイルたち
実行ファイル(soinsubunkaisegmentfile.exe)

ソースファイル
 ・maininsoinsubunkaisegmentfile.c
 ・soinsubunkaimain.c
 ・kyotu_include.c
 
<maininsoinsubunkaisegmentfile.c>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int soinsubunkai(int num1, int x[10000][2]);
int fileoutput(void);
int programcontinue(void);

int main(void)
{
int w = 1;

while(w!=0){
int num;
int i = 2;
int a;
int soinsu[10000][2];

int c;

int b;
FILE *fp;
time_t t;
char str[50];

int v;

printf("素因数分解する数を入力してください。\n");
scanf("%d", &num);

a = soinsubunkai(num, soinsu);

a++;
soinsu[a][0] = 0;
a = 0;

while(soinsu[a][0]!=0){
for(c=0; c<soinsu[a][1]; c++){
printf("%d ×", soinsu[a][0]);
}
a++;
}

printf("\b\n");

a = 0;

while(soinsu[a][0]!=0){
printf("\n%dの%d乗、", soinsu[a][0], soinsu[a][1]);
a++;
}
printf("です。\n\n");

a = 0;

b = fileoutput();

if(b == 0){
sprintf(str, "%ld", time(&t));
printf("ファイル名は%sです。\n", str);
fp = fopen(str, "w");

if(fp == NULL){
printf("ファイルを作成できませんでした。\n");
return 1;
}
else{
fprintf(fp, "%dを素因数分解すると、\n", num);
while(soinsu[a][0]!=0){
fprintf(fp, "\n%dの%d乗、", soinsu[a][0], soinsu[a][1]);
a++;
}
fprintf(fp, "です。");
fclose(fp);
}
}

v = programcontinue();

if(v==0){
printf("プログラムを終了しました。\n");
system("PAUSE");
return 1;
}
printf("プログラムを続行します…\n\n");
}

return 0;
}


<soinsubunkaimain.c>
#include <stdio.h>

int soinsubunkai(int num1, int x[10000][2])
{
int i = 2;
int aa = 0;

int f = 1;

while(i!=0)
{//素因数の計算
if(num1%i == 0){
if(f == 1){
x[aa][0] = i;
x[aa][1] = 0;
}
f = 0;
num1 /= i;
x[aa][1]++;

if(num1 == 1){
break;
}
}
else{
i++;
if(f == 0){
aa++;
}
f = 1;
}
}

return aa;
}


<kyotu_include.c>
#include <stdio.h>

int fileoutput(void)
{
int x;

printf("計算結果をファイルに出力しますか?出力する場合は半角で0を入力してください。出力させない場合には半角で1を入力してください。\n(ファイルはこの実行ファイルがあるフォルダーに作られます。)\n");
scanf("%d", &x);

return x;
}

int programcontinue(void)
{
int y;

printf("\nプログラムを終了しますか?\nプログラムを終了させるには半角で0を、もう一度計算させるには半角で1を入力してください。\n");
scanf("%d", &y);

return y;
}

一応まともに動くはずです。

では
関連記事
[ 2011/04/21 20:36 ] プログラミング C言語 | TB(0) | CM(0)
コメントの投稿












管理者にだけ表示を許可する
トラックバック
この記事のトラックバックURL

プロフィール

elecho

Author:elecho
 
ElecDays にようこそ!!

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

よろしくお願いします。



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