学校の課題に関して

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
meru77

学校の課題に関して

#1

投稿記事 by meru77 » 2ヶ月前

現在C言語を学んでいる学生です。
プログラミングに関しては初歩的なことしかできません。
C言語について学ぶ講義の課題で、

100x100の要素を持つ整数型2次元配列を生成し、各要素にランダムな整数値を代入する。
ランダムな整数値をrand()関数を使って、生成すること。生成した値を配列の各要素に代入する。乱数値の範囲は0~10までとする。
生成したデータをCSV形式でファイル出力し、Excel上で視覚的(色)で結果を確認して提出せよ。

というものが出されました。
自力で取り組んでみたのですが、どうしてもうまくいきません。具体的には、Excelファイルに1列1万行のものができてしまいます…
Windowsで、VisualStudio Professional2013を利用しています。
提出は明日の13時なので、ご教授いただければありがたいです。

コード:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
	int base[100][100];
	int i,j;
	int r;

	FILE *fp;

	fp = fopen("base.csv", "w");

	if ((fp = fopen("base.csv", "w")) == NULL){
		printf("ファイルオープンに失敗しました。\n");
		exit(1);
	}

	for (i = 0; i < 100; i++){
		for (j = 0; j < 100; j++){
			fprintf(fp, "%d,\n", rand() % (10 + 1), base[100][100] );
		}
	}

	fclose(fp);

	return 0;
}

アバター
usao
記事: 1449
登録日時: 5年前

Re: 学校の課題に関して

#2

投稿記事 by usao » 2ヶ月前

> 生成した値を配列の各要素に代入する。

と指定されているので,代入作業を行う必要があるように思います.


> 1列1万行

になるのは,出力時に1万回改行しているからでしょう.
所望の形になるように,必要な箇所にのみ改行を入れるとよいのではないでしょうか.

アバター
みけCAT
記事: 6033
登録日時: 7年前
住所: 千葉県
連絡を取る:

Re: 学校の課題に関して

#3

投稿記事 by みけCAT » 2ヶ月前

・fopenを無駄に2回している
・範囲外のbase[100][100]の値を読んでいる
という問題点もありますね。

(fprintfの書式に対して引数が多すぎること自体は、多すぎる引数が無視されるだけで無害です)
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

返信

“C言語何でも質問掲示板” へ戻る