#2
by かずま » 5年前
定義するのは、処理に必要なデータ構造ですよ。
単純な例を作ってみました。
二数の積を求めるプログラムです。
define and run
コード:
#include <stdio.h>
int main(void)
{
static int table[10][10];
int a, b;
for (int i = 1; i <= 9; i++)
for (int j = 1; j <= 9; j++)
table[i][j] = i * j; // define
while (scanf("%d%d", &a, &b) == 2) // run
printf("%3d\n", table[a][b]);
}
実行に使用するデータ構造を、想定される入力に対して
すべて構築してから、実行を開始しています。
define by run
コード:
#include <stdio.h>
int main(void)
{
static int table[10][10];
int a, b;
while (scanf("%d%d", &a, &b) == 2) { // run
if (table[a][1] == 0)
for (int j = 1; j <= 9; j++)
table[a][j] = a * j; // define
printf("%3d\n", table[a][b]);
}
}
実行を開始してから、入力データに応じて必要な分だけデータ構造を構築します。
これで納得してもらえますか?
二数の積なら、define なしで run だけで済みますが。
コード:
#include <stdio.h>
int main(void)
{
int a, b;
while (scanf("%d%d", &a, &b) == 2) // run
printf("%3d\n", a * b);
}
定義するのは、処理に必要なデータ構造ですよ。
単純な例を作ってみました。
二数の積を求めるプログラムです。
define and run
[code]
#include <stdio.h>
int main(void)
{
static int table[10][10];
int a, b;
for (int i = 1; i <= 9; i++)
for (int j = 1; j <= 9; j++)
table[i][j] = i * j; // define
while (scanf("%d%d", &a, &b) == 2) // run
printf("%3d\n", table[a][b]);
}
[/code]
実行に使用するデータ構造を、想定される入力に対して
すべて構築してから、実行を開始しています。
define by run
[code]
#include <stdio.h>
int main(void)
{
static int table[10][10];
int a, b;
while (scanf("%d%d", &a, &b) == 2) { // run
if (table[a][1] == 0)
for (int j = 1; j <= 9; j++)
table[a][j] = a * j; // define
printf("%3d\n", table[a][b]);
}
}
[/code]
実行を開始してから、入力データに応じて必要な分だけデータ構造を構築します。
これで納得してもらえますか?
二数の積なら、define なしで run だけで済みますが。
[code]
#include <stdio.h>
int main(void)
{
int a, b;
while (scanf("%d%d", &a, &b) == 2) // run
printf("%3d\n", a * b);
}
[/code]