配列のプログラム
#include<stdio.h>
int main(void)
{
int i,j;
int a[3][3]={{91,22,45},{67,32,21},{67,99,77}};
for(i=0;i<3;i++){
for(j=0;j<3;j++){
printf("%4d",a[j]);
putchar('\n');
return 0;
}
というソースコードをがあるとし、それに乱数を用いりscanfで1<1000までの間で配列a[N]を決め、
配列の中身も乱数を用いるプログラムにするには上のソースコードのどこを変えればよろしいですか?
つまりa[N]={{ , , },{ , , ,} ................}}
のかっこ{}の中も乱数を使用するということです。
配列 乱数
Re: 配列 乱数
ソースコードを提示する際は、BBCodeを有効にした(無効にしない)状態でcodeタグで囲んでいただけると、見やすくてありがたいです。
それは具体的にどこですか?
#include<stdio.h>としてください。
意味がよくわかりません。具体例を出していただけますか?saigou さんが書きました:乱数を用いりscanfで1<1000までの間で配列a[N]を決め
- scanfはどのように用いる?
- 「1<1000までの間」って何?例えば
- [1, 1000) (1以上1000未満)
- [1, 1000] (1以上1000以下)
- (1, 1000) (1より大きく1000未満)
- (1, 1000] (1より大きく1000以下)
- int型の範囲すべて (1<1000は常に真)
saigou さんが書きました:配列の中身も乱数を用いる
配列の中身「も」ということは、配列の中身でない何かも乱数を用いるということですか?saigou さんが書きました: つまりa[N]={{ , , },{ , , ,} ................}}
のかっこ{}の中も乱数を使用するということです。
それは具体的にどこですか?
とりあえず、全角文字を使った#include<stdio.h>という部分は間違っています。saigou さんが書きました:上のソースコードのどこを変えればよろしいですか?
#include<stdio.h>としてください。
オフトピック
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: 配列 乱数
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main(void)
{
int N;
int i,j;
if (scanf("%d", &N) != 1 || N < 1 || 1000 < N) return 1;
int a[N][N]; /* C99以降orGCC拡張の可変長配列 */
/* 配列の各要素に適当な乱数を入れる(精度や範囲は環境依存) */
srand((unsigned int)time(NULL));
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) a[i][j] = rand();
}
for(i=0;i<N;i++){
for(j=0;j<N;j++){
printf(" %4d",a[i][j]);
}
putchar('\n');
}
return 0;
}
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: 配列 乱数
1000っていうのは仰々しすぎる気がしなくもありませんが…
def setAndPrintRandomNumber(arr, n)
n.times do |i|
n.times do |j|
printf("%3d%s", arr[i][j] = rand(1..10), j == n - 1 ? "\n" : ",")
end
end
end
print "input number:"
while true
n = STDIN.gets.chomp.to_i
break if 1 <= n && n <= 1000
print "input number:"
end
arr = Array.new(n) {Array.new(n)}
setAndPrintRandomNumber(arr, n)
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。