関数の配列 – プログラミング – Home

通知
すべてクリア

[解決済] 関数の配列

固定ページ 1 / 2

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

#include<stdio.h>
void sp(int a,int b)
{
int i,r,c;
for(i=0;i<100;i++){
for(r=0;r<100;r++){
if(a[r]==i&&b[r]==r){
c=1;
break;
}
else {c=0;}
}
if(c==1)break;
}

return(c);
}
void main()
{
int x[100],y[100],a;
char b;
x[0]=40; y[0]=200;
a=don(x,y);

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

見たいな事をやりたいのですがエラーが出て困っています。
間違ってるところ教えてください。


引用未解決
トピックタグ
こん!
 こん!
(@こん!)
ゲスト
結合: 23年前
投稿: 49
 

> void sp(int a,int b)
> {
> int i,r,c;
> for(i=0;i<100;i++){
> for(r=0;r<100;r++){
> if(a[r]==i&&b[r]==r){

aもbも配列ではない。

> a=don(x,y);

??

sp()ってどこで使ってる?

sp()はvoidの様ですが

> return(c);

は何?

> 見たいな事をやりたいのですがエラーが出て困っています。

結局何がやりたいの?エラーとはコンパイル?実行?・・・ってそれは愚問だな。

こん!<=^・^=>


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

#include<stdio.h>
int don(int a[],int b[])
{
int i,r,c;
for(i=0;i<100;i++){
for(r=0;r<100;r++){
if(a[r]==i&&b[r]==r){
c=1;
break;
}
else {c=0;}
}
if(c==1)break;
}

return(c);
}
void main()
{
int x[100],y[100],a;
char b;
x[0]=40; y[0]=200;
a=don(x,y);

if(a==0){
pDC->TextOut(x,y,bon);
}
}
すいません まちがってかいてました
これでおねがいします


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

>間違ってるところ教えてください
(誤)見たいな事 -->(正)みたいな事
pDC がいきなり出てくる(宣言せずに変数を使っている)
CDC::TectOut() の第一引数と第二引数とはどんな型何でしょうか?
少なくとも int の排列の x や y やは引数としてふさわしくないでしょう
コンソールアプリケーションとウインドーアプリケーションとがごっちゃになっている

少し妙な点:
定義している函数 sp() は誰も使っていないのに、未定義の函数 don()
を void main() で使っている

void main() は余り好ましくありません


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

すいません
AppWizard(exe)をつくって
// CTestView クラスの描画

void CTestView::OnDraw(CDC* pDC)
{
CTestDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: この場所にネイティブ データ用の描画コードを追加します。
int x[100],y[100],a;
char b;
x[0]=40; y[0]=200;
a=don(x,y);

if(a==0){
pDC->TextOut(x,y,bon);
}
}
とうち、
メンバ関数を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[r]==i&&b[r]==r){
c=1;
break;
}
else {c=0;}
}
if(c==1)break;
}

return(c);
}
をしたところエラーが出てしまうんですが。


返信引用
EIJI
 EIJI
(@EIJI)
ゲスト
結合: 25年前
投稿: 76
 

エラーが出る じゃなくて
「どこで」「どんなメッセージの」エラーなのかが分かると
返事がきやすくなります。


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

わからないから質問するのでしょうが、いいかげんな内容を提出するのはよしましょうね

void main() と void CTestView::OnDraw(CDC *pDC) とを二度も書き間違えるとは
考えられないのでそう言うのですが、その上「こん!」さんから指摘された点が今回は
元に戻っています(函数 don の引数の型)。
CDC::TextOut() の引数の型についてはお判りになりましたか?

第一、どのようなエラーなのか書いていない点が気になります


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

エラーは次のように出てます

C:\My Documents\C++\test\testView.cpp(65) : error C2664: 'don' : 1 番目の引数
を 'int [100]' から 'int' に変換できません。 (新しい機能 ; ヘルプを参照)
この変換には reinterpret_cast, C スタイル キャストまたは関数スタイルのキャストが必要です。

C:\My Documents\C++\test\testView.cpp(68) : error C2664: 'int __thiscall
CDC::TextOutA(int,int,const class CString &)' : 1 番目の引数を 'int [100]' か
ら 'int' に変換できません。 (新しい機能 ; ヘルプを参照)
この変換には reinterpret_cast, C スタイル キャストまたは関数スタイルのキャストが必要です。

C:\My Documents\C++\test\testView.cpp(123) : error C2109: 配列または、ポインタでない
変数に添字が使われました。

C:\My Documents\C++\test\testView.cpp(123) : error C2109: 配列または、ポインタでない
変数に添字が使われました。


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

憐さん?ショウさん?

 エラーメッセージを出すのはいいですがその前の島さんのレスを見てその内容に対して確認し
てからビルドをした方がよくないですか?

落ち着いて整理してからにしたほうがよろしいかと。

こん!<=^・^=>


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

配列つかわなければちゃんと表示はできるのですが
配列にすると上のようなエラーが出ます


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

 すみません。理解力が足りない私には配列の[0]しか初期化していない配列を渡して(渡し
てない)forループで何を処理しようとしているのかよくわからないのですけど。その配列を使
わなければ表示出来たというのはどうやったのですか?

だいたいにして配列にしたっていいますがまさかxとyを配列宣言にして

> pDC->TextOut(x,y,bon);

はこのまま呼んだわけではないでしょうね?

こん!<=^・^=>


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

> pDC->TextOut(x,y,bon);
そのとおりなんですが。
if文をつかって表示するかしないかを
しようとしただけのプログラムなんですけど


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

配列使ってみたいとおもいまして
でも配列にするとエラーがでるんです


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

int x[100];

と宣言した場合に、x =10; という代入が可能かどうか判りますか?
整数と整数の排列とが違うことは判りますか?

今までにこん!さんや私が示していたことをまとめておきます
排列が使いたかったら

int CTestView::don(int a[], int b[])
{
/* この部分は省略 */
}

void CTestView::OnDraw(CDC *pDC) では

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

のようにしましょう

なお、
CTestView.h では

class CTestView : public CView
{
/* 下の定義以外は省きます */
int don(int a[], int b[]);
}
と訂正しましょう


返信引用
YuO
 YuO
(@YuO)
ゲスト
結合: 24年前
投稿: 252
 

まずは使う名前をひとつに決めて下さい。
質問はそれからです。
#こん!さんが2002/11/25(月) 18:00:53の最初に書かれていますが……。
#それとも,憐さんとショウさんは別人……?

でもって,
> int CTestView::don(int a,int b)
これがどのような宣言(実際には定義ですが)かはわかっていますか?
これは配列を関数が受け取るような宣言ではないですよ。


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

返信する

投稿者名

投稿者メールアドレス

タイトル *

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