por que las funciones no me corren?



   AUTOR PREGUNTA

Publicado 13 junio 2023 - 11:36

#include <iostream>
using namespace std;

  char tabl[3][3];
int f=0,c=0;
  char Jugador1[15];
  char Jugador2[15];
  char ficha='x';
  int turno=0;
  bool a=false;

void tablero(){


for(f=0;f<3;f++)
{
for(c=0;c<3;c++)

if(c <2 ) {
       cout<<tabl[f][c]<<" | ";
}else{
 cout<<tabl[f][c];
}
    if (f < 2){
   cout<<"\n---------\n";
  }

}

  }

 

void jugar(){

      do{
     
    
        if(ficha=='x')
        {
         cout<<Jugador1<<"Digita la posicion de x";
          cout<<"\n ingresa la fila";
           cin>>f;
         cout<<"\n ingresa la columna";
        cin>>c;
  
  }
  turno=turno+1;
   if(ficha=='o')
   {
     cout<<Jugador2<<"Digita la posicion de o";
          cout<<"\n ingresa la fila";
           cin>>f;
         cout<<"\n ingresa la columna";
        cin>>c;
   }
   turno=turno+1;
   
 if(ficha=='x' && tabl[f][c] != 'x' && tabl[f][c] !='o'){
  tabl[f][c]='x';
  ficha='o';
  tablero();
 }
 else if(ficha=='o' && tabl[f][c] != 'x' && tabl[f][c] !='o'){
   tabl[f][c]='o';
  ficha='x';
  tablero();
 }else{
  cout<<"casilla esta ocupada."<<endl;
  jugar();
 }
 
  }while(turno>0 && turno<10);
   
}

bool ganador(){
for(int i=0;i<3;i++)
{
if(tabl[i][0]==tabl[i][1] && tabl[i][0]==tabl[i][2] || tabl[0][i]==tabl[1][i] && tabl[0][i]==tabl[2][i])
  
 return true;

}
 if(tabl[0][0]==tabl[1][1] && tabl[1][1]==tabl[2][2] || tabl[0][2]==tabl[1][1] && tabl[1][1]==tabl[2][0])
 {
  
     
  return true;
   
 }
for(int i=0;i<3;i++)
{
 for(int j=0;j<3;j++)
 {
if(tabl[i][j] != 'x' && tabl [i][j] != 'o')
{
  
 return false;
}
    }
}
   a=true;
    
  return false;
  }

int main()
{
cout<<"Digite el nombre del jugador 1: ";
cin>>Jugador1;
  cout<<"Digite el nombre del jugador 2: ";
cin>>Jugador2;      

while(!ganador())
  {
    tablero();
       jugar();
    ganador();
}

if(ficha == 'x' && a==false)
{
cout<<Jugador2<<"has ganado"<<endl;
}else if (ficha == 'o' && a==false){
cout<<Jugador1<<"has ganado"<<endl;
} else{
cout<<"Empate";
}
return 0;
}




¿Tienes la misma pregunta? Yo también

 

Publicado 13 junio 2023 - 18:37

Hola te recomiendo que uses chatgpt para solucionar errores de codigo, porque te lo revisa rapido y efectivo, pero al margen de eso mira el codigo que te pongo a continuacion revisado a ver si se te soluciona en codigo C:

#include <iostream>
using namespace std;

char tablero[3][3] = {{' ', ' ', ' '}, {' ', ' ', ' '}, {' ', ' ', ' '}};  // Inicializa el tablero vacío
string Jugador1;
string Jugador2;
char ficha = 'x';
bool fin_juego = false;

void imprimir_tablero(){
    for(int i=0; i<3; i++) {
        for(int j=0; j<3; j++) {
            cout << tablero[i][j];
            if (j < 2) cout << " | ";
        }
        cout << endl;
        if (i < 2) cout << "---------" << endl;
    }
}

bool ganador() {
    // Verifica filas y columnas
    for(int i=0; i<3; i++) {
        if(tablero[i][0]==tablero[i][1] && tablero[i][0]==tablero[i][2] && tablero[i][0] != ' ') return true;
        if(tablero[0][i]==tablero[1][i] && tablero[0][i]==tablero[2][i] && tablero[0][i] != ' ') return true;
    }
    // Verifica diagonales
    if(tablero[0][0]==tablero[1][1] && tablero[0][0]==tablero[2][2] && tablero[0][0] != ' ') return true;
    if(tablero[0][2]==tablero[1][1] && tablero[0][2]==tablero[2][0] && tablero[0][2] != ' ') return true;

    // Si ningún espacio está vacío, declara empate
    for(int i=0; i<3; i++) {
        for(int j=0; j<3; j++) {
            if(tablero[i][j] == ' ') return false;
        }
    }
    fin_juego = true;
    return false;
}

void jugar() {
    int f, c;
    do {
        cout << (ficha=='x' ? Jugador1 : Jugador2) << ", ingresa la fila (1-3) y columna (1-3) para " << ficha << ": ";
        cin >> f >> c;
        f--; c--;  // Ajusta a base 0
    } while (f < 0 || f > 2 || c < 0 || c > 2 || tablero[f][c] != ' ');  // Verifica que la entrada sea válida y que el espacio esté vacío
    tablero[f][c] = ficha;  // Coloca la ficha
    ficha = (ficha=='x' ? 'o' : 'x');  // Cambia la ficha
}

int main() {
    cout << "Digite el nombre del jugador 1: ";
    cin >> Jugador1;
    cout << "Digite el nombre del jugador 2: ";
    cin >> Jugador2;

    while (!ganador()) {
        imprimir_tablero();
        jugar();
    }

    imprimir_tablero();  // Imprime el tablero final

    if(fin_juego)
        cout << "Empate" << endl;
    else