C++の配列で質問です

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

C++の配列で質問です

#1

投稿記事 by あい » 13年前

以前、□と■で10×10の図形を生成することについて質問した者です。
ランダムでの生成は成功したのですが、手動での生成がどうしてもわかりません。(入力はできるのですがうまく表示されません)
下のプログラムのように配列に格納して表示させたいです。どなたかご教授願います。
入力方法ですが、0を押すと□、1を押すと■が表示されるというものをユーザーに10行分入力させるという方法をとっています。

コード:

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

main(){
	int dim[10][10];
	int i, j;
		/*配列dimの初期化*/
		for(i=0;i<10;i++){
			for(j=0;j<10;j++){
				dim[i][j]=0;
			}
		}
		/*乱数生成*/
		srand((unsigned)time(NULL));
		
		/*配列dimに0か1をランダムに入れる*/
		for(i=0;i<10;i++){
			for(j=0;j<10;j++){
				dim[i][j]=rand()%2;
			}
		}
		
		/*0のとき■、1のとき□を出力するようにする*/
		for(i=0;i<10;i++){
			for(j=0;j<10;j++){
				if(dim[i][j]==0){
					cout << "■" ;
				}else{
					cout<< "□" ;
				}
				if(j==9){
					cout << "\n" ;
				}
			}
		}
	}

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: C++の配列で質問です

#2

投稿記事 by softya(ソフト屋) » 13年前

過去のトピックで放置状態のモノが有るようですので、出来るだけ返答をお願いします。 フォーラムルール → http://dixq.net/board/board.html
解決した場合は解決した内容と解決チェックをお願いします。

「図形の回転について教えてください • C言語交流フォーラム ~ mixC++ ~」
http://dixq.net/forum/viewtopic.php?f=3&t=12245#p98351
「C++ について • C言語交流フォーラム ~ mixC++ ~」
http://dixq.net/forum/viewtopic.php?f=3&t=12103

このコードにはcinが見当たりませんが、そちらのコードはどうされたのでしょうか?

【追記】
#include<iostream.h>
はC++の古い書き方なのでオススメ出来ません。
それとnamespace名前空間の指定がないので問題の有るプログラムです。
どのようなコンパイラをお使いででしょうか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

あい

Re: C++の配列で質問です

#3

投稿記事 by あい » 13年前

そうなのですか?
コンパイラはbcpadというものを使っています。
学校指定のものがこれだったので…

あい

Re: C++の配列で質問です

#4

投稿記事 by あい » 13年前

すみません。困っている点について書き忘れていました。
質問に書いたプログラムの、/*配列に0か1をランダムに入れ込む*/
の部分を、cinとcoutで手動で入力してもらっても、コンパイルしたときに図形として表示されないのです。
それは何故なのでしょうか。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: C++の配列で質問です

#5

投稿記事 by softya(ソフト屋) » 13年前

解決チェックしていただいのは良いのですが、フォーラムルールに有るように解決内容の説明もお願いします。
あい さんが書きました:そうなのですか?
コンパイラはbcpadというものを使っています。
学校指定のものがこれだったので…
bcpadだとBorland C++ Compiler 5.5でしょうか?
これは2000年なのでかなり古いですが、新しい書き方も出来るので新しい書き方を使って下さい。
今時は、古い書き方でエラーに成るコンパイラが多いです。
「基本入出力」
http://wisdom.sakura.ne.jp/programming/cpp/cpp2.html

で、うまくいかないcinを使ったプログラムも見せてもらえますか。

【追記】
C++らしい今風のincludeの書き方。

コード:

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

あい

Re: C++の配列で質問です

#6

投稿記事 by あい » 13年前

遅れて申し訳ありませんでした。こちらがプログラムになります。
色々とつっこみどころがあるとは思いますがよろしくお願いします。

コード:

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

main(){
	int dim[10][10];
	int i, j;
	
		/*配列dimの初期化*/
		for(i=0;i<10;i++){
			for(j=0;j<10;j++){
				dim[i][j]=0;
			}
		}
		
		/*配列dimに0か1を入れる*/
		for(i=0;i<10;i++){
			cout<<i+1;
			cout<<"行目\n";
				cin>>dim[i];
			}
		
		/*0のとき■、1のとき□を出力するようにする*/
		for(i=0;i<10;i++){
			for(j=0;j<10;j++){
				if(dim[i]==0){
					cout << "■" ;
				}else{
					cout<< "□" ;
				}
				if(j==9){
					cout << "\n" ;
				}
			}
		}
}

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: C++の配列で質問です

#7

投稿記事 by softya(ソフト屋) » 13年前

dimは2次元配列なので1次元しか指定していないのが問題ですね。
あと今風の書き方でお願いします。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

あい

Re: C++の配列で質問です

#8

投稿記事 by あい » 13年前

今風、というのはこんなかんじでいいのでしょうか。

コード:

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

main(){
	int dim[10][10];
	int i, j;
	
		/*配列dimの初期化*/
		for(i=0;i<10;i++){
			for(j=0;j<10;j++){
				dim[i][j]=0;
			}
		}
		
		/*配列dimに0か1を入れる*/
		for(i=0;i<10;i++){
			cout<<i+1;
			cout<<"行目\n";
			for(j=0;j<10;j++){
				cin>>dim[i];
			}
		}w
		
		
		/*0のとき■、1のとき□を出力するようにする*/
		for(i=0;i<10;i++){
			for(j=0;j<10;j++){
				if(dim[i]==0){
					cout << "■" ;
				}else{
					cout<< "□" ;
				}
				if(j==9){
					cout << "\n" ;
				}
			}
		}
}
dimに0と1を入力するところが2次元配列なのに1次元しか指定してないというのは自分も問題だと思っていました。
でも2次元の指定をすると入力の時に10行×10回分の入力を要求されてしまったので指定の仕方を間違えたのだと思います。
その指定の仕方に問題があると思うので、どのように間違えているのか教えてもらえないでしょうか。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: C++の配列で質問です

#9

投稿記事 by softya(ソフト屋) » 13年前

10x10なんだから100個入力するのは当たり前ですよね。
ただ、空白で区切れば一行で10個入力できますよ。

それとdimの扱いは間違っているところが他にもあります。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

あい

Re: C++の配列で質問です

#10

投稿記事 by あい » 13年前

時間が開いて申し訳ありません。
とりあえずこの問題は解決いたしました。
ありがとうございました。

閉鎖

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