elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


  Mostrar Mensajes
Páginas: [1]
1  Programación / Programación C/C++ / Re: Problema con violación de segmento en: 8 Noviembre 2015, 21:34 pm
estoy igual que el amigp! soy un programador novato! tengo problemas con algun for! me sale el errror violacion de segmento core generado! se que el problema debe estar en algun for que se esta saliendo del espacio y esta tocando la memoria o algo asi fue que me explicaron y he dado vueltas y nada que he podido resolver!!!! gracias espero una respuesta!!!!!
 para la ayuda de un buen samaritano y programador!















#include <stdio.h>
#include <time.h>
//Bienvenido al juego tres en raya

void loop (char c[3][3]);
void Intro_Primera (char c[3][3]);
void tablero  (char c[3][3]); // tablero para mostrar en pantalla
void Intro_Yo (char c[3][3]); //turno del jugador o usuario
void Intro_IA (char c[3][3]); //turno aleatorio o computadora
int  ganador  (char c[3][3]); //funcion para determinar quuien gana

int main () {

    char c [3][3];
         
    loop (c);
   
   system ("pause");
   return 0;
   
}
   
void loop (char c [3][3]){
   int i, j;
   
   i = 0;
   
   Intro_Primera (c);
   tablero(c);
   
   do{
       system ("cls");
       tablero(c);
       
       if (i % 2 == 0) {
          Intro_Yo (c);
       }
       else {
             Intro_IA (c);
             }
             j = ganador (c);             
             i++;
   
   }while (i <= 9 && j == 2);
   
   if (j == 0){
     printf ("Muy Bien!! Has ganado!!\n\n");
     }
     else if (j == 1){
           printf ("ohhh noo!! Has perdido!!");
           }
           else{
                printf ("Has empatado!! Intentalo de nuevo!!");
     
   }
}

void Intro_Primera (char c[3][3]){
   int i, j;
   char aux;
   
   aux='1';
   
   for (i = 0; 1 < 3; i++){
       for (j = 0; j < 3; j++){
          c[j] = aux++;
       }
   }
}

void Intro_Yo(char c[3][3]){
  int i, j, k;
  char aux;
 
     
    do{
       do{
        printf ("Coloca una ficha:  ");
        fflush (stdin);
        scanf ("%c",&aux);
        }while (aux < '1' || aux > '9');
       
         k = 0;
       
      switch (aux){
         case '1': {
                 i = 0;
                 j = 0;
                    if (c[j] == 'X' || c[j] == 'O'){
                     k = 1;
                     printf ("la posicion esta ocupada! Intentalo con otro numero!!\n\n");
                 }
                      break;                 
                 }     
                 
         case '2': {
                 i = 0;
                 j = 1;
                    if (c[j] == 'X' || c[j] == 'O'){
                     k = 1;
                     printf ("la posicion esta ocupada! Intentalo con otro numero!!\n\n");
                 }
                     break;                 
                 }
         case '3': {
                 i = 0;
                 j = 2;
                    if (c[j] == 'X' || c[j] == 'O'){
                     k = 1;
                     printf ("la posicion esta ocupada! Intentalo con otro numero!!\n\n");
                 }
                     break;                 
                 }           
         case '4': {
                 i = 1;
                 j = 0;
                    if (c[j] == 'X' || c[j] == 'O'){
                     k = 1;
                     printf ("la posicion esta ocupada! Intentalo con otro numero!!\n\n");
                 }
                      break;                 
                 }   
         case '5': {
                 i = 1;
                 j = 1;
                    if (c[j] == 'X' || c[j] == 'O'){
                     k = 1;
                     printf ("la posicion esta ocupada! Intentalo con otro numero!!\n\n");
                 }
                     break;                 
                 }     
         case '6': {
                 i = 1;
                 j = 2;
                    if (c[j] == 'X' || c[j] == 'O'){
                     k = 1;
                     printf ("la posicion esta ocupada! Intentalo con otro numero!!\n\n");
                 }
                     break;                 
                 }     
         case '7': {
                 i = 2;
                 j = 0;
                    if (c[j] == 'X' || c[j] == 'O'){
                     k = 1;
                     printf ("la posicion esta ocupada! Intentalo con otro numero!!\n\n");
                 }
                      break;                 
                 }     
         case '8': {
                 i = 2;
                 j = 1;
                    if (c[j] == 'X' || c[j] == 'O'){
                     k = 1;
                     printf ("la posicion esta ocupada! Intentalo con otro numero!!\n\n");
                 }
                     break;                 
                 }     
         case '9': {
                 i = 2;
                 j = 2;
                    if (c[j] == 'X' || c[j] == 'O'){
                     k = 1;
                     printf ("la posicion esta ocupada! Intentalo con otro numero!!\n\n");
                 }
                      break;                 
                 }     
        }
    }while (k == 1);
   
    c[j] = 'X';
   
}

void Intro_IA (char c[3][3]){
     int i, j, k;
     
     
     srand (time(NULL));
     do{
         
    i = rand() % 3;
    j = rand() % 3;
    k = 0;
   
     if (c[j] == 'X' || c[j] == 'O'){
         k = 1;
         }
   }while (k == 1);
   
    c[j] = 'O';
}

void tablero (char c[3][3]){
  int i, j;
 
  for (i = 0; 1 < 3; i++){
       for ( j = 0; j < 3; j++){
          if (j < 2){
                printf (" %c  |",c[j]);
          }   
            else {
                  printf (" %c ",c[j]);
            }
       }     
       if (i < 2){
          printf ("\n-----------\n");       
       }
  }
  printf ("\n\n");


int ganador (char c[3][3]){
    if (c[0][0] == 'X' || c[0][0] == 'O'){
        if (c[0][0] == c[0][1] && c[0][0] == c[0][2]){
           if (c[0][0] == 'X'){
                     return 0; //ha ganado
               }
               else{
                     return 1; // ha perdido
            }         
        }
        if (c[0][0] == c[1][0] && c[0][0] == c[2][0]){
            if (c[0][0] == 'X'){
                 return 0; //ha ganado
               }
               else{
                     return 1; // ha perdido
            }         
        }       
    }
   
        if (c[1][1] == 'X' || c[1][1] == 'O'){
       if (c[1][1] == c[0][0] && c[1][1] == c[2][2]){
        if (c[1][1] == 'X'){
                 return 0; //ha ganado
               }
               else{
                     return 1; // ha perdido
            }         
        } 
        if (c[1][1] == c[1][0] && c[1][1] == c[1][2]){
            if (c[1][1] == 'X'){
                 return 0; //ha ganado
               }
               else{
                     return 1; // ha perdido
            }         
        }     
             if (c[1][1] == c[2][0] && c[1][1] == c[0][2]){
                if (c[1][1] == 'X'){
                 return 0; //ha ganado
               }
               else{
                     return 1; // ha perdido
            }         
        }
          if (c[1][1] == c[0][1] && c[1][1] == c[2][1]){
            if (c[1][1] == 'X'){
                 return 0; //ha ganado
               }
               else{
                     return 1; // ha perdido
            }         
        }                   
    }
    if (c[2][2] == 'X' || c[2][2] == 'O'){
       if(c[2][2] == c[2][0] && c[2][2] == c[2][1]){
          if (c[2][2] == 'X'){
                    return 0; //ha ganado
               }
               else{
                     return 1; // ha perdido
            }         
        }                   
       if (c[2][2] == c[0][2] && c[2][2] == c[1][2]){
          if (c[2][2] == 'X'){
                     return 0; //ha ganado
               }
               else{
                     return 1; // ha perdido
            }         
        }   
   }
   return 2;   
}
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines