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 - amchacon

#521
Cita de: do-while en 23 Agosto 2013, 09:40 AM
Eso es. Aunque la cantidad de datos almacenados en la lista esté lejos del límite de la lista, tienes que tener en cuenta que si estás trabajando con un sistema de 32 bits, la cantidad máxima de RAM de que dispone tu programa son 4GB (2^32 bytes)
Un programa de 32 bits solo puede dirrecionar 2 gb. Supongo que lo estará haciendo en 64 bits para aprovechar toda la memoria.

Mi consejo esque hagas un vector de listas:

Código (cpp) [Seleccionar]
vector<list<Planetas> >

También puedes plantearte el algoritmo y considerar si de verdad necesitas tener todo en la ram.
#522
Programación C/C++ / Re: Libreria C++
22 Agosto 2013, 21:08 PM
http://www.cplusplus.com/reference/

Librerías estándares de C++ y la versión remodelada de las librerías ANSI de C.
#523
Programación C/C++ / Re: If en macros ?
20 Agosto 2013, 12:27 PM
Una macro no devuelve nada.

¿Usas C++? Si es así, quizas te interese usar mejor funciones inline con sobrecarga de argumentos:

Código (cpp) [Seleccionar]
inline void Ejemplo(float argumento)
{
  // blablabla...
}

inline void Ejemplo(int argumento)
{
  // blablabla...
}
#524
Ofuscar/cifrar el código es una buena opción.

Lo mejor esque aprendas Ingeniería Inversa. La mejor manera de luchar contra un enemigo es conociéndolo primero.
#525
break/continue representan saltos, pero son saltos estructurados y relativamente claros. Su mala fama se debe a que pongas un break donde no debes y se salte el bucle creando errores extraños. Eso hace que su abuso sea un gran problema, como programador debes decidir si queda claro o confuso su uso en el contexto actual. Como regla general, suelo poner un solo break/continue por bucle y intento que sea al principio, porque se ven más explícitos.

En el código que he propuesto, el uso de break me permite ahorrarme el uso de una variable bandera y se ve bastante claro. Por lo que lo considero adecuado.

Los continue me parecen bastante importantes, imaginate que estas usando un for anidado:

Código (cpp) [Seleccionar]
for (short i = 0; i < 100;i++)
  for (short j = 0; j < 100;j++)
  {
       // Codigo...
  }


Y quieres evitar que se haga una iteracion en la cual i = j. Podrías poner algo tal que asi:

Código (cpp) [Seleccionar]
for (short i = 0; i < 100;i++)
  for (short j = 0; j < 100;j++)
  {
       if (i != j)
       {
           // Codigo...
       }    
  }


Pero eso implica más llaves y más bloques de codigo. El uso de continue te permite saltarse la iteracion de una forma bastante explícita y clara:

Código (cpp) [Seleccionar]
for (short i = 0; i < 100;i++)
  for (short j = 0; j < 100;j++)
  {
       if (i == j) continue;

       // Codigo...
  }


Cita de: Alien-Z en 20 Agosto 2013, 10:30 AMlos profesores nos prohibían estas instrucciones debido a que utilizar un break/continue es equivalante a la instrucción goto: estás "saltando" desde un punto del bucle a otro modificando el curso de ejecución del programa.
Ojo con ese argumento, las llamadas a función también son saltos de ejecución del programa.
#526
Cita de: m@o_614 en 20 Agosto 2013, 06:00 AM
aqui tengo algunas mejoras que le hice al codigo, aunque cuando le ingreso un numero romano cualquiera como: XVI, me imprime error!no es numero romano y no tengo idea de por que, ya van varias veces que lo checo
fgets coge también el retorno de carro en la cadena. Por eso puse != '\n en mi código.

Quizás lo más correcto sería:

*ptr != '\n' && *ptr!='\0'

Porque también puede pasar que no coja la cadena entera al ser muy larga, si no coje la cadena entera tampoco cogerá el retorno de carro.

Cita de: Alien-Z en 19 Agosto 2013, 21:58 PMEl ejemplo de amchacon es genial para guiarte en tu código pero me parece que se la ha pasado indicar que solo es para que lo uses como esquema porque no se deben utilizar las instrucciones break/continue para modificar el curso de una iteración en los bucles.
Eso ya depende del profesor, pero break/continue son sentencias totalmente válidas en la vida real.

Generalmente suelen dejar códigos más claros que hacerlas con ellas.
#527
No, seria un bucle anidado.

Te lo hago con fors que me gustan más:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define TAM 7

int main()
{
   int i,j;
   char romano[TAM],letras[]={"IVXLCM"};
   printf("Dame el primer numero: ");
   fgets(romano,TAM,stdin);

   for (i = 0; romano[i] != '\n';i++)
   {
       for (j = 0;letras[j];j++)
       {
           if (romano[i] == letras[j]) break;
       }

       if (!letras[j]) { printf("Error! No es un numero romano: %c \n",romano[i],i);}
   }

   return 0;
}
#528
Ese if no es correcto, no puedes intercalar condiciones con una ,.

Puedes crearte un array con todas las letras del alfabeto romano y recorrerlo.
#529
Se guarda en la ruta que le metas en el scanf...

Si no le pones ruta y solo le introduces el nombre, lo guarda en la misma carpeta que el ejecutable.
#530
C++ es el sucesor lógico de este, y aunque no lo orientes a objetos, tiene muchísimas más ventajas que su antecesor (entre ellas, la magnífica librería estándar, las referencias, las sobrecargas de funciones/operaciones...). Es mucho más potente y eficaz que C, aunque tiene un mayor nivel de abstracción, lo que hace que sea de más alto nivel que este.

Y por supuesto, cuando tengas un buen con C++. Podrías empezar con alguna librería multimedia (yo recomiendo SFML) y hacer algun juego de estos sencillos (Snake, Matamarcianos, Pong...).

Cuando oigo hablar de Java me da alergia, es una copia de C++ a la que le han truncado muchas cosas (ni punteros, ni operadores sobrecargadas, ni herencia múltiple...). Las pocas ventajas que ofrecen son a nivel de "prevención de errores" (como la comprobación de límites de array en tiempo de ejecución).