Elec Days

電子工作やelectric的なこと、日常の出来事について、紹介していきます。
Elec Days TOP  >  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)

【C言語】素因数分解をするプログラム

こんばんは

さて、今日は素因数分解のプログラム!

このプログラムは、素因数分解することができます。
そして、恒例の通り、ファイルに出力できます

・実行ファイル (soinsubunkai.exe)

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


<soinsubunkai.c>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void)
{
int w = 1;

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

int f = 1;

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

int v;

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

num1 = num;

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

printf("%d", i);
num1 /= i;
soinsu[a][0] = i;
soinsu[a][1]++;

if(num1 == 1){
break;
}
printf("×\n");
}
else{
i++;
if(f == 0){
a++;
}
f = 1;
}
}

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

printf("\n");

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");
}
}


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/20 21:39 ] プログラミング C言語 | TB(0) | CM(3)

【緊急】プログラムが実行できない問題

このブログに載っているプログラムは、一部のパソコンで実行できないことがわかりました。

理由は、普通のパソコンでは実行に必要なライブラリがパソコンにインストールされていないこと。

よってこれから順番に実行プログラムを更新していく予定です。

プログラムを更新したかどうかは、この記事で報告させていただきます。

今しばらくお待ちください。


また、ソースファイル(….c)をブラウザー上で表示する場合、TabキーやEnterキーが反映されていない場合があります。その場合はファイルをダウンロードして、メモ帳で開いてください。



では



追記

【C言語】素数を求めるプログラム Ver.3 にライブラリ付属実行ファイルを追加しました。(2月16日)

【C言語】最大公約数・最小公倍数を求めるプログラム Ver.2にライブラリ付属実行ファイルを追加しました。(2月17日)


[ 2011/02/16 18:02 ] プログラミング C言語 | TB(0) | CM(0)

【C言語】やさしいC

こんにちは

今日は、僕が日ごろC言語の勉強に使っている本を紹介してみようと思います。

やさしいC 第3版 [やさしいシリーズ]

中古価格
¥2,190から
(2011/2/4 12:07時点)


Amzon.com

この本はとてもわかりやすいです。
まず、説明が丁寧。初心者でもよくわかる説明です。

そして、サンプルプログラムが豊富にある。
所詮サンプルプログラム、などと思ってはいけませんよ。
はっきり言って、本を読むだけだと全然上達しない。プログラミングは打ってみないと、習得できませんよ。

あと、プログラミングを学ぶための本も当たりはずれがあるみたいです。
たぶんこの本を選べば間違いはないでしょう。(個人的な感覚)


みなさん、がんばってみてくださ~い。


ではまた
[ 2011/02/04 10:58 ] プログラミング C言語 | TB(0) | CM(0)

【C言語】C言語開発環境

こんにちは。


今日は、僕がC言語でプログラムを作るときの開発環境について話したいと思います。
そして、C言語の開発環境は無料で手に入るので、プログラムは無料で作れます。


まず、必要なソフト……ってたったの1つです。
Microsoft Visual C++ Expressです。

名前は「C++」ですけど、C言語も作れます。
ただ、Visual C++ Express のインストールは結構ディスク容量を食うので、気を付けてください。(1GBぐらいだったかな?)

そのほかに、必要なものは、コマンドプロンプトやエクスプローラーなどのWindows付属のものばかり。
てことで、実は簡単にプログラムを作れるんですね。


では
[ 2011/01/26 16:36 ] プログラミング C言語 | TB(0) | CM(0)
プロフィール

elecho

Author:elecho
 
ElecDays にようこそ!!

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

よろしくお願いします。



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