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

#781
Cita de: Black Lotus en 21 Mayo 2013, 02:55 AM

Gracias funciona""""


Alucino de que sea así. Presupongo que trabajas con DeV-C++ o Borland y el gotoxy de la librería conio .... y yo no tengo ninguno. Me resultó una idea simple a primera vista y, como siempre, la Navaja de Ockham=«en igualdad de condiciones, la explicación más sencilla suele ser la correcta», se cumplió a rajatabla. Me alegra haber podido serte útil.

Saluditos!. ... ..
#782
Cita de: edr89 en 21 Mayo 2013, 01:08 AM
Asi es,el contenido seria contemporaneo y aplicado, ya decidirá uno si quiere trabajar con C o Delphi, Java, lo que sea. Poco a poco resuelvo las dudas de C pero poder llevar a la par C++ con las mismas instrucciones básicas y tipos de bucles, variables, arreglos... no veo el inconveniente o complejitud, en fin.


Respecto a lo segundo darte la razón sólo en parte, el tema de bucles, funciones y en parte el de variables y punteros son parecidos, pero C++ apenas profundizas es un mundo aparte. Sus nuevos tipos, clases  y librerías con sus múltiples nuevas  funciones ofrecen una "nueva"  visión a la hora de programar respecto de C. Cierto que algunas de las nuevas funciones de C++ se pueden programar en C "a mano", pero C++ va mucho más allá. Como dije, un mundo nuevo, no se limita  sólo a cambiar print y scanf por cout y cin.

Y respecto de temarios hay de todo en la viña del Señor. En la Superior de Ingenieros Industriales donde estudié ni daban programación, eso sí, pedían trabajos escritos en algún lenguaje pero normalmente era Fortran o lo que te  apeteciera, ya que lo daban como explicado y tú búscate la vida.

En cambio se hacía mucho incapie en los programas "reales" a utilizar, por mencionar los más usuales el SPSS en estadística, El Cypecad,Corel,  Autocad y acólitos para todas las asignaturas referidas a construcción y diseño y, como no, el Mathematica y Matlab para casi todo, desde cálculo a regulación automática y.......

En lo personal soy partidario de aprender paquetes de programas "de uso real" en la vida profesional. Otra cosa son las carreras de Informática y afines, entiéndase las Telecos, pero incluso ahí es fundamental y más práctico manejar muy bien el Matlab yel Simulink con los que puedes hacer "virgurerias" que en C llevaría mucho de llegar a dominar y el aprendizaje de multitud de librerías externas con mucha soltura además, con librerías de números grandes y gráficas, cosa que en Mathematica y Matlab son inmediatas, amén de sus posibilidades en cuanto a programación básica incluidas.

>>Como muestra un desarrollo de Fourier de una señal tan simple como un escalón sería un código "tormentoso en C/C++, primero obtener el desarrollo a mano y luego el uso en profundidad de alguna librería, con su anterior aprendizaje, gráfica, cosa que en Mahematica por ejemplo, y en Matlab algo parecido, ni hago a mano, por no hablar de la potencia de gráficos matemáticos, es decir reales, no para jueguitos:





y no hablo en profundidad de Autocad. SolidEdge, Cypecad etc, porque los doy por más que conocidos.

Vamos que C/C++ es fundamental en Ingenieras como lo puede ser el inglés, cuestión de tener cultura, pero su manejo en sentido profesional lo dejaría para los profesionales del sector.

Y si se trata de tener conocimientos generales no me conformaría con C/C++, yo en la actualidad soy partidario de entrar en el mundo de la programación con Python,luego C/C++ , siempre que esté enfocado a un lenguaje de uso genérico y no, por ejemplo orientado a la programación Web o al diseño gráfico ....ufff !!!!, como dije, todo un mundo.

Es sólo una opinión y ya sé que para gustos colores. Sólo trataba de poner cada cosa en su sitio.


Saluditos! .... ...
#783
Cita de: Black Lotus en 20 Mayo 2013, 22:42 PM
Hola a todos estoy haciendo una factura pero me estanque en una parte...
Es decir la primera la cantidad de producto lo ingreso asi: gotoxy(4,8);cin>>B;

y si hay otro producto tendria que escribirlo de esta forma pero de forma automatica:
gotoxy(4,9);cin>>B;  (EN "y" AUMENTARIA 1, ES DECIR QUE TENDRIA QUE IR EN UNA LINEA MÁS ABAJO)

Como hago eso dentro de un for... se que tiene que ir con un for o al menos eso pienso pero como va estructurado??
:
Citar

     for (i=0; i<can; i++)
     {
          gotoxy(4,8+i);cin>>B;

           gotoxy(18,8);cin>>pro;
           gotoxy(66,8);cin>>A;
       .................................................................
}

Saluditos!. ... ..
#784
Programación C/C++ / Re: c++
20 Mayo 2013, 20:31 PM
Cita de: JohnMcb en 19 Mayo 2013, 19:22 PM

Mi tablero se viene mostrando algo asi:
[ ][ ][ ][ ][ ][ ][ ][ ]
[ ][ ][ ][ ][ ][ ][ ][ ]
[ ][ ][ ][ ][ ][ ][ ][ ]
[ ][ ][ ][ ][ ][ ][ ][ ]
[ ][ ][ ][ ][ ][ ][ ][ ]
[ ][ ][ ][ ][ ][ ][ ][ ]
[ ][ ][ ][ ][ ][ ][ ][ ]
[ ][ ][ ][ ][ ][ ][ ][ ]
con ciertos datos que se me piden mostrar dentro de esas casillas, pero ahora necesito mostrar ese mismo vector en un tablero decente, es decir que las casillas sean a color tal cual como en un tablero de ajedrez (casillas intercaladas blanco y negro), pero necesito hacer esto en dev c++ y sin necesidad de instalar librerías adicionales, alguien sabe como hacerlo ?


A mí me salen estas tableros, como muestra de lo indicado en el post anterior:





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

int color (int n);
using namespace std;

int main(void)
{
   int i,j;
   for (i = 0; i < 16; i++){
       for (j = 0; j < 16; j++){
           if ((i+1+j+1)%2==0)
               color (/*7*/97);
           else
               color (/*112*/22);
           cout <<"[X"<<  "]";
       }
      cout <<endl;
   }
   color (7);
    return 0;
}
int color (int n)
{
       SetConsoleTextAttribute(GetStdHandle (STD_OUTPUT_HANDLE), n );
}


Espero te sea útil. Por cierto, lo que está desactivado con /* numero*/ es el de blanco y negro.

Saluditos! .... ...
#785
¡¡¡Ya puedes jugar!!!, tan solo tenías mal declaradas las dimensiones de la matriz tablero en los for. Te he incluido una pequeña variante por si entran un caracter no numérico no se quede en un bucle el programa:

Código (cpp) [Seleccionar]


#include <stdio.h>
#include <stdlib.h>

int juego();
int main()
{

int d,played=0,cont=0;
   while(d!=2)
   {   //system("cls");
cont=0;
printf("Conecta 4\n------\n");
printf("1)Jugar\n");
printf("2)Salir\n\n");
printf("\tJuegos jugados:%d\n", played);
   cont=scanf("%d", &d);
   if (cont==0){
           d=3;
           while(getchar()!='\n');
   }

                       //pide opción del menú.
    switch(d)
    {   case 1:
       juego();                //llama a la función juego.
       played++;              //el contador de juegos se incrementa.
   break;
   case 2:
   break;
   default:
       printf("\nError.. Solo elige 1 o 2...\n");

   break;
}
}
   return 0;

}

int juego()
{
   int tablero[6][7], i, j, won=0, turno=1, seleccion;
   for(i=0;i<6;i++)
       for(j=0;j<7;j++)
           tablero[i][j]=0;     //Pone todo vacio
   while(!won)
   {   system("cls");
       for(i=0;i<6;i++)
           printf(" %d\t", i+1);  //imprime la numeración de las columnas
       printf("\n");
       for(i=0;i<6;i++)
       {    for(j=0;j<7;j++)                    //recorre cada espacio del tablero
               if(tablero[j][i]==0)
                  printf("( )\t");            //imprimiendo la matriz, y segun lo que tenga
               else if(tablero[j][i]==1)
                  printf("(X)\t");            //pone un espacio, X, o O
               else
                   printf("(O)\t");
           printf("\n");
       }
       if(turno==1)
           printf("\nTurno de X.");
       else
           printf("\nTurno de O.");
       printf("En que columna tiraras?");
       scanf("%d", &seleccion);
       seleccion--;  //porque esta numerado desde el 1, y la compu cuenta desde el 0.
       if(tablero[seleccion][0]!=0)
           printf("\nError columna llena o fuera de rango\n");
       else
       {   for(i=0;i<6;i++)
               if(tablero[seleccion][i+1]!=0||i==5)
               {   tablero[seleccion][i]=turno;   //si el espacio que sigue esta lleno, o esta en el borde, lo ocupa.
                   i=6;
               }

           for(i=0;i<7;i++)
           {   for(j=0;j<6;j++)
               {   if(tablero[i][j]==1||tablero[i][j]==2)
                      {
                           if(tablero[i][j]==tablero[i][j+1]&&tablero[i][j]==tablero[i][j+2]&&tablero[i][j]==tablero[i][j+3])
                               won=1; //checa para la derecha

                           if(tablero[i][j]==tablero[i+1][j]&&tablero[i][j]==tablero[i+2][j]&&tablero[i][j]==tablero[i+3][j])
                               won=1;  //checa para abajo

                           if(tablero[i][j]==tablero[i+1][j+1]&&tablero[i][j]==tablero[i+2][j+2]&&tablero[i][j]==tablero[i+3][j+3])
                               won=1;//diagonal a derecha
                       if(tablero[i][j]==tablero[i+1][j-1]&&tablero[i][j]==tablero[i+2][j-2]&&tablero[i][j]==tablero[i+3][j-3])
                               won=1; //diag izquierda
                   }
               }
           }
           if(won==1)
           {   system("cls");

               for(i=0;i<7;i++)
                   printf(" %d\t", i+1);  //imprime la numeración de las columnas
               printf("\n");
               for(i=0;i<7;i++)
               {
                   for(j=0;j<6;j++)
                       if(tablero[j][i]==0)
                           printf("( )\t");
                       else if(tablero[j][i]==1)
                           printf("(X)\t");
                       else
                           printf("(O)\t");
                   printf("\n");
               }
               printf("Bien! gano ");
               if(turno==1)
                   printf("X\n");
               else
                   printf("O\n");
           }
           if(turno==1)
               turno=2;     //cambia los turnos
           else
               turno=1;

       }
   }
   fflush(stdin);
   getchar();

   return juego;
}


Ssaluditos!. ... ..

P.D: Sería interesante que desarrollaras una variante donde el "otro" jugador sea "la máquina". LLeva algo de desarrollo de I.A pero vale la pena el intentarlo.
#786
Si estaban puestos. Lo que ocurre que al no meter el código entre las etiquetas GeSHi de C++ no salen. Simplemente lo que pongo a continuación es el mismo código entre dichas etiquetas:


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

int juego();
int main()
{

int d=3, played=0;

   while(d!=2)
   {   system("cls");
printf("\tJuegos jugados:%d\n", played);
printf("Conecta 4\n------\n");
printf("1)Jugar\n");
printf("2)Salir\n\n");
   scanf("%d", &d);                //pide opción del menú.
    switch(d)
    {   case 1:
       juego();                //llama a la función juego.
       played++;              //el contador de juegos se incrementa.
   break;
   case 2:
   break;
   default:
       printf("\nError.. Solo elige 1 o 2...\n");

   break;
}
}
   return 0;

}

int juego()
{
   int tablero[6][7], i, j, won=0, turno=1, seleccion;
   for(i=0;i<7;i++)
       for(j=0;j<6;j++)
           tablero[i][j]=0;     //Pone todo vacio
   while(!won)
   {   system("cls");
       for(i=0;i<7;i++)
           printf(" %d\t", i+1);  //imprime la numeración de las columnas
       printf("\n");
       for(i=0;i<6;i++)
       {    for(j=0;j<7;j++)                    //recorre cada espacio del tablero
               if(tablero[j][i]==0)
                  printf("( )\t");            //imprimiendo la matriz, y segun lo que tenga
               else if(tablero[j][i]==1)
                  printf("(X)\t");            //pone un espacio, X, o O
               else
                   printf("(O)\t");
           printf("\n");
       }
       if(turno==1)
           printf("\nTurno de X.");
       else
           printf("\nTurno de O.");
       printf("En que columna tiraras?");
       scanf("%d", &seleccion);
       seleccion--;  //porque esta numerado desde el 1, y la compu cuenta desde el 0.
       if(tablero[seleccion][0]!=0)
           printf("\nError columna llena o fuera de rango\n");
       else
       {   for(i=0;i<6;i++)
               if(tablero[seleccion][i+1]!=0||i==5)
               {   tablero[seleccion][i]=turno;   //si el espacio que sigue esta lleno, o esta en el borde, lo ocupa.
                   i=6;
               }

           for(i=0;i<7;i++)
           {   for(j=0;j<6;j++)
               {   if(tablero[i][j]==1||tablero[i][j]==2)
                      {
                           if(tablero[i][j]==tablero[i][j+1]&&tablero[i][j]==tablero[i][j+2]&&tablero[i][j]==tablero[i][j+3])
                               won=1; //checa para la derecha

                           if(tablero[i][j]==tablero[i+1][j]&&tablero[i][j]==tablero[i+2][j]&&tablero[i][j]==tablero[i+3][j])
                               won=1;  //checa para abajo

                           if(tablero[i][j]==tablero[i+1][j+1]&&tablero[i][j]==tablero[i+2][j+2]&&tablero[i][j]==tablero[i+3][j+3])
                               won=1;//diagonal a derecha
                       if(tablero[i][j]==tablero[i+1][j-1]&&tablero[i][j]==tablero[i+2][j-2]&&tablero[i][j]==tablero[i+3][j-3])
                               won=1; //diag izquierda
                   }
               }
           }
           if(won==1)
           {   system("cls");

               for(i=0;i<7;i++)
                   printf(" %d\t", i+1);  //imprime la numeración de las columnas
               printf("\n");
               for(i=0;i<7;i++)
               {
                   for(j=0;j<6;j++)
                       if(tablero[j][i]==0)
                           printf("( )\t");
                       else if(tablero[j][i]==1)
                           printf("(X)\t");
                       else
                           printf("(O)\t");
                   printf("\n");
               }
               printf("Bien! gano ");
               if(turno==1)
                   printf("X\n");
               else
                   printf("O\n");
           }
           if(turno==1)
               turno=2;     //cambia los turnos
           else
               turno=1;

       }
   }
   fflush(stdin);
   getchar();

   return juego;
}



Saluditos!. .... ..
#787

Vuelve a colgar el código esta vez usando las etiquetas GeSHi ce C++, pegas el código en medio de las etiquetas que te salen, si no, no se entiende nada. Las matrices por ejemplo, tal como están, salen incompletas.

R
Te adelanto que tienes duplicada la librería stdlib, es lo mismo que cstdlib y la string, ya que estas en C++ deberías ponerla como cstring.

Saluditos!. ..... ..
#788
Cita de: edr89 en 19 Mayo 2013, 22:52 PM

Estuve buscando sin exito como evitar el bucle infinito cuando se teclea un caracter y no un numero, tengo varios archivos con esa falla, con un do-while lo soluciono no?

do
{
...
}while( (ch = getchar()) != '\n' );



Es la forma más corriente de hacerlo, aunque puede estar más elaborada con una variable cont que cuente las lecturas que hace scanf, que es lo que utilizo en el código que te pase junto con el mencionada while. Realmente es una forma de limpiar lo que se llama buffer o memoria intermedia por decirlo a lo breve.

Saluditos! ..... ...nuevamente!!!!


#789
Cita de: edr89 en 19 Mayo 2013, 22:33 PM


total_cal +=cal


Quiere decir que a la variable total_cal se le va a sumar la variable caloria?


total_cal -=cal

Va a restarle el valor de cal a total_cal?


Así es y lo mismo con * y /, es una forma como más "seria" o profesional de + -  * / etc  una cantidad a una variable, que siempre debe estar preinicilizada a cero, en general vamos.

Saluditos y me alegra haberte sido útil.
#790
Programación C/C++ / Re: Tablero ajedrez c++
19 Mayo 2013, 21:12 PM
Cita de: amchacon en 19 Mayo 2013, 20:46 PM
Aver si lo entiendo Leo, puedes colorear el fondo y escribir al mismo tiempo? Por ejemplo, poner una letra roja en un cuadro amarillo.

Si es así me la apunto.

Efectivamente es así:



Saluditos!. ..... ...