マスタワーカ形式のプログラムをVC++で…
マスタワーカ形式のプログラムをVC++で…
これは、マスタワーカ形式で記述したCのマンデルブロ集合描画プログラムなのですが、このプログラムをVC++で動かすにはどうすればいいでしょうか。わかる方いらっしゃいましたら、教えていただけないでしょうか。
#include "common.h"
#include "common.c"
#include "container.h"
#include "container.c"
#define STR_MAX 256
#define REAL_MIN -2
#define REAL_MAX 0.5
#define IMAG_MIN -1.25
#define IMAG_MAX 1.25
#define CAMBUS_WIDTH 320
#define CAMBUS_HEIGHT 320
#define REAL_SCALE ((REAL_MAX - REAL_MIN) / CAMBUS_WIDTH)
#define IMAG_SCALE ((IMAG_MAX - IMAG_MIN) / CAMBUS_HEIGHT)
typedef struct thread_arg_t
{
int32_t thread_id;
struct cambus_t *cambus;
struct jobque_t *jobque;
pthread_t pthread;
}thread_arg_t;
typedef struct cambus_t
{
int32_t width;
int32_t height;
int32_t iter_max;
int32_t *buf;
}cambus_t;
typedef struct jobque_t
{
int32_t index;
int32_t job_num;
struct job_t *jobs;
pthread_mutex_t mutex;
}jobque_t;
typedef struct job_t
{
int32_t id;
int32_t x;
int32_t y;
int32_t width;
int32_t height;
}job_t;
void* agent(void *arg);
int32_t calc_point(double cx, double cy, int32_t iter_max);
job_t* jobque_pop(jobque_t *jobque);
void print_cambus(cambus_t *cambus);
int main(int argc, char **argv)
{
cambus_t *cambus;
jobque_t *jobque;
thread_arg_t *thread_args;
int32_t thread_id, thread_num, job_num, iter_max, print_flag, i;
double t1, t2;
if(argc < 5)
{
errn("usage : %s thread_num job_num iter_max print_flag", argv[0]);
error();
}
thread_num = atoi(argv[1]);
job_num = atoi(argv[2]);
iter_max = atoi(argv[3]);
print_flag = atoi(argv[4]);
if(CAMBUS_HEIGHT % job_num != 0)
{
errn("CAMBUS_HEIGHT % job_num != 0");
error();
}
cambus = (cambus_t*)my_malloc(sizeof(cambus_t));
cambus->width = CAMBUS_WIDTH;
cambus->height = CAMBUS_HEIGHT;
cambus->iter_max = iter_max;
cambus->buf = (int32_t*)my_malloc(cambus->width * cambus->height * sizeof(int32_t));
jobque = (jobque_t*)my_malloc(sizeof(jobque_t));
jobque->index = 0;
jobque->job_num = job_num;
jobque->jobs = (job_t*)my_malloc(job_num * sizeof(job_t));
for(i = 0; i < job_num; i++)
{
jobque->jobs.id = i;
jobque->jobs.x = 0;
jobque->jobs.y = cambus->height / job_num * i;
jobque->jobs.width = cambus->width;
jobque->jobs.height = cambus->height / job_num;
}
pthread_mutex_init(&jobque->mutex, NULL);
t1 = get_time();
thread_args = (thread_arg_t*)my_malloc(thread_num * sizeof(thread_arg_t));
for(thread_id = 0; thread_id < thread_num; thread_id++)
{
thread_args[thread_id].thread_id = thread_id;
thread_args[thread_id].cambus = cambus;
thread_args[thread_id].jobque = jobque;
pthread_create(&thread_args[thread_id].pthread, NULL, agent, &thread_args[thread_id]);
}
for(thread_id = 0; thread_id < thread_num; thread_id++)
{
pthread_join(thread_args[thread_id].pthread, NULL);
}
t2 = get_time();
errn("%lf", t2 - t1);
my_free(thread_args);
if(print_flag)
{
print_cambus(cambus);
}
my_free(jobque->jobs);
my_free(jobque);
my_free(cambus->buf);
my_free(cambus);
return 0;
}
etc…
#include "common.h"
#include "common.c"
#include "container.h"
#include "container.c"
#define STR_MAX 256
#define REAL_MIN -2
#define REAL_MAX 0.5
#define IMAG_MIN -1.25
#define IMAG_MAX 1.25
#define CAMBUS_WIDTH 320
#define CAMBUS_HEIGHT 320
#define REAL_SCALE ((REAL_MAX - REAL_MIN) / CAMBUS_WIDTH)
#define IMAG_SCALE ((IMAG_MAX - IMAG_MIN) / CAMBUS_HEIGHT)
typedef struct thread_arg_t
{
int32_t thread_id;
struct cambus_t *cambus;
struct jobque_t *jobque;
pthread_t pthread;
}thread_arg_t;
typedef struct cambus_t
{
int32_t width;
int32_t height;
int32_t iter_max;
int32_t *buf;
}cambus_t;
typedef struct jobque_t
{
int32_t index;
int32_t job_num;
struct job_t *jobs;
pthread_mutex_t mutex;
}jobque_t;
typedef struct job_t
{
int32_t id;
int32_t x;
int32_t y;
int32_t width;
int32_t height;
}job_t;
void* agent(void *arg);
int32_t calc_point(double cx, double cy, int32_t iter_max);
job_t* jobque_pop(jobque_t *jobque);
void print_cambus(cambus_t *cambus);
int main(int argc, char **argv)
{
cambus_t *cambus;
jobque_t *jobque;
thread_arg_t *thread_args;
int32_t thread_id, thread_num, job_num, iter_max, print_flag, i;
double t1, t2;
if(argc < 5)
{
errn("usage : %s thread_num job_num iter_max print_flag", argv[0]);
error();
}
thread_num = atoi(argv[1]);
job_num = atoi(argv[2]);
iter_max = atoi(argv[3]);
print_flag = atoi(argv[4]);
if(CAMBUS_HEIGHT % job_num != 0)
{
errn("CAMBUS_HEIGHT % job_num != 0");
error();
}
cambus = (cambus_t*)my_malloc(sizeof(cambus_t));
cambus->width = CAMBUS_WIDTH;
cambus->height = CAMBUS_HEIGHT;
cambus->iter_max = iter_max;
cambus->buf = (int32_t*)my_malloc(cambus->width * cambus->height * sizeof(int32_t));
jobque = (jobque_t*)my_malloc(sizeof(jobque_t));
jobque->index = 0;
jobque->job_num = job_num;
jobque->jobs = (job_t*)my_malloc(job_num * sizeof(job_t));
for(i = 0; i < job_num; i++)
{
jobque->jobs.id = i;
jobque->jobs.x = 0;
jobque->jobs.y = cambus->height / job_num * i;
jobque->jobs.width = cambus->width;
jobque->jobs.height = cambus->height / job_num;
}
pthread_mutex_init(&jobque->mutex, NULL);
t1 = get_time();
thread_args = (thread_arg_t*)my_malloc(thread_num * sizeof(thread_arg_t));
for(thread_id = 0; thread_id < thread_num; thread_id++)
{
thread_args[thread_id].thread_id = thread_id;
thread_args[thread_id].cambus = cambus;
thread_args[thread_id].jobque = jobque;
pthread_create(&thread_args[thread_id].pthread, NULL, agent, &thread_args[thread_id]);
}
for(thread_id = 0; thread_id < thread_num; thread_id++)
{
pthread_join(thread_args[thread_id].pthread, NULL);
}
t2 = get_time();
errn("%lf", t2 - t1);
my_free(thread_args);
if(print_flag)
{
print_cambus(cambus);
}
my_free(jobque->jobs);
my_free(jobque);
my_free(cambus->buf);
my_free(cambus);
return 0;
}
etc…
Re:マスタワーカ形式のプログラムをVC++で…
試しにVC++で新しいプロジェクトを作成して、必要なファイルを全てプロジェクトに追加してからビルドしてみてはいかがでしょうか?
コンパイラがエラーメッセージという形で修正箇所を示してくれるはずです。
コンパイラがエラーメッセージという形で修正箇所を示してくれるはずです。
九九の表を表示するプログラム
今、ニコニコ動画の"nm6350165"にて、for文(ループ)の応用をやっています
内容は九九の表を作ってみようというものでして、このようなプログラムです
iは1で9以下の間
下のfor文。j(1)が9以下の間 printf("%2d ",i*j); を実行
この流れは理解できるんです
なのですが、printf("\n");のみで何故自動で出力され、尚且つ改行が効くのですか?
printf("%d\n",○○);のような記述をする必要は何故無いのでしょうか
回答よろしくお願いします
■追記■
プログラム内での¥がなぜかスラッシュに見えて表示されていますが¥での認識をしてください
仕様なのですかねこれは…
PCの環境のせいですかね
内容は九九の表を作ってみようというものでして、このようなプログラムです
/* kuku.c */ #include<stdio.h> int main(void){ int i,j; for(i=1;i<=9;i++){ for(j=1;j<=9;j++){ printf("%2d ",i*j); } printf("\n"); } return 0; }最初のfor文。
iは1で9以下の間
for(j=1;j<=9;j++){ printf("%2d ",i*j);を実行…
下のfor文。j(1)が9以下の間 printf("%2d ",i*j); を実行
この流れは理解できるんです
なのですが、printf("\n");のみで何故自動で出力され、尚且つ改行が効くのですか?
printf("%d\n",○○);のような記述をする必要は何故無いのでしょうか
回答よろしくお願いします
■追記■
プログラム内での¥がなぜかスラッシュに見えて表示されていますが¥での認識をしてください
仕様なのですかねこれは…
PCの環境のせいですかね

Re:九九の表を表示するプログラム
printfは文字列を出力するのに使いますから、別に変数じゃなくても
printf("string");
でも出力出来ます。また、
printf("%d回、出力します\n%c\n",1,'b');
なんてこともできます。こうすると
>1回、出力します
>b
>続行するには何かキーを押してください
となるはずです。
>プログラム内での¥がなぜかスラッシュに見えて表示されていますが¥での認識をしてください
おそらくこの掲示板の文字コードの問題でしょう。
スラッシュではなく、バックスラッシュといい、日本以外ではおそらくエンマークの文字コードに当たるのがバックスラッシュなのだと思います。
printfは可変長の引数を受け取る特殊な関数なので、いろんなことが出来るんだな、と思っていればいいんじゃないかなぁと僕は思います。
改行するだけだったら
puts("");
でいいと思いますよ。
printf("string");
でも出力出来ます。また、
printf("%d回、出力します\n%c\n",1,'b');
なんてこともできます。こうすると
>1回、出力します
>b
>続行するには何かキーを押してください
となるはずです。
>プログラム内での¥がなぜかスラッシュに見えて表示されていますが¥での認識をしてください
おそらくこの掲示板の文字コードの問題でしょう。
スラッシュではなく、バックスラッシュといい、日本以外ではおそらくエンマークの文字コードに当たるのがバックスラッシュなのだと思います。
printfは可変長の引数を受け取る特殊な関数なので、いろんなことが出来るんだな、と思っていればいいんじゃないかなぁと僕は思います。
改行するだけだったら
puts("");
でいいと思いますよ。

Re:九九の表を表示するプログラム
> 尚且つ改行が効くのですか?
コンピュータに改行して表示する際に、人間がどの様にコンピュータに指示するか
その時に使うのが「エスケープシーケンス」といい、コンピュータはこれを見つけると特別な処理をします。
「エスケープシーケンス」のひとつが「\n」です。コンピュータはこの文字を特別な文字として判断します。
「\n」を見つけると、コンピュータは改行するんだなーと判断して改行してくれます。
他にも「\a」などを入れるとパソコンがピーと鳴ります。
参考:エスケープシーケンス一覧
http://wisdom.sakura.ne.jp/programming/c/Cdata1.html
コンピュータに改行して表示する際に、人間がどの様にコンピュータに指示するか
その時に使うのが「エスケープシーケンス」といい、コンピュータはこれを見つけると特別な処理をします。
「エスケープシーケンス」のひとつが「\n」です。コンピュータはこの文字を特別な文字として判断します。
「\n」を見つけると、コンピュータは改行するんだなーと判断して改行してくれます。
他にも「\a」などを入れるとパソコンがピーと鳴ります。
参考:エスケープシーケンス一覧
http://wisdom.sakura.ne.jp/programming/c/Cdata1.html
Re:九九の表を表示するプログラム
■sizuma様 array様
回答ありがとうございます
大変申し訳ないのですが質問の内容を書き足さねばなりません;
\nが改行を表しているということに関しての知識はあるのです
この九九の場合
この改行が何故入るのかが分からないのです
1(i)×1~9(j)を行ったらjが9だからループを抜けて iに1が加算されますよね
2(i)×1~9(j)を行ったらjが9だからループを抜けて
これを繰り返してprintfで表示されているということでしょうか?
自分で質問していてなんだか分かった気がしますが念のため投稿しておきます
回答ありがとうございます
大変申し訳ないのですが質問の内容を書き足さねばなりません;
\nが改行を表しているということに関しての知識はあるのです
この九九の場合
1 2 3 4 5 6 7 8 9 (改行) 2 4 6 8 10 12 14 16 18 (改行) 3 6 9 12 15 18 21 24 27 (改行) 4 8 12 16 20 24 28 32 36..4の段以降省略しましたが、このように改行がなされています
この改行が何故入るのかが分からないのです
1(i)×1~9(j)を行ったらjが9だからループを抜けて iに1が加算されますよね
2(i)×1~9(j)を行ったらjが9だからループを抜けて
これを繰り返してprintfで表示されているということでしょうか?
自分で質問していてなんだか分かった気がしますが念のため投稿しておきます
Re:九九の表を表示するプログラム
>> keroたんさん
こんにちは^^
ニコニコにはこんな動画もあるんですか~、面白いですね。
今はいろんな勉強の方法があるので、勉強しやすいですね。
ところで、
これが答えられたら疑問も晴れると思います^^
こんにちは^^
ニコニコにはこんな動画もあるんですか~、面白いですね。
今はいろんな勉強の方法があるので、勉強しやすいですね。
ところで、
(1) for(x=0; x<3; x++){ (2) for(y=0; y<2; y++){ (3) } (4) } (5)二重ループのこの処理はどのような順番でなされるか答えられますか?
これが答えられたら疑問も晴れると思います^^
Re:九九の表を表示するプログラム
字下げがちゃんとできていないから、勘違いされているのではないでしょうか
正しく字下げをすると
正しく字下げをすると
for(i=1;i<=9;i++){ for(j=1;j<=9;j++){ printf("%2d ",i*j); } printf("\n"); }こうなりますので、横に1行出力したら、改行を行ってます。
Re:九九の表を表示するプログラム
■Dixq様
こんにちはです^^
ですよね~ このような質問サイトもあるわけですし…
C言語を勉強にあたっての環境は最高です^^ 本当に助かります♪
問題に関してですが、これは数字の直下の行とセットで考えればよいのですよね…
これは普通に(1)⇒(2)⇒(3)⇒(4)⇒(5)ではないですか?
xは0で、xが3未満である間xに1を加算する
yは0で、yが2未満である間yに1を加算する
あれ…
何を考えていたかいまいち分からなくなってきました;
ニコニコ動画の動画を今思い出したのですが、プログラムの進行上たしかjが先に加算されていた気がします
j*i(1~9)を行ったらj(2)*i(1~9)を行っていた気がするので…
(2)⇒(1)⇒(3)⇒(4)⇒(5)でしょうか^^;
難しいです><
こんにちはです^^
ですよね~ このような質問サイトもあるわけですし…
C言語を勉強にあたっての環境は最高です^^ 本当に助かります♪
問題に関してですが、これは数字の直下の行とセットで考えればよいのですよね…
これは普通に(1)⇒(2)⇒(3)⇒(4)⇒(5)ではないですか?
xは0で、xが3未満である間xに1を加算する
yは0で、yが2未満である間yに1を加算する
あれ…
何を考えていたかいまいち分からなくなってきました;
ニコニコ動画の動画を今思い出したのですが、プログラムの進行上たしかjが先に加算されていた気がします
j*i(1~9)を行ったらj(2)*i(1~9)を行っていた気がするので…
(2)⇒(1)⇒(3)⇒(4)⇒(5)でしょうか^^;
難しいです><
Re:九九の表を表示するプログラム
くだんの
printf("\n");
を外したときにどういう結果を得るか確認してみると、
printf("\n");
の役割を理解できるかもしれません。
printf("\n");
を外したときにどういう結果を得るか確認してみると、
printf("\n");
の役割を理解できるかもしれません。
Re:九九の表を表示するプログラム
むむ・・お聞きする限りfor文の仕様が理解出来ていないのではないかと思います。
また、制御文の範囲では無い限り、またはgoto文を使わない限り、
プログラムの処理が上に流れる事はありえません。
さっきの質問をもっと簡単にしてみます。
これはどのように処理が進みますか?
(1)
for(i=0;i<3;i++){
(2)
}
(3)
答え
(1)→(2)→(2)→(2)→(3)
これにならってもう一度考えてみてください。
また、制御文の範囲では無い限り、またはgoto文を使わない限り、
プログラムの処理が上に流れる事はありえません。
さっきの質問をもっと簡単にしてみます。
これはどのように処理が進みますか?
(1)
for(i=0;i<3;i++){
(2)
}
(3)
答え
(1)→(2)→(2)→(2)→(3)
これにならってもう一度考えてみてください。
Re:九九の表を表示するプログラム
■box様
それに関しては分かります;
最初の質問は多少内容があやふやでした;すみません。
■Dixq様
①①①②②③④⑤が答えでしょうか
それに関しては分かります;
最初の質問は多少内容があやふやでした;すみません。
■Dixq様
①①①②②③④⑤が答えでしょうか
Re:九九の表を表示するプログラム
> ①①①②②③④⑤が答えでしょうか
いやいや、よく見てください。
(1)
for(x=0; x<3; x++){
(2)
for(y=0; y<2; y++){
(3)
}
(4)
}
(5)
何故(1)が最初に3回も処理されるのです?
既に私が上で言ったことと重複しますが
(1)
for(i=0;i<3;i++){
(2)
}
(3)
の処理の流れは
(1)→(2)→(2)→(2)→(3)
となるわけです。
for文の意味は理解されているという認識で良いのですよね?
iが最初0で、3未満の間iをインクリメントしてループするわけですから、
0,1,2の3回ループするわけです。
で、for文の有効範囲ではない(1)にはその制御が及びません。
(1)には何にも干渉されないし、処理は上に流れる事は基本的にないので処理の流れが
(1)→(1)→(1)
になることはないですよね?
言っている意味が解らなければ一度入門サイトで勉強して下さい。
http://www5c.biglobe.ne.jp/~ecb/c/03_07.html
http://www9.plala.or.jp/sgwr-t/c/sec06-2.html
http://homepage1.nifty.com/toshio-k/prog/c/for.html
http://c-production.com/contents/c/sec06.html#03
勉強し終わったらもう一度整理してみましょう。
(1)
for(x=0; x<3; x++){
(2)
for(y=0; y<2; y++){
(3)
}
(4)
}
(5)
では改めて処理の流れは?
「全く解らない」という場合は無理して先に先に進んでも逆に解らないことだらけで効率が良くありません。
基礎から着実に勉強していってみてください。
いやいや、よく見てください。
(1)
for(x=0; x<3; x++){
(2)
for(y=0; y<2; y++){
(3)
}
(4)
}
(5)
何故(1)が最初に3回も処理されるのです?
既に私が上で言ったことと重複しますが
(1)
for(i=0;i<3;i++){
(2)
}
(3)
の処理の流れは
(1)→(2)→(2)→(2)→(3)
となるわけです。
for文の意味は理解されているという認識で良いのですよね?
iが最初0で、3未満の間iをインクリメントしてループするわけですから、
0,1,2の3回ループするわけです。
で、for文の有効範囲ではない(1)にはその制御が及びません。
(1)には何にも干渉されないし、処理は上に流れる事は基本的にないので処理の流れが
(1)→(1)→(1)
になることはないですよね?
言っている意味が解らなければ一度入門サイトで勉強して下さい。
http://www5c.biglobe.ne.jp/~ecb/c/03_07.html
http://www9.plala.or.jp/sgwr-t/c/sec06-2.html
http://homepage1.nifty.com/toshio-k/prog/c/for.html
http://c-production.com/contents/c/sec06.html#03
勉強し終わったらもう一度整理してみましょう。
(1)
for(x=0; x<3; x++){
(2)
for(y=0; y<2; y++){
(3)
}
(4)
}
(5)
では改めて処理の流れは?
「全く解らない」という場合は無理して先に先に進んでも逆に解らないことだらけで効率が良くありません。
基礎から着実に勉強していってみてください。
Re:九九の表を表示するプログラム
すみません、(1)がfor(x=0; x<3; x++){ だと思っていました
となると
(1)(2)(2)(2)(3)(3)(4)(5)でいいのでしょうか;
間違っていたら勉強しなおします^^;
となると
(1)(2)(2)(2)(3)(3)(4)(5)でいいのでしょうか;
間違っていたら勉強しなおします^^;
Re:九九の表を表示するプログラム
> (1)(2)(2)(2)(3)(3)(4)(5)でいいのでしょうか;
(1)~(5)のタイミングでprintfをかませて、
確認してみてはいかがでしょうか。
(1)~(5)のタイミングでprintfをかませて、
確認してみてはいかがでしょうか。
Re:九九の表を表示するプログラム
> SooAさん
ちょっと違いませんか?;
二重ループの中を通らずに一度ループを終了し、終了した後で二重ループの中に入り、
二重ループが終わってもネストしてる方のループの下には行っていないように見えるのですが、
見えるだけでしょうか;
> kerotanさん
百聞は一見にしかずです。
boxさんが仰る通り、printfを書いてみてください。
私が(1)等と書いている部分をprintfに置き換えて数値を出力できるようにしてみて、実行して確認してみてください。
ちょっと違いませんか?;
二重ループの中を通らずに一度ループを終了し、終了した後で二重ループの中に入り、
二重ループが終わってもネストしてる方のループの下には行っていないように見えるのですが、
見えるだけでしょうか;
> kerotanさん
百聞は一見にしかずです。
boxさんが仰る通り、printfを書いてみてください。
私が(1)等と書いている部分をprintfに置き換えて数値を出力できるようにしてみて、実行して確認してみてください。
Re:九九の表を表示するプログラム
>ちょっと違いませんか?;
>見えるだけでしょうか;
ち、違いますねぇ ><;
回数だけ確認して折り返し位置とか
全く気にしてませんでした。_| ̄|○
修正を。
http://www42.tok2.com/home/tuk2nd/bbs/img/33.swf
もっと解りやすく表現できれば良かったのだけど。
>見えるだけでしょうか;
ち、違いますねぇ ><;
回数だけ確認して折り返し位置とか
全く気にしてませんでした。_| ̄|○
修正を。
http://www42.tok2.com/home/tuk2nd/bbs/img/33.swf
もっと解りやすく表現できれば良かったのだけど。
Re:九九の表を表示するプログラム
>うん、ブラウザがIE , google chromeでは修正版もおかしい気がします。
ボタン配置とか出来るようになって、
ステップ実行?できるように頑張ります。
初心者用FLASHサイト見ながら作ったので
まだモーショントゥイーンしかできなかったり。・゜・(ノД`)・゜・。
ボタン配置とか出来るようになって、
ステップ実行?できるように頑張ります。
初心者用FLASHサイト見ながら作ったので
まだモーショントゥイーンしかできなかったり。・゜・(ノД`)・゜・。
Re:九九の表を表示するプログラム
あ、現在みてみたら完璧ですね。
この手の物は、やはりステップが好ましい気がしますね。
その方が、次をどの様に動くか考える事も出来ますしね。
この手の物は、やはりステップが好ましい気がしますね。
その方が、次をどの様に動くか考える事も出来ますしね。
Re:九九の表を表示するプログラム
■SooA様
わざわざFlashまで作ってくださってありがとうございます;
どういう流れで処理が行われているかは理解できました
ですがなぜそうなるのか理解できないのでもう一度2重ループについて勉強してみます><;
■Boxさん
(1)~(5)のタイミングでprintfをかますとはこういうことでしょうか
≪実行結果≫
テスト
テスト
テスト2
テスト
テスト
テスト2
テスト
テスト
テスト2
という事は…
xが2以下である間 printf("テスト\n"); を実行("テスト"を2つ表示)
2に達したために下にプログラムが進み printf("テスト2\n");を実行("テスト2"を一つ表示)
for(x=0; x<3; x++) でくくられてるからまた printf("テスト\n"); から再開
これを3回セット繰り返すということでしょうか
なんだか分かってきた気がします^^

わざわざFlashまで作ってくださってありがとうございます;
どういう流れで処理が行われているかは理解できました
ですがなぜそうなるのか理解できないのでもう一度2重ループについて勉強してみます><;
■Boxさん
(1)~(5)のタイミングでprintfをかますとはこういうことでしょうか
#include<stdio.h> int main(void){ int x,y; for(x=0; x<3; x++){ for(y=0; y<2; y++){ printf("テスト\n"); } printf("テスト2\n"); } return 0; }実行したらこうなりました
≪実行結果≫
テスト
テスト
テスト2
テスト
テスト
テスト2
テスト
テスト
テスト2
という事は…
xが2以下である間 printf("テスト\n"); を実行("テスト"を2つ表示)
2に達したために下にプログラムが進み printf("テスト2\n");を実行("テスト2"を一つ表示)
for(x=0; x<3; x++) でくくられてるからまた printf("テスト\n"); から再開
これを3回セット繰り返すということでしょうか
なんだか分かってきた気がします^^

Re:九九の表を表示するプログラム
> (1)~(5)のタイミングでprintfをかますとはこういうことでしょうか
う~んと正確にはこういうことでした
う~んと正確にはこういうことでした
#include <stdio.h> int main(){ int x,y; printf("(1)→"); for(x=0; x<3; x++){ printf("(2)→"); for(y=0; y<2; y++){ printf("(3)→"); } printf("(4)→"); } printf("(5)\n"); return 0; }
Re:九九の表を表示するプログラム
こんな学習ソフトもありますので学習に役立てて下さい。
http://www.vector.co.jp/soft/win95/edu/se165337.html
http://www.vector.co.jp/soft/win95/edu/se165337.html
Re:九九の表を表示するプログラム
>あ、現在みてみたら完璧ですね。
報告送れましたが、データの方だけこっそり直しました^^;
FLASHの事ばかり連続で書き込んでしまうのも
いけないかなと勝手に自重@@
文字と四角だけの処理なのに、
環境によってかなり表示も変わるようで
びっくりしました。
ステップ操作を身につけねば。
報告送れましたが、データの方だけこっそり直しました^^;
FLASHの事ばかり連続で書き込んでしまうのも
いけないかなと勝手に自重@@
文字と四角だけの処理なのに、
環境によってかなり表示も変わるようで
びっくりしました。
ステップ操作を身につけねば。
Re:九九の表を表示するプログラム
■Dixq様
なるほど…;
非常に勉強になりました^^
■SooA様
Flashにしろ画像にしろ本当にありがとうございます
とても分かりやすいです><
今回は本当にありがとうございました
Flashについてここで語るのは僕がどうこう言える話ではありませんし、お気にならさずw
なるほど…;
非常に勉強になりました^^
■SooA様
Flashにしろ画像にしろ本当にありがとうございます
とても分かりやすいです><
今回は本当にありがとうございました
Flashについてここで語るのは僕がどうこう言える話ではありませんし、お気にならさずw