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 - Manu in Motion

#1
Vale, he estado probando diferentes programas y al final con wxDev-C++ me funciona todo como debería, así que arreglado.

Muchas gracias por todo.
#2
Vale, a ver, porque al hablar de Code:Blocks la cosa cambia, porque no veo el programa ejecutarse en ningún lado y no sé si hay fallos o no (al compilar no da ninguno).

El código es:


#include <iostream>
#define PI 3.14
using namespace std;

int main (void)
{
int numero = 10;

        cout << "El valor de la variable numero es: " << numero << '\n';
cout << "La primera letra de KILO es: " << 'K' << '\n';
cout << PI << " es el valor de la constante pi.\n";
cout << "((3+7)*2) = " << ((3+7)*2) << '\n';
cout << "Hola a todos\n";

        /* Hacemos una pausa hasta que el usuario pulse Intro */
       cout << "\nPulse Intro para finalizar...";
       cin.get();
}


Y lo que me sale al ejecutar el programa después de compilarlo es únicamente esto:


Tenía entendido que con Code:Blocks, al ejecutar el programa, se abría la ventana de ejecución y no se cerraba como en Dev-C++, por eso empecé con él en un principio, pero al ver que sólo me salía eso, cambié. No sé si es lo normal o no.

Siento dar tanto el coñazo.
#3


Cita de: amchacon en  1 Julio 2013, 22:31 PM
Esa es una característica de depuración. Esto tiene como finalidad dos cosas:

- Evitar que el programa se cierre cuando termine (sin necesidad de poner pausas y esas cosas).
- Ver cuanto tiempo le ha llevado a tu programa.

Pero esto es exclusivo de Codeblocks, si abres el exe verás que este letrero no aparece.

(También se puede desactivar esta depuración en project -> project options -> build targets -> desmarca "pause execution in the end").

PD: ¿Hablas del letrero que te aparece dentro del programa no?

Hablo del build log. En el letrero que aparece me sale:

Process returned 1957557385 (0x74ADF489)   execution time : 0.718 s
Press any key to continue.

¿Ahí debería salirme el programa y luego eso? Y sino, ¿hay alguna forma de ejecutar el programa y ver el resultado desde dentro del programa? Hablando del Code:Blocks, claro, si decís que el Dev-C++ es tan malo y debería dejarlo.

Lo del setbuf y el fflush ya me ha quedado claro. Gracias a los dos.

Cita de: amchacon en  1 Julio 2013, 22:31 PM
¿Que quieres decir con que no se ejecutan?

Pues que en el Dev-C++ el programa sólo llega a ejecutarse cuando en la primera línea de código de cout va delante numero. Al ponerlo como debería ser en principio, el programa se compila sin errores, pero no se ejecuta, que es lo que me tiene desconcertado.

Cita de: Mackeli en  1 Julio 2013, 19:11 PM
    cout << numero << " es el valor de la variable numero." << '\n';

El problema está en la primera línea de cout. Tendría que poner

    cout << "La variable numero almacena: " << numero << '\n';

pero puesto así no funciona.

Gracias por la ayuda.
#4
Gracias.

En primer lugar, uso Dev-C++, más que por el idioma, que me apaño, porque Code:Blocks siempre me responde a la ejecución del programa con

Process terminated with status 1957557385 (0 minutes, 14 seconds)

o algo parecido y no sé cuál es el problema, mientras que Dev-C++ me ha funcionado bien de momento. Aunque no tengo inconveniente en cambiar si me dais una solución.


He probado a cambiar

setbuf(stdin, NULL);

por

fflush(stdin);

y ha funcionado, pero lo cierto es que es la primera vez. Antes los programas no esperaban al Enter para cerrarse a no ser que pusiera

system("PAUSE");

con lo que me salían dos mensajes de cierre y tenía que pulsar dos veces.


Ya sé que las dos funciones de cout son equivalentes y deberían funcionar. De hecho, al compilar no me dan errores ni Dev-C++ ni Code:Blocks con ninguna de las dos funciones, pero no se ejecutan. De ahí mi duda.


El tema del endl en vez de \n ya lo había mirado, pero, al estar siguiendo las prácticas del libro, quería ser lo más fiel posible. Puedo cambiarlo como una mejora de estilo de todas formas.


Muchas gracias por la respuesta.
#5
Hola,

He empezado hace dos semanas a aprender programación con el libro de C/C++ (Edición revisada y actualizada 2012) y Dev-C++ en un Windows 7 y, aunque al principio ninguno de los programas de práctica funcionaba, he ido solucionando los problemas mirando en internet.

El problema es que he llegado a un programa en el que la única solución que he encontrado no me gusta. El programa está en C++ y es el siguiente:

#include <iostream>
#define PI 3.14
using namespace std;

int main (void)
{
    int numero = 10;

    cout << numero << " es el valor de la variable numero." << '\n';
    cout << "La primera letra de KILO es: " << 'K' << '\n';
    cout << PI << " es el valor de la constante pi.\n";
    cout << "((3+7)*2) = " << ((3+7)*2) << '\n';
    cout << "Hola a todos\n";
   
    /* Hacemos una pausa hasta que el usuario pulse Intro */
    setbuf(stdin, NULL);
    cout << "\nPulse Intro para finalizar...";
    cin.get();
}


El problema está en la primera línea de cout. Tendría que poner

    cout << "La variable numero almacena: " << numero << '\n';

pero puesto así no funciona.

He probado incluso a separar "La variable numero almacena: " y numero en dos líneas de código distintas y en poner la línea de "La variable numero almacena: " antes de declarar la variable numero, pero ninguna de las dos opciones ha dado resultado.

El programa tal y como está escrito entero funciona, pero, aparte de que no me gusta como queda, me gustaría saber por qué no funciona de las otras maneras.

Gracias de antemano.