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;
}
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;
}