関数の配列 – 固定ページ 2 – プログラミング – Home

通知
すべてクリア

[解決済] 関数の配列

固定ページ 2 / 2

こん!
 こん!
(@こん!)
ゲスト
結合: 23年前
投稿: 49
 

答えは皆さんが出してくださっているのであれなんですけどだめ押しで

> if文をつかって表示するかしないかを

とは?
何の事か分からないんですけどリストを上げてみてもらえますか?

こん!<=^・^=>


返信引用
こん!
 こん!
(@こん!)
ゲスト
結合: 23年前
投稿: 49
 

http://www9.plala.or.jp/sgwr-t/c/sec10-2.html

ついでにこんなとこを読まれてみては?
どの程度理解出来ますか?

C++の前に
http://www9.plala.or.jp/sgwr-t/
でも読んでC言語を勉強された方がよろしいかも。

こん!<=^・^=>


返信引用
こん!
 こん!
(@こん!)
ゲスト
結合: 23年前
投稿: 49
 

>> if文をつかって表示するかしないかを

> 何の事か分からないんですけどリストを上げてみてもらえますか?

失礼。

> if(a==0){
> pDC->TextOut(x,y,bon);
> }

これの事ね。

こん!<=^・^=>


返信引用
ショウ
 ショウ
(@ショウ)
ゲスト
結合: 25年前
投稿: 13
Topic starter  

int型のメンバ関数donを作って次のようなプログラムを作りました

int CTestView::don(int a,int b)
{
int i,r,c;
for(i=0;i<100;i++){
for(r=0;r<100;r++){
if(a==i&&b==r){
c=1;
break;
}
else {c=0;}
}
if(c==1)break;
}

return(c);

}

そして
// CTestView クラスの描画に
下のようなプログラムをつくりました

void CTestView::OnDraw(CDC* pDC)
{
CTestDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: この場所にネイティブ データ用の描画コードを追加します。

int x,y,a;
char b;
x=40; y=200;
a=don(x,y);

if(a==0){
pDC->TextOut(x,y,bon);
}


返信引用
こん!
 こん!
(@こん!)
ゲスト
結合: 23年前
投稿: 49
 

> x=40; y=200;
> a=don(x,y);

まぁあのforループでは一生rは200にはなりそうも無いからaも一生0ですわね。

あと、お願いだからインデントあわせて。見づらいから。

こん!<=^・^=>


返信引用
ショウ
 ショウ
(@ショウ)
ゲスト
結合: 25年前
投稿: 13
Topic starter  

xとyを配列にしたいんですが
どうすればよいでしょう?


返信引用
島
 島
(@島)
ゲスト
結合: 23年前
投稿: 238
 

2002/11/25(月) 22:26:57 の一部に書き間違いがありました

> pDC ->TextOut(x[0], x[y], don);

pDC ->TextOut(x[0], y[0], don);

とでも訂正してください。x, y の添え字はあなたの考える適切な値に
してください。私には、どの添え字が適切なのか判断できませんので、
0 にしておきました


返信引用
こん!
 こん!
(@こん!)
ゲスト
結合: 23年前
投稿: 49
 

> 島 2002/11/25(月) 22:26:57

を読んでいないんですか?
そのままの解答だと思いますけど。他に何かありますか?

こん!<=^・^=>


返信引用
RAPT
 RAPT
(@RAPT)
ゲスト
結合: 23年前
投稿: 310
 

こんばんは、RAPTです。

(配列にするあたりは自分でやってください)

# 通常、returnに、()は不要です。
# return(c); ではなく、return c; とします。

CTestView::don()なんて、わざわざ変数cを使う意味はあるのかな。

int CTestView::don(int a,int b)
{
int i,r;
for(i=0;i<100;i++){
for(r=0;r<100;r++){
if(a==i && b==r)
return 1;
}
}
return 0;
}
これだけでいいような。しかも、a, bが、100以上の時、必ず0を返すし。。

もっと言えば、ここで1万回のループをする必要性は?
これって、実は
int CTestView::don(int a, int b)
{
return (a>=0 && a<100 && b>=0 && b<100) ? 1 : 0;
}
で終わるとか?

Windows98/VC++6.0std/SDK-may2002/ATL3.0/WTL7.0


返信引用
ショウ
 ショウ
(@ショウ)
ゲスト
結合: 25年前
投稿: 13
Topic starter  

皆様
いけるようになりました
ありがとうございました


返信引用
ショウ
 ショウ
(@ショウ)
ゲスト
結合: 25年前
投稿: 13
Topic starter  

やりたかったことは100*100のマスに
点(座標)があるかないかを判別する
ようなプログラムをつくりたかったんです
だから配列を作って座標を登録してそのなか
にあるかないかをしたかったそれだけなんです。

すいませんでした素人なもんで理解力がなくてm(__)m


返信引用
こん!
 こん!
(@こん!)
ゲスト
結合: 23年前
投稿: 49
 

> やりたかったことは100*100のマスに
> 点(座標)があるかないかを判別する

だったら
int p[100][100];

の二次元配列を

p[y][x]でふった方が分かりやすかったかも知れませんね。

あしからず・・・

こん!<=^・^=>


返信引用
RAPT
 RAPT
(@RAPT)
ゲスト
結合: 23年前
投稿: 310
 

> やりたかったことは100*100のマスに点(座標)があるかないかを判別する

それだったら、最初からそういってくれれば。

void CTestView::OnDraw(CDC* pDC)
{
CTestDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: この場所にネイティブ データ用の描画コードを追加します。

int x,y,a;
char b;
x=40; y=200;
// a=don(x,y); // removed

// inserted
CPoint pt (x, y);
CRect rc (0, 0, 99, 99); // (0,0)を左上とする、100x100のマス目
// ende

if(!rc.PtInRect(&pt)/*a==0*/){ // changed
pDC->TextOut(x,y,bon);
}
}
こんなこともできます。後はヘルプを参照。参考までに。

Windows98/VC++6.0std/SDK-may2002/ATL3.0/WTL7.0


返信引用
こん!
 こん!
(@こん!)
ゲスト
結合: 23年前
投稿: 49
 

> if(!rc.PtInRect(&pt)/*a==0*/){ // changed

if(rc.PtInRect(pt)/*a==0*/){ // changed

それをやるならこれのような・・・

こん!<=^・^=>


返信引用
こん!
 こん!
(@こん!)
ゲスト
結合: 23年前
投稿: 49
 

突っ込みついでにこんなのはいかが。

Viewクラスのメンバ変数に
CPoint m_cPoint;

コンストラクタで

CEView::CEView():m_cPoint(0,0)
{
}

描画で
void CEView::OnDraw(CDC* pDC)
{
CRect rc (0, 0, 300, 300); // (0,0)を左上とする、100x100のマス目

if(rc.PtInRect(m_cPoint)/*a==0*/){ // changed
pDC->TextOut(m_cPoint.x,m_cPoint.y,bon);
}
}

ほんでマウスイベントで
void CEView::OnMouseMove(UINT nFlags, CPoint point)
{
m_cPoint = point;
Invalidate(TRUE);
}

一例・・・

こん!<=^・^=>


返信引用
固定ページ 2 / 2

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました