エラー:オーバーロードについて

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

エラー:オーバーロードについて

#1

投稿記事 by index » 9年前

エラー:~のオーバーロードが曖昧です。
とでます。
どういう意味でしょうか?

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

Re: エラー:オーバーロードについて

#2

投稿記事 by みけCAT » 9年前

とりあえずググってみませんか?
[search=google]オーバーロードが曖昧です[/search]
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

index

Re: エラー:オーバーロードについて

#3

投稿記事 by index » 9年前

ぐぐってはみたのですが、
難しくて分からないのですorz
出来れば、わかりやすく教えていただけると幸いです

アバター
h2so5
副管理人
記事: 2212
登録日時: 9年前
住所: 東京
連絡を取る:

Re: エラー:オーバーロードについて

#4

投稿記事 by h2so5 » 9年前

ソースを見せていただけますか?

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

Re: エラー:オーバーロードについて

#5

投稿記事 by みけCAT » 9年前

http://www.geocities.co.jp/SiliconValle ... 2.html#o&d
すいません、自分にはうまく説明できません。
とりあえずここを見るか、もう少し調べるか、他の方の返信を待ってください。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

index

Re: エラー:オーバーロードについて

#6

投稿記事 by index » 9年前

コード:

#include<stdio.h>
#include<stdlib.h>
#define T 10//縦のマス
#define Y 10//横のマス
#define Bom 10//爆弾の数
int GetRandom(int min,int max);
int Creat(int map,int bom);

int main(void)
{
	//**************関数設定****************
	
	int state[T][Y]={0},ex[T][Y],g,h,i,j,k,yoko0;
	//state=状態,ex=有無.g,h,i,j,k=添字,yoko0=上の数
	//state[][]=0:通常時,1:開いてるとき,2:旗付
	int xx,yy,x,y,z,bomx,bomy,boms,hold=5;
	//x,y=マップ上の座標,bomx,y=爆弾の座標
	//z=旗or開,xx,yy=配列上の座標,hold=switchの判別式,boms=周りの爆弾の個数
	int dd;
	
	//**************初期設定****************
	
	for(g=0;g<T;g++){//初期フィールド製作
		for(h=0;h<Y;h++){
			printf("■");
		}
		printf("%d\n",g+1);
	}
	for(yoko0=0;yoko0<Y;yoko0++){
		printf("%2d",yoko0+1);
	}printf("\n");
	
	for(i=0;i<Bom;i++){//爆弾設定
		do{
			bomx=GetRandom(0,T);
			bomy=GetRandom(0,Y);
		}while(ex[bomx][bomy]==1);
		ex[bomx][bomy]=1;
	};
	
	printf("1:開ける2:旗付け");//旗or開
	do{
		scanf("%d",z);
	}while(z!=1 || z!=2);
	
//**************メインプログラム開始******************

	do{
		
		//***************プレイヤー行動********************
		
		do{
			printf("T=");//旗or開座標
			scanf("%d",&x);
			xx=x-1;
			printf("Y=");
			scanf("%d",&y);
			yy=y-1;
			if(state[xx][yy]==1 && z==1){
				printf("開いてます");
			}
			if(state[xx][yy]==2 && z==2){
				printf("立ってます");
			}
		}while((state[xx][yy]==1 && z==1) || (state[xx][yy]==2 && z==2));
		
		//******************見えない処理*********************
		
		if(z==1)state[xx][yy]=1;//開決定
		if(z==2)state[xx][yy]=2;//旗決定
		
		for(j=0;j<T;j++){
			for(k=0;k<Y;k++){
				if(state[j][k]==1){
					if(j==0) hold=1;//最上段
					if(j==T-1) hold=2;//最下段
					if(k==0) hold=3;//最左段
					if(k==Y-1) hold=4;//最右段
					if(hold==5) hold=0;//中心
				}
				//***************************マス処理***************************
				if(ex[j][k]==0)
				switch(hold){
					
					//*****************中心*****************
					
					case 0:
					if(ex[j-1][k-1]==0 && ex[j-1][k]==0 && ex[j-1][k+1]==0 && ex[j][k-1]==0){
						if(ex[j][k+1]==0 && ex[j+1][k-1]==0 && ex[j+1][k]==0 && ex[j+1][k+1]==0){
							state[j-1][k-1]=1;
							state[j-1][k]=1;
							state[j-1][k+1]=1;
							state[j][k-1]=1;
							state[j][k+1]=1;
							state[j+1][k-1]=1;
							state[j+1][k]=1;
							state[j+1][k+1]=1;
						}
					}
					if(ex[j-1][k-1]==1) boms++;
					if(ex[j-1][k]==1) boms++;
					if(ex[j-1][k+1]==1) boms++;
					if(ex[j][k-1]==1) boms++;
					if(ex[j][k+1]==1) boms++;
					if(ex[j+1][k-1]==1) boms++;
					if(ex[j+1][k]==1) boms++;
					if(ex[j+1][k+1]==1) boms++;
					break;
					
					//******************最上段*************
					
					case 1:
					if(ex[j+1][k]==0) state[j+1][k]=1;
					if(ex[j+1][k]==1) boms++;
					if(!(k==0)){
						if(ex[j][k-1]==0) boms++;
						if(ex[j+1][k-1]==0) boms++;
					}
					if(!(k==T-1)){
						if(ex[j][k+1]==0) boms++;
						if(ex[j+1][k+1]==0) boms++;
					break;
					
					//*******************最下段*************
					
					case 2:
					if(ex[j-1][k]==0) state[j-1][k]=1;
					if(ex[j-1][k]==1) boms++;
					if(!(k==0)){
						if(ex[j][k-1]==0) boms++;
						if(ex[j-1][k-1]==0) boms++;
					}
					if(!(k==T-1)){
						if(ex[j][k+1]==0) boms++;
						if(ex[j-1][k+1]==0) boms++;
					break;
					
					//****************最左段*************
					
					case 3:
					if(ex[j][k+1]==0) state[j][k+1]=1;
					if(ex[j][k+1]==1) boms++;
					if(!(j==0)){
						if(ex[j][k+1]==0) boms++;
						if(ex[j-1][k+1]==0) boms++;
					}
					if(!(k==T-1)){
						if(ex[j][k+1]==0) boms++;
						if(ex[j+1][k+1]==0) boms++;
					}
					break;
					
					//**************最右段***************
					
					case 4:
					if(ex[j][k-1]==0) state[j][k-1]=1;
					if(ex[j][k-1]==1) boms++;
					if(!(j==0)){
						if(ex[j][k-1]==0) boms++;
						if(ex[j-1][k-1]==0) boms++;
					}
					if(!(k==T-1)){
						if(ex[j][k-1]==0) boms++;
						if(ex[j+1][k-1]==0) boms++;
					}
					break;
					
				};//switch終了
				Creat(state[j][k],boms);
			}//for(k)終了
			printf("\n");
		}//fpr(j)終了
	}while(dd==0);
	return 0;
}

//*****************その他の関数*******************
int GetRandom(int min,int max);//ランダム設定
{
	return min + (int)(rand()*(max-min+1.0)/(1.0+RAND_MAX));
}

int Creat(int map,int bom)//マップ製作
{
	if(bom==0){
		switch(map){
			case 0:
			printf("■");
			break;
			case 1:
			printf("□");
			break;
			case 2:
			printf("▲");
			break;
		};
	}
	else{
		printf("%d",bom);
	}
	return 0;
}
 
マインスイーパーのプログラムです。
マウスを対応させるやり方をまだ知らないので
こうなりました。

※開発途中でまだ他にもエラーがあります

アバター
h2so5
副管理人
記事: 2212
登録日時: 9年前
住所: 東京
連絡を取る:

Re: エラー:オーバーロードについて

#7

投稿記事 by h2so5 » 9年前

178行目:

//*****************その他の関数*******************
int GetRandom(int min,int max);//ランダム設定
{
return min + (int)(rand()*(max-min+1.0)/(1.0+RAND_MAX));
}

赤字の部分がおかしいです。

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

Re: エラー:オーバーロードについて

#8

投稿記事 by みけCAT » 9年前

とりあえずコンパイルが通るようにしてみました。

コード:

#include<stdio.h>
#include<stdlib.h>
#define T 10//縦のマス
#define Y 10//横のマス
#define Bom 10//爆弾の数
int GetRandom(int min,int max);
int Creat(int map,int bom);
 
int main(void)
{
    //**************関数設定****************
    
    int state[T][Y]={0},ex[T][Y],g,h,i,j,k,yoko0;
    //state=状態,ex=有無.g,h,i,j,k=添字,yoko0=上の数
    //state[][]=0:通常時,1:開いてるとき,2:旗付
    int xx,yy,x,y,z,bomx,bomy,boms,hold=5;
    //x,y=マップ上の座標,bomx,y=爆弾の座標
    //z=旗or開,xx,yy=配列上の座標,hold=switchの判別式,boms=周りの爆弾の個数
    int dd;
    
    //**************初期設定****************
    
    for(g=0;g<T;g++){//初期フィールド製作
        for(h=0;h<Y;h++){
            printf("■");
        }
        printf("%d\n",g+1);
    }
    for(yoko0=0;yoko0<Y;yoko0++){
        printf("%2d",yoko0+1);
    }printf("\n");
    
    for(i=0;i<Bom;i++){//爆弾設定
        do{
            bomx=GetRandom(0,T);
            bomy=GetRandom(0,Y);
        }while(ex[bomx][bomy]==1);
        ex[bomx][bomy]=1;
    };
    
    printf("1:開ける2:旗付け");//旗or開
    do{
        scanf("%d",&z);
    }while(z!=1 && z!=2);
    
//**************メインプログラム開始******************
 
    do{
        
        //***************プレイヤー行動********************
        
        do{
            printf("T=");//旗or開座標
            scanf("%d",&x);
            xx=x-1;
            printf("Y=");
            scanf("%d",&y);
            yy=y-1;
            if(state[xx][yy]==1 && z==1){
                printf("開いてます");
            }
            if(state[xx][yy]==2 && z==2){
                printf("立ってます");
            }
        }while((state[xx][yy]==1 && z==1) || (state[xx][yy]==2 && z==2));
        
        //******************見えない処理*********************
        
        if(z==1)state[xx][yy]=1;//開決定
        if(z==2)state[xx][yy]=2;//旗決定
        
        for(j=0;j<T;j++){
            for(k=0;k<Y;k++){
                if(state[j][k]==1){
                    if(j==0) hold=1;//最上段
                    if(j==T-1) hold=2;//最下段
                    if(k==0) hold=3;//最左段
                    if(k==Y-1) hold=4;//最右段
                    if(hold==5) hold=0;//中心
                }
                //***************************マス処理***************************
                boms=0;
                if(ex[j][k]==0)
                switch(hold){
                    
                    //*****************中心*****************
                    
                    case 0:
                    if(ex[j-1][k-1]==0 && ex[j-1][k]==0 && ex[j-1][k+1]==0 && ex[j][k-1]==0){
                        if(ex[j][k+1]==0 && ex[j+1][k-1]==0 && ex[j+1][k]==0 && ex[j+1][k+1]==0){
                            state[j-1][k-1]=1;
                            state[j-1][k]=1;
                            state[j-1][k+1]=1;
                            state[j][k-1]=1;
                            state[j][k+1]=1;
                            state[j+1][k-1]=1;
                            state[j+1][k]=1;
                            state[j+1][k+1]=1;
                        }
                    }
                    if(ex[j-1][k-1]==1) boms++;
                    if(ex[j-1][k]==1) boms++;
                    if(ex[j-1][k+1]==1) boms++;
                    if(ex[j][k-1]==1) boms++;
                    if(ex[j][k+1]==1) boms++;
                    if(ex[j+1][k-1]==1) boms++;
                    if(ex[j+1][k]==1) boms++;
                    if(ex[j+1][k+1]==1) boms++;
                    break;
                    
                    //******************最上段*************
                    
                    case 1:
                    if(ex[j+1][k]==0) state[j+1][k]=1;
                    if(ex[j+1][k]==1) boms++;
                    if(!(k==0)){
                        if(ex[j][k-1]==0) boms++;
                        if(ex[j+1][k-1]==0) boms++;
                    }
                    if(!(k==T-1)){
                        if(ex[j][k+1]==0) boms++;
                        if(ex[j+1][k+1]==0) boms++;
					}
                    break;
                    
                    //*******************最下段*************
                    
                    case 2:
                    if(ex[j-1][k]==0) state[j-1][k]=1;
                    if(ex[j-1][k]==1) boms++;
                    if(!(k==0)){
                        if(ex[j][k-1]==0) boms++;
                        if(ex[j-1][k-1]==0) boms++;
                    }
                    if(!(k==T-1)){
                        if(ex[j][k+1]==0) boms++;
                        if(ex[j-1][k+1]==0) boms++;
					}
                    break;
                    
                    //****************最左段*************
                    
                    case 3:
                    if(ex[j][k+1]==0) state[j][k+1]=1;
                    if(ex[j][k+1]==1) boms++;
                    if(!(j==0)){
                        if(ex[j][k+1]==0) boms++;
                        if(ex[j-1][k+1]==0) boms++;
                    }
                    if(!(k==T-1)){
                        if(ex[j][k+1]==0) boms++;
                        if(ex[j+1][k+1]==0) boms++;
                    }
                    break;
                    
                    //**************最右段***************
                    
                    case 4:
                    if(ex[j][k-1]==0) state[j][k-1]=1;
                    if(ex[j][k-1]==1) boms++;
                    if(!(j==0)){
                        if(ex[j][k-1]==0) boms++;
                        if(ex[j-1][k-1]==0) boms++;
                    }
                    if(!(k==T-1)){
                        if(ex[j][k-1]==0) boms++;
                        if(ex[j+1][k-1]==0) boms++;
                    }
                    break;
                    
                };//switch終了
                Creat(state[j][k],boms);
            }//for(k)終了
            printf("\n");
        }//fpr(j)終了
    }while(dd==0);
    return 0;
}
 
//*****************その他の関数*******************
int GetRandom(int min,int max)//ランダム設定
{
    return min + (int)(rand()*(max-min+1.0)/(1.0+RAND_MAX));
}
 
int Creat(int map,int bom)//マップ製作
{
    if(bom==0){
        switch(map){
            case 0:
            printf("■");
            break;
            case 1:
            printf("□");
            break;
            case 2:
            printf("▲");
            break;
        };
    }
    else{
        printf("%d",bom);
    }
    return 0;
}
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

index

Re: エラー:オーバーロードについて

#9

投稿記事 by index » 9年前

ありがとうございます
これから、どこが悪かったのか
照らし合わせていきます

index

Re: エラー:オーバーロードについて

#10

投稿記事 by index » 9年前

これから、照らし合わせて、
いろいろとバグ修正していきます
ありがとうございました

閉鎖

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