Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - mathias_vg

#1
Buenas tardes, estoy intentando hacer una tarea que consiste en varias funciones y estoy trancado con una de ellas, el tema es asi: tengo que crear una funcion que agregue nodos a un arbol, agrega versiones. el nodo padre es el 1, si agrego 1.1 va a la izquierda del 1, si agrego 2 va a la derecha. si agrego 2.1 va a la izq del 2.

EJ:                             1
                            1.1                       2
                   1.1.1       1.2            2.1       3
                                         2.1.1     2.2

la logre hacer con numeros enteros pero con versiones con puntos me complica la vida
Me pueden ayudar a implementar esta funcion?

muchas gracias.
#2
Hola estoy tratando de hacer una funcion que inserte nodo en una determinada posicion dada pero no he podido; tengo algunas fallas en el codigo y no se como solucionarlo

Espero me puedan ayudar,

les dejo el codigo

Código (cpp) [Seleccionar]
struct nodo{
    char *texto;
    struct nodo *siguientelinea;
};
typedef struct nodo *lineas;

struct listageneral{
    char *nombrearchivo;
    lineas primera;
};
typedef struct listageneral *Archivo;

TipoRet InsertarLinea(Archivo &a,char *linea, unsigned int nroLinea){
    if (a->primera == NULL)
    {
        lineas aux = new struct nodo;
        aux->texto = linea;
        aux->siguientelinea=a->primera;
        a->primera=aux;
    }
    else if ((a->primera!=NULL)&&(nroLinea==1))
    {
        lineas aux1 = new struct nodo;
        aux1->texto = linea;
        aux1->siguientelinea=a->primera;
        a->primera=aux1;
    }
    else if ((a->primera!=NULL)&&(nroLinea!=1))
    {
        Archivo p=NULL; // ver este caso

        int posicion = 2;
        while (posicion<nroLinea)
        {
            a->primera = a->primera->siguientelinea;
            posicion++;
        }

        lineas aux2 = new struct nodo;
        aux2->texto = linea;
        aux2->siguientelinea = a->primera;
        a->primera=aux2;
    }
    return OK;
#3
Buenas,

necesito ayuda con un trabajo que me mandaron a hacer, me pide lo siguiente;
que escriba un servidor y un cliente tcp en c. En el cliente se escribe una palabra y me devuelve la palabra con un cifrado de cesar.

No pretendo que me lo hagan ni mucho menos, el tema es que soy bastante novato programando y nunca vi el tema de los sockets en c.

agradezco su ayuda.
Saludos!!!
#4
GNU/Linux / Ayuda con un script en BASH
24 Septiembre 2014, 06:24 AM
Hola gente, necesito de su ayuda, es sobre un trabajo que tengo que hacer y hay uno de los ejercicios que no puedo con el, espero que me puedan dar una mano.

Escribir un script para rotar los logs del sistema, que se
encuentran en /var/log.
El scritp se llamará rotar_log.sh y leerá el archivo
$HOME/rotacion.conf. Este tiene la lista de los archivos a rotar,
junto con un parámetro (-z) opcional que indica si los logs
antiguos se guardan comprimidos o no.
Se deberán rotar los archivos mayores que 100 Kb.
Ejemplo de rotacion.conf:
messages -z
taillog
syslog -z

El script debe conservar 10 logs antiguos. Los logs deben ser
renombrados de acuerdo al siguiente criterio:
<archivo de log>.AAAAMMDD (Año, mes y día de la rotación).
Si hay más de 10 logs antiguos, se deberán borrar los más viejos.
Se asume que el archivo no tiene errores. Se deberá verificar si
los archivos existen.


Muchas gracias!
#5
Buenas!
Necesito construir un circuito combinacional que acepte como entrada un numero de 3 bits (binario) y me genere un binario de salida igual al cuadrado del numero de entrada.
Estoy desesperando ya he estado horas intentando y no lo logro construir!

Saludos y muchas gracias!!!
#6
Buenas!!!

Necesito hacer un circuito XNOR de 4 entradas y una salida pero tiene que ser solo con puertas NOR. Logre hacer el mismo con dos entradas pero con 4 se me complica,

Alguien que me ayude!!! por favor!
#7
Bases de Datos / Ayuda con MER urgentee!!!
13 Septiembre 2013, 14:20 PM
Buenas,

Me han pedido en mi clase de BASE DE DATOS, una tarea que realize un MER del siguiente problema y la verdad estoy un poco perdido, agradeceria mucho si alguien me puede dar una mano.


LETRA DEL PROBLEMA:

Se desea modelar la realidad correspondiente a una empresa que pretende tener control sobre las
compras que realiza y a qué proveedor lo hace.
La empresa tiene un conjunto de sucursales distribuidas en todo el Uruguay.
De cada sucursal se conoce la ubicación (dirección, nombre de la ciudad y nombre del
departamento dentro del Uruguay), un código que la identifica dentro de la empresa, y un
conjunto de teléfonos.
Cada sucursal tiene varios departamentos (técnico, de ventas, etc.). De cada departamento se
conoce el nombre, una descripción de su cometido y la cantidad de personas que trabajan en él.
El nombre identifica al departamento dentro de una sucursal pero no dentro de la empresa.
Cada departamento va registrando pedidos de artículos de acuerdo a sus necesidades. Luego, y a
partir de un conjunto de pedidos se arma una orden de compra.
De cada pedido se conoce un identificador único del pedido, el artículo que se pide, la cantidad
que se pide, la fecha en la que se realiza el pedido, la fecha en la que se espera contar con el
material y qué departamento realizó dicho pedido.
De cada artículo se conoce un código que lo identifica, su nombre y una descripción. De las
órdenes de compra se registra su identificador, una descripción breve de en qué consiste la
compra, la fecha en la que se arma, la fecha tope para la recepción de ofertas por parte de los
proveedores y los pedidos que la componen. Hay pedidos que nunca participan de una orden de
compra. La fecha en que se arma no debe ser anterior a las fechas de realización de los pedidos.
Las órdenes de compras puede ser de dos tipos, grandes o chicas. Las compras chicas pueden
ser urgentes o normales.
La empresa tiene además un registro de proveedores. De cada proveedor se conoce su RUT que
lo identifica, el nombre, la dirección, el teléfono, los rubros a los que se dedica además del
detalle de que artículos provee. El precio de venta de un artículo depende del proveedor.
A su vez, interesa registrar los proveedores que están relacionados comercialmente entre sí.
Para cada pedido de una orden de compra, interesa registrar que proveedores realizan una oferta
para satisfacer ese pedido (que es única), por qué precio unitario y la fecha en que presentaron la
oferta.
Los proveedores que mejor satisfacen el pedido de la orden de la compra resultan adjudicados
para proveer el mismo. Interesa llevar el registro de las adjudicaciones (o resoluciones de
compra) que se hacen. De cada adjudicación se conoce un identificador, la fecha en la que se
tomo la resolución y la orden de compra que resuelve, qué es única. Además, interesa registrar
para cada adjudicación, a cuáles proveedores se les adjudicó qué pedido (siempre de la misma
orden de compra) indicando a qué precio y qué cantidad. La fecha de adjudicación no debe ser
anterior a la fecha en la que se arma la orden de compra.
Se debe realizar un MER completo que modele la realidad antes descripta.
#8
Buenas, solo pretendo que me ayuden con el punto cuatro del menu ya que no me almacena los menu sino que solo me imprime los ultimos, es decir me borra los anteriores. Recurro a ustedes ya que mi profesor solamente dio 5 clases en todo el semestre y nos mato (al menos a mi) con este obligatorio. mi proposito es aprender a  superar esta dificultad con la que estoy trancado. les dejo el codigo un poco mas resumido.

Muchas gracias.


Código (cpp) [Seleccionar]
#include <stdlib.h>
#include <stdio.h>
#define DIM 16 /*Constante utilizada para definir la maxima dimension del tablero*/
//#define tam_string 40 /*Constante para la cantidad de digitos de los Nombres*/
//#define ced_string 8

struct partidas1{
        char nom_jug[40];
char ced_jug[8];
    }partidas1[500];
struct partidas2{
char nom_jug[40];
char ced_jug[8];
    }partidas2[500];
    int partida, aux2;
    struct partidas
{
  char nom_jug[40];
  char ced_jug[8];
};

struct partidas partidas[10];
   
char nom_jug[40];
char ced_jug[8];


/*PROCEDIMIENTOS Y FUNCIONES*/

void inicializar_tablero(char tablero[][DIM],int);
int juegan_O_(char tabla[][DIM],int,int);
int juegan_X_(char tablero[][DIM],int,int);
int cuatro_en_linea(char tablero[][DIM],int);
int limpiar(char nom_jug[]);


int inicia1 = 0;
int inicia2 = 0, jugar=1;
int main()
{
    char tablero[DIM][DIM];
    int x,opcion,victoria=1,nombre1,nombre2,contador=1,correcta=1,aux=1,sumador = 0;
    do
{
system("cls");
    printf("\n\n\n     JUEGO CUATRO EN LINEA\n\n\n\n\n");
    printf("  1) Ingresar datos del primer jugador\n\n");
    printf("  2) Ingresar datos del segundo jugador\n\n");
    printf("  3) Jugar\n\n");
    printf("  4) Listar todos los juegos realizados\n\n");
    printf("  5) Salir\n\n\n");
    if (contador%2==0)
    {
    printf("  Error: Antes de jugar debe ingresar los datos de los dos jugadores. \n\n\n");
    printf("  REINGRESE SU OPCION: ");
contador--;
    }
    if (correcta%2==0)
    {
    printf("  Opcion incorrecta \n\n\n");
    printf("  REINGRESE SU OPCION: ");
    correcta--;
    }
    if (aux%2==0)
    {
    printf("  No se han realizado juegos. \n\n\n");
    aux--;
    }
   
    scanf("%d",&opcion);
    system("cls");
    switch (opcion)
    {
    case 1:  /*OPCION 1 DEL MENU.*/
    {
    limpiar(nom_jug);
    limpiar(ced_jug);
    while(getchar() != '\n');
    printf("\n Ingrese su Nombre: ");
    do
    {
    scanf("%39[^\n]",partidas1[inicia1].nom_jug);
    if (partidas1[inicia1].nom_jug[0]=='\0')
    {
    printf(" ERROR\n");
    printf(" Ingrese nuevamente Nombre: ");
    }
else
{

for (nombre1=0;nombre1<40;nombre1++)
    {
    nom_jug[nombre1];
    }
}while(getchar() != '\n');
system("cls");
        }while(partidas1[inicia1].nom_jug[0]=='\0');
    printf("\n Ingrese su cedula: ");
    do
    {
    scanf("%8[^\n]",partidas1[inicia1].ced_jug);   
    if (partidas1[inicia1].ced_jug[0]=='\0')
    {
    printf(" ERROR\n");
    printf(" Ingrese nuevamente su cedula: ");
    }
else
{

for (nombre1=0;nombre1<8;nombre1++)
    {
    ced_jug[nombre1];
    }
        system("cls");
    printf("\n");
}while(getchar() != '\n');
        }while(partidas1[inicia1].ced_jug[0]=='\0');
        printf("\n    DATOS INGRESADOS\n");
        printf("\n\n   Nombre ingresado: %s",partidas1[inicia1].nom_jug);
    printf("\n\n   Cedula ingresada: %s",partidas1[inicia1].ced_jug);
    printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n presione ENTER para volver al menu");
    partidas1[inicia1+1]=partidas1[inicia1];
    jugar++;
    break;
     }
    case 2:  /*OPCION 2 DEL MENU*/
    {
limpiar(nom_jug);
    limpiar(ced_jug);
    while(getchar() != '\n');
    printf("\n Ingrese su Nombre: ");
    do
    {
    scanf("%39[^\n]",partidas2[inicia2].nom_jug);
    if (partidas2[inicia2].nom_jug[0]=='\0')
    {
    printf(" ERROR\n");
    printf(" Ingrese nuevamente Nombre: ");
    }
else
{                       

for (nombre2=0;nombre2<40;nombre2++)
    {
    nom_jug[nombre2];
    }
}while(getchar() != '\n');
system("cls");
        }while(partidas2[inicia2].nom_jug[0]=='\0');
    printf("\n Ingrese su cedula: ");
    do
    {
    scanf("%8[^\n]",partidas2[inicia2].ced_jug);   
do

    if (partidas2[inicia2].ced_jug[0]=='\0')
    {
    printf(" ERROR\n");
    printf(" Ingrese nuevamente su cedula: ");
    }
else
{

for (nombre2=0;nombre2<8;nombre2++)
    {
    ced_jug[nombre2];
    }
    system("cls");
    printf("\n");
}while(getchar() != '\n');
        }while(partidas2[inicia2].ced_jug[0]=='\0');
       
        printf("\n    DATOS INGRESADOS\n");
        printf("\n\n   Nombre ingresado: %s",partidas2[inicia2].nom_jug);
    printf("\n\n   Cedula ingresada: %s",partidas2[inicia2].ced_jug);
    printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n presione ENTER para volver al menu");
    partidas2[inicia2+1]=partidas2[inicia2];
    jugar++;
    break;
    }
    case 3: /*OPCION 3 DEL MENU*/
    {
    if (jugar<3)
    {
    contador++;

    }
    else 
    {
        cuatro_en_linea(tablero,opcion);
       
                   
        sumador++;
        }
        break;
    }
    case 4: /*OPCION 4 DEL MENU*/
    {
    if (sumador<1)
    {
    aux++;
    }
    else

    {
             partida=1;
             aux2=0; 
             for(partida;partida<sumador+1;partida++){
             printf("Partida %d\n",partida);
             printf("\n");
             printf("Jugador 1: %s\n",partidas1[aux2].nom_jug);
             printf("Cedula:    %s\n",partidas1[aux2].ced_jug);
             printf("Jugador 2: %s\n",partidas2[aux2].nom_jug);
             printf("Cedula:    %s\n",partidas2[aux2].ced_jug);
             aux2++;
             printf("\n");
}
    }
    system("PAUSE");
    break;
    }
    case 5: /*OPCION 5 DEL MENU*/
    {
    return printf("\n\n  SALIENDO\n\n");
    break;
    default:
    correcta++;
    break;
    }
    }while (getchar()!='\n');
    }while (victoria==1);
}
#9
Buenas como va,

Mi problema es el siguiente. en el juego conecta 4 me piden que haga un menu donde una de las opciones es que registre todos los juegos realizados (Nombre y cedula de cada jugador). El problema es que a medida que voy eligiendo un jugador nuevo me borra el anterior. Me pueden ayudar con esto?  Les dejo el codigo

Código (cpp) [Seleccionar]


    //* JUEGO CONECTA 4*//



/*Librerias utilizadas*/
#include <stdlib.h>
#include <stdio.h>
#define DIM 16 /*Constante utilizada para definir la maxima dimension del tablero*/


struct partidas1{
        char nom_jug[40];
char ced_jug[8];
    }partidas1[500];
struct partidas2{
char nom_jug[40];
char ced_jug[8];
    }partidas2[500];
    struct ganadores{
        char jganador;
    }ganadores[1000];
    int partida, aux2,aux3;
   
char nom_jug[40];
char ced_jug[8];


/*PROCEDIMIENTOS Y FUNCIONES*/

void inicializar_tablero(char tablero[][DIM],int);
int juegan_O_(char tabla[][DIM],int,int);
int juegan_X_(char tablero[][DIM],int,int);
int cuatro_en_linea(char tablero[][DIM],int);
int limpiar(char nom_jug[]);


int inicia1 = 0;
int inicia2 = 0, jugar=1;
int main()
{
    char tablero[DIM][DIM];
    int x,opcion,victoria=1,nombre1,nombre2,contador=1,correcta=1,aux=1,sumador = 0;
    do
{
system("cls");
    printf("\n\n\n     JUEGO CUATRO EN LINEA\n\n\n\n\n");
    printf("  1) Ingresar datos del primer jugador\n\n");
    printf("  2) Ingresar datos del segundo jugador\n\n");
    printf("  3) Jugar\n\n");
    printf("  4) Listar todos los juegos realizados\n\n");
    printf("  5) Salir\n\n\n");
    if (contador%2==0)
    {
    printf("  Error: Antes de jugar debe ingresar los datos de los dos jugadores. \n\n\n");
    printf("  REINGRESE SU OPCION: ");
contador--;
    }
    if (correcta%2==0)
    {
    printf("  Opcion incorrecta \n\n\n");
    printf("  REINGRESE SU OPCION: ");
    correcta--;
    }
    if (aux%2==0)
    {
    printf("  No se han realizado juegos. \n\n\n");
    aux--;
    }
   
    scanf("%d",&opcion);
    system("cls");
    switch (opcion)
    {
    case 1:  /*OPCION 1 DEL MENU*/
    {
    limpiar(nom_jug);
    limpiar(ced_jug);
    while(getchar() != '\n');
    printf("\n Ingrese su Nombre: ");
    do
    {
    scanf("%39[^\n]",partidas1[inicia1].nom_jug);
    if (partidas1[inicia1].nom_jug[0]=='\0')
    {
    printf(" ERROR\n");
    printf(" Ingrese nuevamente Nombre: ");
    }
else
{

for (nombre1=0;nombre1<40;nombre1++)
    {
    nom_jug[nombre1];
    }
}while(getchar() != '\n');
system("cls");
        }while(partidas1[inicia1].nom_jug[0]=='\0');
    printf("\n Ingrese su cedula: ");
    do
    {
    scanf("%8[^\n]",partidas1[inicia1].ced_jug);   
    if (partidas1[inicia1].ced_jug[0]=='\0')
    {
    printf(" ERROR\n");
    printf(" Ingrese nuevamente su cedula: ");
    }
else
{

for (nombre1=0;nombre1<8;nombre1++)
    {
    ced_jug[nombre1];
    }
        system("cls");
    printf("\n");
}while(getchar() != '\n');
        }while(partidas1[inicia1].ced_jug[0]=='\0');
        printf("\n    DATOS INGRESADOS\n");
        printf("\n\n   Nombre ingresado: %s",partidas1[inicia1].nom_jug);
    printf("\n\n   Cedula ingresada: %s",partidas1[inicia1].ced_jug);
    printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n presione ENTER para volver al menu");
    partidas1[inicia1+1]=partidas1[inicia1];
    jugar++;
    break;
     }
    case 2:  /*OPCION 2 DEL MENU*/
    {
limpiar(nom_jug);
    limpiar(ced_jug);
    while(getchar() != '\n');
    printf("\n Ingrese su Nombre: ");
    do
    {
    scanf("%39[^\n]",partidas2[inicia2].nom_jug);
    if (partidas2[inicia2].nom_jug[0]=='\0')
    {
    printf(" ERROR\n");
    printf(" Ingrese nuevamente Nombre: ");
    }
else
{                       

for (nombre2=0;nombre2<40;nombre2++)
    {
    nom_jug[nombre2];
    }
}while(getchar() != '\n');
system("cls");
        }while(partidas2[inicia2].nom_jug[0]=='\0');
    printf("\n Ingrese su cedula: ");
    do
    {
    scanf("%8[^\n]",partidas2[inicia2].ced_jug);   
do

    if (partidas2[inicia2].ced_jug[0]=='\0')
    {
    printf(" ERROR\n");
    printf(" Ingrese nuevamente su cedula: ");
    }
else
{

for (nombre2=0;nombre2<8;nombre2++)
    {
    ced_jug[nombre2];
    }
    system("cls");
    printf("\n");
}while(getchar() != '\n');
        }while(partidas2[inicia2].ced_jug[0]=='\0');
       
        printf("\n    DATOS INGRESADOS\n");
        printf("\n\n   Nombre ingresado: %s",partidas2[inicia2].nom_jug);
    printf("\n\n   Cedula ingresada: %s",partidas2[inicia2].ced_jug);
    printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n presione ENTER para volver al menu");
    partidas2[inicia2+1]=partidas2[inicia2];
    jugar++;
    break;
    }
    case 3: /*OPCION 3 DEL MENU*/
    {
    if (jugar<3)
    {
    contador++;

    }
    else 
    {
        cuatro_en_linea(tablero,opcion);
       
                   
        sumador++;
        }
        break;
    }
    case 4: /*OPCION 4 DEL MENU*/
    {
    if (sumador<1)
    {
    aux++;
    }
    else

    {
             partida=1;
             aux2=0;
aux3=0;   
             for(partida;partida<sumador+1;partida++){
             printf("Partida %d\n",partida);
             printf("\n");
             printf("Jugador 1: %s\n",partidas1[inicia1].nom_jug);
             printf("Cedula:    %s\n",partidas1[inicia1].ced_jug);
             printf("Jugador 2: %s\n",partidas2[inicia2].nom_jug);
             printf("Cedula:    %s\n",partidas2[inicia2].ced_jug);
             aux2++;
             printf("\n");
}
    }
    system("PAUSE");
    break;
    }
    case 5: /*OPCION 5 DEL MENU*/
    {
    return printf("\n\n  SALIENDO\n\n");
    break;
    default:
    correcta++;
    break;
    }
    }while (getchar()!='\n');
    }while (victoria==1);
}
int cuatro_en_linea(char tablero[DIM][DIM],int x)
{
   
    /*Defino distintas variables que voy a utilizar a lo largo del programa*/
    int n=0,i,j,resto=1,k=0,jugador,partida,victoria=0;
    char d;
    printf("\n\nIngresa la dimension del tablero de juego(4-15): ");
    /*Analizamos si la dimension del tablero ingresada es valida*/
    do
    {
        scanf (" %d",&x);
        system("cls");
        if (x<4 || x>15)
        {
            printf("\nOpcion no valida. Ingresa la dimension (4-15): ");
        }   while (getchar()!='\n');
    } while (x<4 || x>15);
    system("cls");
    /*Elegimos judagor*/
    printf("\n ELIJA JUGADOR\n\n\n");
    printf("\n\n  1) JUGADOR 1 (X)\n");
    printf("\n\n  2) JUGADOR 2 (O)\n");
    do
    {
    scanf("%d",&jugador);
    if ((jugador!=1) && (jugador!=2))
    {
        printf("\n Error: Los jugadores posibles son 1 y 2 ");
    }
    }while ((getchar()!='\n') || ((jugador!=1) && (jugador!=2)));
    do
    {
        system("cls");
        printf("\n\n\n\n");
        inicializar_tablero(tablero,x);
        while ((resto<=(x*x)) && (victoria!=1))
        {
            if (jugador==1)
            {
                jugador++;
               juegan_X_(tablero,x,n);
               /* Evaluo si el jugador 1 (X) gana*/
               
               for (i=1;i<=x;i++)
           {
    for (j=1;j<=x;j++)
{
                        /*Verifico si hay cuatro en linea horizontal para Jugador 1*/
if ((tablero[i][j]=='X') && ((tablero[i][j+1])=='X') && ((tablero[i][j+2])=='X') && ((tablero[i][j+3])=='X'))
{
victoria = 1;
}       
/*Verifico si hay cuatro en linea vertical para Jugador 1*/
else if ((tablero[i][j]=='X') && ((tablero[i+1][j])=='X') && ((tablero[i+2][j])=='X') && ((tablero[i+3][j])=='X'))
{
victoria = 1;
}
/*Verifico si hay cuatro en linea en diagonal ascendiente para Jugador 1*/
else if ((tablero[i][j]=='X') && ((tablero[i+1][j-1])=='X') && ((tablero[i+2][j-2])=='X') && ((tablero[i+3][j-3])=='X'))
{
victoria = 1;
}
/*Verifico si hay cuatro en linea en diagonal descendiente para Jugador 1*/
else if ((tablero[i][j]=='X') && ((tablero[i+1][j+1])=='X') && ((tablero[i+2][j+2])=='X') && ((tablero[i+3][j+3])=='X'))
{
victoria = 1;
}
}
   }
               if (victoria == 1)
               {
                printf("\n\n FELICITACIONES %s",partidas1[inicia1].nom_jug);
                printf("!!!\n\n  Has ganado la partida.\n\n\n\n\n\n");
                if(partidas1[inicia1].nom_jug[40]==partidas1[inicia1+1].nom_jug[40]){
                        partidas1[inicia1+2]=partidas1[inicia1+1];
                        inicia1++;
                    }
               }
               else
               {
                resto++;
               }
            }
            else if (jugador == 2)
            {
                jugador--;
juegan_O_(tablero,x,n);
/* Evaluo si el jugador 2 (O) gana*/

for (i=1;i<=x;i++)
           {
    for (j=1;j<=x;j++)
{
                        /*Verifico si hay cuatro en linea horizontal para Jugador 1*/
if ((tablero[i][j]=='O') && ((tablero[i][j+1])=='O') && ((tablero[i][j+2])=='O') && ((tablero[i][j+3])=='O'))
{
victoria = 1;
}
/*Verifico si hay cuatro en linea vertical para Jugador 1*/
else if ((tablero[i][j]=='O') && ((tablero[i+1][j])=='O') && ((tablero[i+2][j])=='O') && ((tablero[i+3][j])=='O'))
{
victoria = 1;
}
/*Verifico si hay cuatro en linea en diagonal ascendiente para Jugador 2*/
else if ((tablero[i][j]=='O') && ((tablero[i+1][j-1])=='O') && ((tablero[i+2][j-2])=='O') && ((tablero[i+3][j-3])=='O'))
{
victoria = 1;
}
/*Verifico si hay cuatro en linea en diagonal descendiente para Jugador 2*/
else if ((tablero[i][j]=='O') && ((tablero[i+1][j+1])=='O') && ((tablero[i+2][j+2])=='O') && ((tablero[i+3][j+3])=='O'))
{
victoria = 1;
}
}
   }
               if (victoria == 1)
               {
                printf("\n\n FELICITACIONES %s",partidas2[inicia2].nom_jug);
                printf("!!!\n\n  Has ganado la partida.\n\n\n\n\n\n");
                if(partidas2[inicia2].nom_jug[40]==partidas2[inicia2+1].nom_jug[40]){
                        partidas2[inicia2+2]=partidas2[inicia2+1];
                        inicia2++;
                    }
               }
               else
               {   
                  resto++;
               }
            }
           
            /*Si el tablero se lleno de fichas y no hay cuatro en linea
            el partido termina en empate*/
           
            if (resto > (x*x) && (victoria!=1))
        {
          printf("\n\n EMPATE\n\n");
            }
        }
    }while ((resto<=(x*x)) && (victoria!=1));
    system("PAUSE");
    resto = 1;
    victoria = 0;
    system("cls");
    inicializar_tablero(tablero,x);
    system("cls");
}
/* Procedimiento para imprimir el tablero inicial*/

void inicializar_tablero(char tablero[DIM][DIM],int x)
{
int i,j;
int contador = 1;
for (i=1; i<=x; i++)
{
for (j=1;j<=x; j++)
{
            printf("  ");
printf(" %c",tablero[i][j]='.');
}
printf("\n\n");

}
for (i=1;i<=x;i++)
{
        printf("   %d",contador);
        contador++;
    }
    printf("\n");
}
/*Funcion para hacer jugada para el jugador 1*/

int juegan_X_(char tablero[DIM][DIM],int x,int n)
{
int i,j,k,contador=1;
do
    {
        printf("\n\n Juega %s: \n",partidas1[inicia1].nom_jug);
                    scanf ("%d",&n);
        if (n<1 || n>x)
        {
            printf("Error: las columnas posibles son de 1 a %d",x);
            while (getchar()!='\n');
        }   
else if (tablero[1][n]!='.')
{
printf("\nError: la columna ya esta llena.\n ");
      }
    }while((n<1 || n>x) || (tablero[1][n]!='.'));
for (k=x;k>=1;k--)
    {
            if (tablero[k][n]!='.')
            {
                continue;
            }
            else
            {
                tablero[k][n]='X';
                break;
            }
    }
       system("cls"); 
   printf("\n Ultima jugada X: Columna %d\n",n);     
    printf("\n\n");
    for (i=1;i<=x;i++)
    {
        for (j=1;j<=x;j++)
        {
            printf("  ");
            printf (" %c",tablero[i][j]);
           
        }
        printf("\n\n");
    }
    for (i=1;i<=x;i++)
{
        printf("   %d",contador);
        contador++;
    }
    printf("\n");
}
/*Funcion para hacer jugada para el jugador 2*/

int juegan_O_(char tablero[DIM][DIM],int x,int n)
{
int i,j,k,contador=1;
do
    {
        printf("\n\n Juega %s: ",partidas2[inicia2].nom_jug);
                    scanf ("%d",&n);
        if (n<1 || n>x)
        {
            printf("Error: las columnas posibles son de 1 a %d",x);
            while (getchar()!='\n');
        }   
else if (tablero[1][n]!='.')
{
printf("\nError: la columna ya esta llena.\n ");
      }
    }while((n<1 || n>x) || (tablero[1][n]!='.'));
for (k=x;k>=1;k--)
    {
            if (tablero[k][n]!='.')
            {
                continue;
            }
            else
            {
                tablero[k][n]='O';
                break;
            }
    }
    system("cls");     
printf("\n Ultima jugada O: Columna %d\n",n);   
    printf("\n\n");
    for (i=1;i<=x;i++)
    {
        for (j=1;j<=x;j++)
        {
            printf("  ");
            printf (" %c",tablero[i][j]);
           
        }
        printf("\n\n");
    }
    for (i=1;i<=x;i++)
{
        printf("   %d",contador);
        contador++;
    }
    printf("\n");
}
int limpiar(char nom_jug[40])
{

int t;
for (t=0; t<40; t++)
    {
    nom_jug[t]='\0';
    }
}
#10
Buenas que tal!!!
Les cuento realize un codigo para poder ingresar algunos datos pero cuando ingreso algo que tenga dos palabras separadas por un espacio solo me toma la primera, es decir no me toma el espacio como caracter. Necesito si me pueden ayudar a corregir el codigo, y asi poder imprimir dos palabras por un espacio.

Desde ya muchas gracias!


Código (cpp) [Seleccionar]
#include <stdio.h>
#define tam_string 20

main()
{
char arre[tam_string];
int t;

for (t=0; t<=tam_string; t++)
    {
    arre[t]=32;
    }
   
printf("ingrese: ");
scanf("%s",arre);

    for(t=0; t<tam_string; t++)
        {
        printf("%c",arre[t]);
        }
   
}
#11
Programación C/C++ / Ayuda
6 Junio 2013, 21:18 PM
leosansan como estas?

Eh estado tratando de solucionar los problemas que me marcaste, mas precisamente que me imprima hacia arriba las jugadas pero no lo eh lo grado me podrias decir en que estoy fallando?

Cuelgo el codigo a continuacion

Muchas gracias


#include <stdio.h>
#include <stdlib.h>
int main()
{
   
    char d;
    bool termino = false;
    int n=0,i=0,j=0,dim1=0,dim2=0,resto=1,contador=1;
    printf("\n\n\n     JUEGO CUATRO EN LINEA\n\n\n\n\n\n\n");
    printf("       Nueva partida (S/N)  ");
    scanf("%c",&d);
    printf("\n");
    printf("       JUGADOR 1  \n");
    printf("       JUGADOR 2    ");
    switch (d)
    {
        case 'N':case 'n':
        termino = true;
        break;
         default: printf("\n\nError");
        break;
        case 'S': case's':
    printf("\n\n\n\nIngresa la dimension del tablero de juego:\n\n");
    scanf (" \n%d",&dim2);
    dim1 = dim2;
    char matriz[dim1][dim2];
    do
    {
        for (i=1;i<=dim1;i++)
        {
            for (j=1;j<=dim2;j++)
            {
                if ((matriz[i][j]!='X') && (matriz[i][j]!='O'))
                {
                    printf("%c ",'.');
                }
                else
                {
                    printf ("%c ",'X');
                }
            }
            printf("\n");
        }
        while (resto<=(dim2*dim2))
        {
        if ((resto%2)==0)
        {
        printf("\nJuega JUGADOR 1: ");
        scanf (" %d",&n);
            matriz[dim1][n]='O';
            printf ("%c\n",matriz[dim1][n]);
            for (i=1;i<=dim1;i++)
            {
            for (j=1;j<=dim2;j++)
            {
                  if ((matriz[i][j]=='X') || (matriz[i][j]=='O'))
                {
                   matriz[dim1-1][n]='O';   /* corregir */
                }
                if ((matriz[i][j]!='X') && (matriz[i][j]!='O'))
                {
                    printf("%c ",'.');
                }
                else
                {
                    if ((matriz[i][j]!='X') && (matriz[i][j]!='.'))
                    {
printf ("%c ",'O');
                    }
else
{
         printf ("%c ",'X');
                    }
                }
            }
            printf("\n");
        }
    }
        else
        {
        printf("\nJuega JUGADOR 2: ");
            scanf (" %d",&n);
            matriz[dim1][n]='X';
            printf ("%c\n",matriz[dim1][n]);
            for (i=1;i<=dim1;i++)
        {
            for (j=1;j<=dim2;j++)
            {
                 if ((matriz[i][j]=='X') || (matriz[i][j]=='O'))
                {
                   matriz[dim1-1][n]='X';   /* corregir */
                }
                if ((matriz[i][j]!='X') && (matriz[i][j]!='O'))
                {
                    printf("%c ",'.');
                }
                else
                {
                if ((matriz[i][j]!='X') && (matriz[i][j]!='.'))
                {
printf ("%c ",'O');
                }
else
{
     printf ("%c ",'X');
                    }
                }
                   
            }
            printf("\n");
        }
        }
        resto++;
        }
        printf("EMPATE\n\n");
        system("PAUSE");
     }while (1);
    return 0;
    break;
       
    }
    while (!termino);
}

#12
Buenas tardes soy nuevo en el foro y recien me estoy iniciando en el tema de la programacion, estoy intentando hacer el juego 4 en linea pero ando bastante trancado, elijo la dimension de mi tablero y muestro el mismo sin problemas pero cuando hago la primer jugada ya me muestra cualquier cosa.
Les dejo el codigo abajo para ver si me pueden ayudar.


Desde ya, muchas gracias.


Estoy compilando con DevC++


Codigo:

#include <stdio.h>
main()
{
   // Elejimos la dimension del tablero
   int n,k;
   printf("Ingrese la dimension del tablero de juego: ");
   scanf("%d",&n);
   char matriz[n][n];
   int i,j;

   // Mostramos el tablero inicial
   for (i=0;i<n;i++)
    {
       for (j=0;j<n;j++)
        {
           printf("%c ",matriz[j]='-');
         }
printf("\n");
    }
    printf("Haga su jugada: ");
    scanf("%d",&k);
    matriz[k][n]='X';
    printf("%c",matriz[k][n]+matriz[j]);
}