elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Pregunta noob: ¿Pause o no pause? C++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Pregunta noob: ¿Pause o no pause? C++  (Leído 10,859 veces)
Puntoinfinito


Desconectado Desconectado

Mensajes: 919


#! /win/archlinux


Ver Perfil WWW
Pregunta noob: ¿Pause o no pause? C++
« en: 23 Julio 2012, 00:04 am »

Buenas a tod@s.

Veamos, estoy siguiendo los videotutoriales de Jesus Conde de programación C++. En sus VT trabaja en Microsoft Visual C++ 2006, algo antiguo... Pero ese no es el problema. Ese esta en que al compilar el siguiente código:

Código
  1. // videotutorial 2 - usar la palabra clave namespace
  2. #include <iostream>
  3. int main()
  4. {
  5.    using namespace std; // usamos namespace
  6. /* Ejemplo de comentarios
  7. multilínea. Podemos escribir
  8. en varias líneas que no compilará
  9. hasta que encuentre el símbolo de cierre
  10. */
  11.  
  12.    cout << "Hola ah\xd6.\n";
  13.    cout << "\x90ste es un 5: " << 5 << "\n";
  14.    cout << "El manipulador std::endl ";
  15.    cout << "escribe una nueva l\xd6nea a la pantalla.";
  16.    cout <<  endl;
  17.    cout << "Aqu\xd6 vemos un n\xa3mero muy grande:\t" << 70000;
  18.    cout <<  endl;
  19.    cout << "\x90sta es la suma de 8 y 5:\t";
  20.    cout << 8+5 << endl;
  21.    cout << "\x90sta es una fracci\xa2n:\t\t";
  22.    cout << (float) 5/8 << endl;
  23.    cout << "y un n\xa3mero muy, muy grande:\t";
  24.    cout << (double) 7000 * 7000 << endl;
  25.    cout << "Aqu\xd6 puedes colocar";
  26.    cout << "tu nombre...\n";
  27.    cout << "\xadJuan Nadie es un programador C++!\n";
  28.    return 0;
  29. }

Y abrirlo una vez generado, le sale una terminal win32, con el código 100%  escrito correctamente, pero con un "pause" (en lo que sería batch) añadido. En cambio a mi, si lo ejecuto, se abre el código, se imprimen los caracteres y se cierra sin dejar tiempo para poder leer. Supongo que seria causa del malor int main() y tendré que guardar como variable y incorporarla dentro de main(...) .

O no, no se mucho de esto xD...

¡Ayuda expertos!


En línea

AHORA EN SOFTONIC || CLICK HERE!!
Base64: QWNhYmFzIGRlIHBlcmRlciAxIG1pbnV0byBkZSB0dSB2aWRhLiBPbOkh



HACK AND 1337 : http://hackandleet.blogspot.com
WEBSITE: http://www.infiniterware.
DickGumshoe


Desconectado Desconectado

Mensajes: 480



Ver Perfil WWW
Re: Pregunta noob: ¿Pause o no pause? C++
« Respuesta #1 en: 23 Julio 2012, 00:10 am »

¡Hola!

Efectivamente, necesitas hacer una pausa. Si el creador de ese videotutorial compila directamente desde cmd, es normal que no le haga falta pausar el programa.

Una solución es poner getchar() al final del código.

Si has usado justo antes scanf() u otra función que deje basura en el buffer del teclado, necesitarás poner dos veces getchar(). Así, el primer getchar() eliminaría la basura del buffer y el segundo pedirá un carácter, pausando así el programa.

Una mala solución es poner system("pause"), incluido en stdlib.h. Este no es portable; solo funciona en Windows, por lo que no te aconsejo usarlo, a pesar de que es muy usado por internet.

Saludos!


« Última modificación: 23 Julio 2012, 00:16 am por DickGumshoe » En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Pregunta noob: ¿Pause o no pause? C++
« Respuesta #2 en: 23 Julio 2012, 01:21 am »

El problema se debe al IDE (entorno de desarrollo integrado) que estas utilizando. La gran mayoría de estos como Lcc-win32, Pelles C, CodeBlocks, Visual Studio, etc. generan esa pausa de forma automática, lo correcto ya que siendo estrictos no forma parte del programa.

Unos pocos IDEs (en este momento solo recuerdo a Dev-C++) no la generan. Para evitar llenar de pausas los programas (que para empezar no son necesarias) me parece mejor cambiar a otro.

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
DickGumshoe


Desconectado Desconectado

Mensajes: 480



Ver Perfil WWW
Re: Pregunta noob: ¿Pause o no pause? C++
« Respuesta #3 en: 23 Julio 2012, 01:28 am »

Esa pausa que tienen muchos IDEs están bien cuando siempre vas a ejecutar el programa directamente desde éste. Pero si lo que haces es ejecutar el .exe, la pausa no la genera, así que yo siempre uso getchar(), que sí hace la pausa en el .exe generado.

¡Saludos!
« Última modificación: 23 Julio 2012, 14:13 pm por DickGumshoe » En línea

Puntoinfinito


Desconectado Desconectado

Mensajes: 919


#! /win/archlinux


Ver Perfil WWW
Re: Pregunta noob: ¿Pause o no pause? C++
« Respuesta #4 en: 23 Julio 2012, 14:11 pm »

Aja, pude resolverlo. La cuestión era poner :

Código
  1. #include <iostream>
  2. #include <stdio.h> //Añadir esta
  3. int main()
  4. {
  5. ...
  6. getchar()
  7. return 0;
  8. }

Y si aparece en el .exe generado. Gracias

Saludos cracks
En línea

AHORA EN SOFTONIC || CLICK HERE!!
Base64: QWNhYmFzIGRlIHBlcmRlciAxIG1pbnV0byBkZSB0dSB2aWRhLiBPbOkh



HACK AND 1337 : http://hackandleet.blogspot.com
WEBSITE: http://www.infiniterware.
DickGumshoe


Desconectado Desconectado

Mensajes: 480



Ver Perfil WWW
Re: Pregunta noob: ¿Pause o no pause? C++
« Respuesta #5 en: 23 Julio 2012, 14:13 pm »

Si estás en C++ no te será necesario incluir stdio.h para usar getchar(), puedes poner cin.get(), que es el equivalente a getchar() en C++.

Saludos!
En línea

Puntoinfinito


Desconectado Desconectado

Mensajes: 919


#! /win/archlinux


Ver Perfil WWW
Re: Pregunta noob: ¿Pause o no pause? C++
« Respuesta #6 en: 23 Julio 2012, 14:25 pm »

Los dos de maravilla. ¡Anotados!

Gracias expertos, y saludos.
En línea

AHORA EN SOFTONIC || CLICK HERE!!
Base64: QWNhYmFzIGRlIHBlcmRlciAxIG1pbnV0byBkZSB0dSB2aWRhLiBPbOkh



HACK AND 1337 : http://hackandleet.blogspot.com
WEBSITE: http://www.infiniterware.
Puntoinfinito


Desconectado Desconectado

Mensajes: 919


#! /win/archlinux


Ver Perfil WWW
Re: Pregunta noob: ¿Pause o no pause? C++
« Respuesta #7 en: 27 Julio 2012, 13:03 pm »

Expertos xD

Teóricamente esto ha de hacer pausa, pero ahora el compil no me hace caso...

Código
  1. #include <iostream>
  2. #include <stdio.h>
  3.  
  4. int add(int uno,int dos)
  5. {
  6. using std::cout;
  7. cout << "\nLa suma de " << uno << " y " << dos << " es ";
  8. return (uno + dos);
  9. }
  10.  
  11. int main()
  12. {
  13. using namespace std;
  14. cout << "Ponga los dos numeros que quiere sumar\n";
  15. int a,b,c;
  16. cout << ">>> ";
  17. cin >> a;
  18. cout << "\n>>> ";
  19. cin >> b;
  20. c=add(a,b);
  21. cout << c;
  22. getchar();
  23. return 0;
  24. }

Lo he probado de poner a todos los sitios donde creo que se podría colocar... pero nain...
En línea

AHORA EN SOFTONIC || CLICK HERE!!
Base64: QWNhYmFzIGRlIHBlcmRlciAxIG1pbnV0byBkZSB0dSB2aWRhLiBPbOkh



HACK AND 1337 : http://hackandleet.blogspot.com
WEBSITE: http://www.infiniterware.
avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: Pregunta noob: ¿Pause o no pause? C++
« Respuesta #8 en: 27 Julio 2012, 13:26 pm »

¿Y si usas el "getchar" de C++?
Código
  1. cin.peek();
PD:No se seguro si es ese eh...Es que ahora mismo no puedo probarlo.
En línea

Regístrate en
rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Pregunta noob: ¿Pause o no pause? C++
« Respuesta #9 en: 27 Julio 2012, 17:16 pm »

El problema es el siguiente, al pedir el numero tecleas:
Código:
123{ENTER}

Los caracteres "123" se toman para obtener el numero 123 pero el avance de linea '\n' se queda en el bufer de la entrada estándar. Cuando al final del programa llamas a la función "getchar" esta lee ese carácter, retorna de inmediato y el efecto es no tener la mentada pausa.

Por ello debes descartar el resto de la linea, en C++ hay varias opciones políticamente correctas, la mas sencilla es utilizando un bucle:
Código
  1. // Descartamos el resto de la linea
  2. char ch;
  3. while (cin.get(ch) && ch != '\n')
  4.   ;
  5. // Pausa mediante la lectura de un caracter
  6. cin.get(ch);

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Animación con sonidos y botones de play, stop y pause
Diseño Gráfico
daam 1 2,532 Último mensaje 15 Octubre 2007, 18:41 pm
por Azielito
como puedo meter mas de un pause?
Scripting
faralito 3 3,010 Último mensaje 20 Noviembre 2008, 19:22 pm
por faralito
Comportamiento inesperado [FOR+PAUSE]
Scripting
leogtz 5 4,142 Último mensaje 29 Diciembre 2008, 20:55 pm
por sirdarckcat
Ejecutar programas en Windows sin necesidad de pausas (system (pause) etc)
Programación C/C++
Akai 2 4,768 Último mensaje 16 Octubre 2010, 19:18 pm
por flony
W7 ¿cómo desactivar todo lo que pause una descarga?
Windows
Tachikomaia 3 4,371 Último mensaje 11 Octubre 2023, 23:53 pm
por Tachikomaia
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines