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

#961
18ºC? Joder es un puto congelador  ;-)

Ventilador o refrigeración líquida?
#962
Vamos a ver, para la clave tienes que usar un bucle:

printf("\nDame tu clave");
scanf("\n%d",&a);

while (a != 123456)
{
     printf("\n Contraseña invalida");
     printf("\nTeclea otra ves tu clave");
     scanf("\n%d",& a);
}

printf("Contraseña correcta");


Además en el case 3 se te ha olvidado un scanf.

La próxima vez dinos que errores tiene (y acabamos antes).
#963
Cita de: rir3760 en 11 Mayo 2013, 05:10 AM
En C++ genera algo llamado comportamiento no definido (mejor conocido como UB). Como su nombre lo indica cualquier cosa puede pasar, por ejemplo:

A) Funciona correctamente, no hay problema.
B) El programa revienta.
C) Se generan resultados aleatorios.
D) Cualquier otra cosa.

Y ese es el problema: no hay garantías en cuanto a la ejecución del programa. Yo te recomendaría que revisaras la documentación de tu compilador para conocer que extensiones (al lenguaje) soporta.
Repito, está definido en el estándar C99 (dije  C98 pero lo acabo de comprobar y era C99):

CitarDesign

C99 is, for the most part, backward compatible with C89 but is stricter in some ways.

In particular, a declaration that lacks a type specifier no longer has int implicitly assumed. The C standards committee decided that it was of more value for compilers to diagnose inadvertent omission of the type specifier than to silently process legacy code that relied on implicit int. In practice, compilers are likely to display a warning, then assume int and continue translating the program.
C99 introduced several new features, many of which had already been implemented as extensions in several compilers:

- inline functions

- intermingled declarations and code: variable declaration is no longer restricted to file scope or the start of a compound statement (block), similar to C++
several new data types, including long long int, optional extended integer types, an explicit boolean data type, and a complex type to represent complex numbers

- variable-length arrays

- support for one-line comments beginning with //, as in BCPL or C++

- new library functions, such as snprintf

- new header files, such as stdbool.h, complex.h, tgmath.h, and inttypes.h

- type-generic math functions
- improved support for IEEE floating point

...
http://en.wikipedia.org/wiki/C99#Design

Y bueno, compiladores no hay muchos. Salvo que utilize uno prehistorico debería funcionar con el mismo Mingw (o g++ en Linux).
#964
Borland no es un compilador sino un IDE (pack de Compilador+Editor). Y además está desactualizado y anticuado.

Lo que tienes que aprender es a usar el lenguaje a nivel avanzado (esto te llevará 1 año mínimo). Después ponte a estudiar una librería gráfica como Allegro, SDL, SFML, QT....

Aquí tienes un ejemplo de juego creado en C++:
http://foro.elhacker.net/programacion_cc/juego_la_serpiente-t389936.0.html
#965
Cita de: ThePinkPanther en 11 Mayo 2013, 02:04 AM

Muchas gracias, eres un genio , entonces la diferencia es que todas las estructuras de datos ,que no sean declaradas con una función de asignación de memoria dinamica , o un operador que sirva para eso,se guardan en la pila?
y tambien que puedo reasignar el espacio cuando utilizo estas funciones/operadores y en caso contrario no?
Exacto, la principal diferencia es la localización en memoria. Además tu decides voluntariamente cuando borrarla, lo que es un poder importante (aunque también peligroso porque se te puede olvidar).

Lo de reasignar el vector en realidad es una verdad a medias, lo que en realidad haces es pedirle al sistema operativo que cree otro vector (ojo, como se te olvide borrar el antiguo tendrás dos vectores en memoria).

Cita de: Luchoz95 en 11 Mayo 2013, 02:15 AM
y ademas creo que para asignar la dimension de una variable en tiempo de ejecucion se usa size_t y no int ! S2!
Cualquier variable vale puesto que se hace una conversión implicita a size_t.
#966
Cita de: ThePinkPanther en 11 Mayo 2013, 01:37 AM
entonces, que sentido tiene new , si se puede declarar dinamicamente un arreglo en cualquier parte del programa utilizando este metodo.
No aver, puedes declararlo así. Pero una vez creado no puedes redimensionarlo (con new sí, pero acuerdate antes de borrar los datos anteriores).

Además los array cogen memoria de la pila mientras que new coge memoria de la ram.

Para hacernos una idea, al ejecutar el programa. El SO le asigna un espacio de memoria al programa que se le dedomina "pila", puede ser alrededor de 2-10 mb. Esta memoria se va llenando de forma consecutiva, por lo que se puede crear elementos y borrar elementos de una forma rápida y sencilla. Todos los elementos básicos que crees (hasta los objetos) se meten en la pila.

Evidentemente, es muy probable que con 2 mb te quedes corto. Por lo que puedes pedirle al sistema operativo que te reserve memoria adicional (usando new). El sistema operativo "buscará" celdas sueltas en la memoria y te asignará lo que vayas necesitando. Evidentemente, tendremos que guardar la dirreción de la celda asignada, de ahí que haya que usar punteros.

Para hacernos una idea, prueba la siguiente sentencia:

Código (cpp) [Seleccionar]
int Cosita[1000000];

Esta sentencia probablemente fallará (aunque tengamos 4 gb de ram). En cambio si usamos new:

Código (cpp) [Seleccionar]
int* Cosita = new int[1000000];

Debería funcionar sin problemas.
#967
En C++ se puede. En C también a partir del estándar C98.

Es un array de tamaño variable. Antiguamente las variables se creaban al principio de cada llave. Por lo que se necesitaba su tamaño antes de entrar.

Ahora cada variable puede crearse en cualquier línea de código y en cualquier momento.

PD: No da warning, a no ser que tengas un compilador obsoleto o tengas activado warnings de C estricto.
#968
Pequeño hotfix en la versión de Linux/Source. Hacía que el juego fallase si tenías la música activada  :silbar:
#969
Sí, aunque el 80% del código es antiguo. De cuando estaba aprendiendo orientación a objetos, asi que tengo una mezcla muy rara entre C y C++.

Necesitas Allegro 4.2. En linux lo puedes instalar así:
Citarsudo apt-get install liballegro4.2-dev

Y luego tienes que pasarle este parametro al compilador `allegro-config --libs` con las comillas simples.

En Windows es más tocapelotas, tuve que tirar de este pack que encontré por internet:
http://www.nachocabanes.com/fich/descargar.php?nombre=Dev-Cpp-49-instaladoExtras.exe

PD: Los links ya están arreglados, gracias mi amigo gemelo.
#970
Programación C/C++ / (Juego) La Serpiente
10 Mayo 2013, 18:37 PM
Aquí os dejo un juego que he estado desarrollando por mi cuenta:




Citar
Descarga Ejecutable Windows (Versión 20130510)
Descarga Ejecutable Linux (Versión 20130513)
Descarga Código (Versión 20130510)

CONTROLES:

W/Flecha Arriba: Moverse hacia arriba.
A/Flecha Izquierda: Moverse hacia la izquierda.
D/Flecha Derecha: Moverse hacia la derecha.
S/Flecha Abajo: Moverse hacia abajo.

P = Pausa
J = Más velocidad (necesita pulsarse varias veces para que sea perceptible).
U = Menos velocidad.
K = Aumentar longitud de la serpiente.
M = Silenciar la Musica.
ESC = Salir del juego.