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ú

Mensajes - leosansan

#691
Cita de: edr89 en  6 Junio 2013, 06:55 AM
........................................................
Estaba intentando con:
for(tab=n;tab>0;tab--)
        {
            printf("\t");
        }

pero queda mal, muy mal  :laugh:

Sniff, sniff. La verdad que queda pochito. Mejor se vería así:

Código (cpp) [Seleccionar]
           
                                1
                             1     1
                          1     2     1
                       1     3     3     1
                    1     4     6     4     1
                 1     5     8     8     5     1
              1     6    15    16    15     6     1
           1     7    18    30    30    18     7     1
        1     8    28    36    60    36    28     8     1
     1     9    32    84    72    72    84    32     9     1



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

int main()
{
    int i,j=1,k=1,tab,n=10; //i = renglones  j = elementos
    long int elemento;
    for (i = 0; i < n; i++)
        {
            for ( j = 1; j < n-i; j++)
            printf ("   ")  ;
            for (k = 0; k <= i; k++)
                printf ("%6d",(facto(i))/(facto(k)*(facto(i-k))));
            printf ("\n");
        }
}
int facto(long long int num)
{
   int i=num;
   long long fact=1;
   for(i=num;i>1;i--)
    {
        fact*=i;
    }
    return fact;
}


Saluditos! .... ..
#692
Cita de: mathias_vg en  5 Junio 2013, 21:18 PM
leosansan, eh estado tratando de seguir con el juego y hasta ahora he avanzado un poco aca abajo te cuelgo lo que puede hacer, a ver que tan bien esta o que me podes sugerir.

Nota en el juego fije la coordenada Y (dim) porque tengo que colocar la ficha en el lugar mas bajo posible.

Aguardo tus comentarios, saludos!!!


Lamento tener que corregir a quien te puso esta tarea ya que su nombre es "conecta 4", donde las fichas obligatoriamente "caen" al fondo, de ahí que se rellenen de esa manera. En cambio, en el "cuatro en ralla" se "escribe" en cualquier posición, de ahí que tanto amchacon como yo te hallamos dicho que eran dos los scanf, uno para cada coordenada. Pero en el conecta-4 efectivamente sólo hace falta uno ya que la ficha "cae" en la columna indicada por el scanf y se parará cuando tropiece con otra.

Te dejo en el código que te paso algunas sugerencias. Lamentablemente ya por hoy no tengo más tiempo. Por cierto, tienes mal una librería, te la dejo corregida. La stdlib sería para usar system y "limpiar la pantalla después de cada jugada:


Código (cpp) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
int main()
{

   char d;
   printf("\n\n\n     JUEGO CUATRO EN LINEA\n\n\n\n\n\n\n");
   printf("       Nueva partida (S/N)");
   scanf("%c",&d);   /*<==esto asi no sirve. Tienes que hacer un do-while*/
   /*para si es "s" jugar y si no salir*/
   int n=0,i=0,j=0,dim=0,resto=0,/*<<<<<esto es nuevo>>>>>*/jugador=1;
   printf("\n\n\n\nIngresa la dimension del tablero de juego:\n\n");
   scanf ("%d",&dim);
   char matriz[dim][dim];
   do
   {
       for (i=1;i<=dim;i++)
       {
           for (j=1;j<=dim;j++)
           {
               if ((matriz[i][j]!='X') && (matriz[i][j]!='O'))
                   printf("%c ",'.');
               else
                   printf ("%c ",'X');
           }
           printf("\n");
       }
       while (resto<=(dim*dim))
       {
        /*if ((resto%2)==0)*/
        if (jugador==1)/*el codigo es mas eficiente porque se
               ahorra dim*dim divisiones y calculo de restos*/
       {
        jugador++;
        printf("\nJuega JUGADOR 1: ");
        scanf (" %d",&n);
           matriz[dim][n]='O';
           printf ("%c\n",matriz[dim][n]);
           for (i=1;i<=dim;i++)
       {
           for (j=1;j<=dim;j++)
           {
               /*<==aqui tienes que revisar los if porque si la posicion*/
           /* esta ocupada por X o por O , entonces es matriz[dim-1][n]='O';
           es decir, sube, Tal como lo tienes los valores que repiten posicion
           borran a los anteriores y no sales nunca de la ultima linea*/
               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
       {
           jugador=1;
        printf("\nJuega JUGADOR 2: ");
           scanf (" %d",&n);
           matriz[dim][n]='X';
           printf ("%c\n",matriz[dim][n]);
           for (i=1;i<=dim;i++)
       {
           for (j=1;j<=dim;j++)
           {
               /*<==IDEM se superponen tal como esta*/
               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++;
       }

    }while (1);
   return 0;
   system("PAUSE");
}


Saluditos! .... ..
#693
Cita de: mathias_vg en  5 Junio 2013, 16:05 PM
Ok, espero tu respuesta. muchas gracias por tu tiempo leosansan. Saludos!


¡Pá tras ni pá coger impulso!, como diría un buen canarion.

Es como volver a las cavernas, menos mal que está la imagen del post anterior para comprobar que efectivamente compila, no así en Dev-C++.

No acabo de comprender, si de entender, los múltiples mensajes que "larga" tu compilador. En esencia creo que el problema lo presenta por la declaración de las variables globales y el uso de un parámetro, dim o dim_plus para dimensionar las matrices, ya que no son variables constantes, que es lo que supongo espera el compilador, así como la declaración de variables "en medio" del código, cosa no permitida en C89 y sí en C99, así como el uso que hago de arrays de longitud variable o arrays cuya dimensión no es una constante definida previamente sino que se "escanea" en medio del código.

En fin, que no soy un experto en Dev-C++,nací al mundo del C/C++ de  la mano del Code::Blocks, habiendo probado primero con el tuyo, Pelles C, Borland Builder, VisualStudio y algunos más y de todos ellos el que más me convenció para mis propósitos fue el Code::Blocks, con diferencia.

Espero que alguien entre quienes sigan el tema tenga más conocimientos de Dev-C++ y del lenguaje C que yo y pueda hacerlo rular en el dichoso Dev-C++.

Sorry, muchos sorry, la intención era buena, pero no pienso dejar mi Code::Blocks, en el que incluso puedo configurar lo para que acepte las novedades del C++11, por un compilador que no sé si ni tan siquiera llegó a adaptarse a las especificaciones del C99, más que nada por los años que hace que no se actualiza.

De todas formas siempre estoy abierto a aprender, cualquier sugerencia y/o lección magistral que me den será bienvenida, tanto de C como de Dev-C++.

Pero lo positivo es que tienes al menos un código por el que guiarte para tu tarea, trata de adaptarlo. Yo si fuera la adaptación para algo más nuevo me molestaría en hacerlo, pero como dije al principio "¡Pá tras ni pá coger impulso!".

Saluditos! .... ..
#694
Cita de: mathias_vg en  5 Junio 2013, 15:52 PM
Si uso DevC++, debido a que me piden que se entregue para que funcione con ese compilador. Como puedo hacer para que me funcione en DevC++?

Muchas Gracias

Estoy en un ordenador de prestado, pero me hará el loco e instalaré el Dev-C++ a  ver qué pasa. Tardaré unos minutitos.

Saluditos, otra vez! .... ..
#695
Sorry, cambia la linea:

Código (cpp) [Seleccionar]
void imprimir............;

y

void jugadores (int matriz [dim][dim], int dim, int jugador);




por la actual:

Código (cpp) [Seleccionar]
void dibujar_tablero(int matriz[dim_plus][dim_plus],int dim);

y

void jugadores (int matriz [dim_plus][dim_plus], int dim, int jugador)
{


Había puesto una versión anterior. Ya está corregido también en el post anterior. Y por cierto, guárdalo como .c no .cpp, ya que está en C y no en C++.

Yo uso Code::Blocks y no me "canta" ni warnings. ¿No usarás Dev-C++?


Saluditos! .... ..
#696
Cita de: mathias_vg en  5 Junio 2013, 13:54 PM
Muchas gracias leosansan, me ha sido de gran ayuda, pero cuando intento complilar el ultimo codigo me sale error cuando llamo al procedimiento imprimir_matriz; tampoco me dejan utilizar la el comando getchar  :-X


¿De qué código me estas hablando?. El mio no tiene ni lo uno ni lo otro.

Si es uno tuyo postealo para revisarlo, pero esta ves hazlo bien: picas en donde pone GeSHi y eliges C++ y en medio de las etiquetas que aparecen copias el código. Si no, es muy difícil de entender, toda vez que el código sin etiquetas no sale completo, como el original. No te olvides, es importante para los que queramos echarte una mano.


Saluditos! .... ..
#697
Cita de: leosansan en  5 Junio 2013, 01:04 AM
Una pequeñita ayudita que te dibuja el tablero y te va poniendo las X:


Ahora de pequeñita na´de na´. Para que te hagas una idea, el código que te paso rellena la matriz según el tamaño introducido, va colocando las fichas de los jugadores, teniendo en cuenta que no estén ya ocupadas y ...... ¡el tamaño de la consola se ajusta al tamaño de la matriz!.


Código (cpp) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

int dim=0,dim_plus=0,x=0,y=0, i=0,j=0,jugador =0;

void dibujar_tablero(int matriz[dim_plus][dim_plus],int dim);
void jugadores (int matriz [dim_plus][dim_plus], int dim, int jugador);

int main()
{
   char tamanyo_consola[80];
   do
   {
       puts ("\nIngresa la dimension del tablero de juego( 3-10):");
       if (scanf ("%d",&dim)==0)
       {
           while (getchar ()!='\n');
           puts ("\nOpción erronea.Vuelva a intentarlo:");
           dim=12;
       }
   }while (dim<3  || dim>10);
   dim_plus=dim+1;
   int matriz[dim_plus][dim_plus];
   for(i=0;i<=dim;i++)
       for(j=0;j<=dim;j++)
       {
           if (i==0  && j==0 )
               matriz[i][j]=0;
           else if (i==0 && j>0)
               matriz[i][j]=j;
           else if (j==0)
               matriz[i][j]=i;
           else
               matriz[i][j]=0;
       }
   int tam_x=0,tam_y=0;
   tam_x=6*dim+2; /* con estos valores puedes*/
   tam_y=dim+14; /*cambiar el tamanyo de la consola*/
   sprintf(tamanyo_consola, "MODE %d,%d", tam_x, tam_y);
   system ("pause");
   system ("cls");
   system(tamanyo_consola);
   do
   {
       dibujar_tablero( matriz, dim);
       jugadores ( matriz ,dim,jugador);
       jugador++;
       system ("cls");
       dibujar_tablero( matriz, dim);
       jugadores ( matriz ,dim,jugador);
       system ("cls");
       dibujar_tablero( matriz, dim);
       system ("cls");
       jugador=0;
   }while (1);
   return 0;
}

void dibujar_tablero(int matriz[dim_plus][dim_plus],int dim)
{
   for(i=0;i<=dim;i++){
       for(j=0;j<=dim;j++){
           if ( matriz[i][j]==11 )
               printf(" (X) ");
           else if ( matriz[i][j]==12 )
               printf (" (O) ");
           else if (i>=1 && j>=1)
               printf (" (-) ");
           else if (i==0 && j==0  )
               printf ("  ");
           else if (j==0  )
               printf (" %d",matriz[i][j]);
           else if (i==0 || j==0  )
               printf ("  %d  ",matriz[i][j]);
           else
               printf (" %d ",matriz[i][j]);
       }
       putchar ('\n');
   }
}
void jugadores (int matriz [dim_plus][dim_plus], int dim, int jugador)
{
       do
       {
           printf("\nJUGADOR %d. Haga su jugada.\nIntroduzca las coordenadas:",jugador+1);
           do
           {
               printf ("\nIngresa la coordenada X( 1-%d):",dim);
               if (scanf (" %d",&x)==0)
               {
                   while (getchar ()!='\n');
                   puts ("\nOpción erronea.Vuelva a intentarlo:");
                   x=dim;
               }
               else if (x<1  || x>dim)
                   puts ("Valor fuera de rango.");
           }while (x<1  || x>dim);
           do
           {
               printf ("Ingresa la coordenada Y( 1-%d):",dim);
               if (scanf (" %d",&y)==0)
               {
                   while (getchar ()!='\n');
                   puts ("\nOpción erronea.Vuelva a intentarlo:");
                   y=dim;
               }
               else if (y<1  || y>dim)
                   puts ("Valor fuera de rango.");
           }while (y<1  || y>dim);

           if (matriz[x][y]!=0)
               puts ("Posicion ocupada.\nIntroduzca nuevas coordenadas.");
       }while (matriz[x][y]!=0);
       system ("cls");
       if (jugador ==0)
           matriz[x][y]=11;
       else
           matriz[x][y]=12;
}


Cualquier duda, pregunta.

Y a ti te queda implementar la condición de cuando se gana. Espero ansioso tus aportaciones.


Saluditos! .... ..
P.D: ¡Y sin un solo goto!.
#698

Una pequeñita ayudita que te dibuja el tablero y te va poniendo las X:

Código (cpp) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int n=0,i=0,j=0,k=0,dim=0;
    puts ("Ingresa la dimension del tablero de juego:");
    scanf (" %d",&dim);
    char matriz[dim][dim];
    do
    {
        for (i=0;i<dim;i++)
        {
            for (j=0;j<dim;j++)
            {
                if (matriz[i][j]!='X' )
                    printf("%c ",'-');
                else
                    printf ("%c",'X');
            }
             putchar ('\n');
        }
        puts("\nHaga su jugada. Introduzca las coordenadas:");
        scanf (" %d",&k);
        scanf (" %d",&n);
        matriz[k][n]='X';
        printf ("%c\n",matriz[k][n]);
     }while (1);
    return 0;
}


Saluditos! .... ..
#699
Programación C/C++ / Re: Ensamblador y C
4 Junio 2013, 20:53 PM
Cita de: 0xDani en  4 Junio 2013, 20:21 PM
................................ lo dejo simplemente para quien lo vea.

Yo, por ejemplo. Gracias 0xDani por compartir conocimientos. ;-) ;-) ;-) ;-)

Saluditos! .... ..
#700

Una ligera mejora:



Código (cpp) [Seleccionar]
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <windows.h>

int main(){
   system("mode 110,40");
   float i=0,j=0,seno[100]={0},temp=0;
   int x=0,y=0,cont=0;
   for (i=0;i<=2*3.14165;i+=0.10)
   {
       x=(int)(i*15);
       y=(int)(15-sin (i)*15);
       gotoxy (x,y+5);
       printf ("*");
       gotoxy (x,20);
       printf ("-");
       gotoxy (0,y+5);
       printf ("|");
   }
   gotoxy (x,20);
       printf ("----> EJE OX");
   gotoxy (0,5);
       printf ("^ EJE OY");
   gotoxy (0,35);
   system ("pause");
   return 0;
}
int gotoxy(int x, int y)
{
  COORD coord;
  HANDLE h_stdout;
  coord.X = x;
  coord.Y = y;
  if ((h_stdout = GetStdHandle(STD_OUTPUT_HANDLE)) == INVALID_HANDLE_VALUE)
     return 0;
  if (SetConsoleCursorPosition(h_stdout, coord) == 0)
     return 0;
  return 1;
}


Saluditos! .... ..

P.D: Penita pena tienes que "estirar" a lo ancho la página  o hacer uso de la barra horizontal de desplazamiento para ver la imagen completa.Bueno, si estas interesado ejecuta el código que, como curiosidad, cambia automáticamente el tamaño de la consola para que se vea la curva entera  :o

P.D:P.D: Es León, no Leo querido colega amchacon .... y gracias por lo dicho por tí, pero no es para tanto, de veras.