大小写标签值超过类型c ++

时间:2018-11-15 17:19:05

标签: c++ types

我在本文中所做的所有开关都遇到了麻烦,我的问题是我需要写什么,这样才不会发生此问题?我应该选择哪种类型?

#include <iostream>

using namespace std;

void tablero (int i, int j);
char matriz [3][3];
int comprueba ();
void jugador1 ();
void jugador2 ();



int main (){
int comp,i,j;
cout<<"Bienvenido al 3 en ralla!"<<endl;
cout<<" -----------------------"<<endl;

for (i=0;i<=2; i++){
    for(j=0;j<=2; j++){
        matriz [i][j]='-';
    }
}
do{
    jugador1();

    jugador2();

}
while(comp==0);

cout<<"GRACIAS POR JUGAR <3!";
return 0;
}

void tablero (int i,int j)
{
 cout << matriz[0][0] << " | " << matriz[0][1] << " | " << matriz[0][2] <<endl;
 cout << matriz[1][0] << " | " << matriz[1][1] << " | " << matriz[1][2] <<endl;
 cout << matriz[2][0] << " | " << matriz[2][1] << " | " << matriz[2][2] <<endl;

return;
}

int comprueba (){
  int comp;

    switch (matriz[0][0]==matriz[0][1]==matriz[0][2]){  //horizontal 1
        case 'X':
            cout<<"Jugador 1 es el ganador! Enhorabuena!"<<endl;
            comp=1;
            break;
        case 'O':
            cout<<"Jugador 2 es el ganador! Enhorabuena!"<<endl;
            comp=1;
            break;
        default:
            comp=0;
       }

       switch (matriz[1][0]==matriz[1][1]==matriz[1][2]){  //horizontal 2
        case 'X':
            cout<<"Jugador 1 es el ganador! Enhorabuena!"<<endl;
            comp=1;
            break;
        case 'O':
            cout<<"Jugador 2 es el ganador! Enhorabuena!"<<endl;
            comp=1;
            break;
        default:
            comp=0;
       }

        switch (matriz[2][0]==matriz[2][1]==matriz[2][2]){  //horizontal 3
        case 'X':
            cout<<"Jugador 1 es el ganador! Enhorabuena!"<<endl;
            comp=1;
            break;
        case 'O':
            cout<<"Jugador 2 es el ganador! Enhorabuena!"<<endl;
            comp=1;
            break;
        default:
            comp=0;
       }

       switch (matriz[0][0]==matriz[1][0]==matriz[2][0]){  //vertical 1
        case 'X':
            cout<<"Jugador 1 es el ganador! Enhorabuena!"<<endl;
            comp=1;
            break;
        case 'O':
            cout<<"Jugador 2 es el ganador! Enhorabuena!"<<endl;
            comp=1;
            break;
        default:
            comp=0;
       }
       switch (matriz[0][1]==matriz[1][1]==matriz[2][1]){  //vertical 2
        case 'X':
            cout<<"Jugador 1 es el ganador! Enhorabuena!"<<endl;
            comp=1;
            break;
        case 'O':
            cout<<"Jugador 2 es el ganador! Enhorabuena!"<<endl;
            comp=1;
            break;
        default:
            comp=0;
       }
       switch (matriz[0][2]==matriz[1][2]==matriz[2][2]){  //vertical 3
        case 'X':
            cout<<"Jugador 1 es el ganador! Enhorabuena!"<<endl;
            comp=1;
            break;
        case 'O':
            cout<<"Jugador 2 es el ganador! Enhorabuena!"<<endl;
            comp=1;
            break;
        default:
            comp=0;
       }

       switch (matriz[0][0]==matriz[1][1]==matriz[2][2]){  //oblícua 1
        case 'X':
            cout<<"Jugador 1 es el ganador! Enhorabuena!"<<endl;
            comp=1;
            break;
        case 'O':
            cout<<"Jugador 2 es el ganador! Enhorabuena!"<<endl;
            comp=1;
            break;
        default:
            comp=0;
       }

       switch (matriz[0][2]==matriz[1][1]==matriz[2][0]){  //oblícua 2
        case 'X':
            cout<<"Jugador 1 es el ganador! Enhorabuena!"<<endl;
            comp=1;
            break;
        case 'O':
            cout<<"Jugador 2 es el ganador! Enhorabuena!"<<endl;
            comp=1;
            break;
        default:
            comp=0;
       }

return comp;
}

void jugador1 (void){
int i, j;
cout<<"Jugador 1, introduce una posicion"<<endl<<"Fila:";
cin>>i;
cout<<endl<<"Columna:"<<endl;
cin>>j;
i=i-1;
j=j-1;

if (i>3 || j>3){
    cout<<"Esta cordenada no existe, introduce otra jugador 1";
}
else{
    matriz [i][j]='X';

    tablero(i,j);

}

comprueba ();
return ;
}

void jugador2 (void){
int i, j;
cout<<"Jugador 2, introduce una posicion"<<endl<<"Fila:";
cin>>i;
cout<<endl<<"Columna:"<<endl;
cin>>j;
i=i-1;
j=j-1;

if (i>3 || j>3){
    cout<<"Esta cordenada no existe, introduce otra jugador 2";
}
else{
    matriz [i][j]='O';

    tablero(i,j);

}

comprueba ();   
return ;
}

谢谢大家来到这里,如果您对如何解决这个问题有任何想法,请向它解释,生病的将会大大影响我们<3 !!

1 个答案:

答案 0 :(得分:4)

首先matriz[1][0]==matriz[1][1]==matriz[1][2]不要做您梦dream以求的事情。由于它是==测试,因此它的值为bool(第二个==会将bool的结果matriz[1][0]==matriz[1][1]-与{{ 1}}-char-的值;没有您希望发生的隐含连词)。您需要详细了解C++ operators及其precedence(尤其是comparison operators)。

那么matriz[1][2]永远不能等于bool。它可以是'X'true(即使将其转换为false,也永远不会是char;在大多数系统上,'X' NUL 字符;几乎每台计算机上都使用ASCIIUTF-8(char)false(char)true 航向起始 control character,您可能不需要它。

不要忘记在编译器中启用所有警告和调试信息。如果使用GCC,请使用\001进行编译。改进您的代码,使其不发出警告。

然后阅读How to debug small programs

我的建议:请在几天后停止编码,然后花时间阅读更多。首先阅读一本不错的C++ programming书(完整)。查看一些C++ reference网站。研究如何use your compiler。学习use your debugger和一小部分version control(例如git,它有出色的教程视频;您只想学习一小部分g++ -Wall -Wextra -g)。然后回到您的程序(了解基础知识后,最好完全将其废弃,然后再次编写代码;您可能会写几十行,对它们进行调试,并改善您的代码用另外几十行代码进行编码,然后再次调试,直到满意为止;遵循iterative and incremental development方法。)

顺便说一句,它可以帮助研究某些现有小型free software项目的源代码(例如在githubgitlab或Linux发行版中) 。那可能是鼓舞人心的。

PS。即使花费了一个多小时,也可以按照此处的所有超链接进行操作。