Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Se me cierra la consola sola

Estas en el tema de Se me cierra la consola sola en el foro de C/C++ en Foros del Web. Hola a todos. Este es mi primer post y espero ser bien recibido :D Estoy intentando aprender c++ ya que la programación me encanta (ya ...
  #1 (permalink)  
Antiguo 05/04/2007, 02:52
 
Fecha de Ingreso: abril-2007
Mensajes: 5
Antigüedad: 17 años, 1 mes
Puntos: 0
Pregunta Se me cierra la consola sola

Hola a todos. Este es mi primer post y espero ser bien recibido :D Estoy intentando aprender c++ ya que la programación me encanta (ya controlo html y php), pero tengo una serie de problemas:

El primero creo que ya esta resuelto, solo era por saber si esta bien resuelto. Lo que pasa es que en un manual ponia unos ejemplos de codigo, y ponia "void main()", pero al compilar me daba el siguiente error: 'main' must return 'int'. Se me ocurrio cambiar "void main()" por "int main()" y si que funciona, ¿cambia algo o esta bien resuelto?

El segundo problema que todavia perdura es que cuando copio los ejemplos del tutorial la consola se cierra nada mas acabar de calcular (estoy aprendiendo variables y como hacer operaciones +,-,* etc). Por ejemplo si pongo:

#include <stdio.h>
int main()
{

int num;
printf("Elige un numero:");
scanf("%d",&num);
num=num+5;
printf("\nEl numero que has elegido más 5 es igual a %d",&num);
}

Cuando eliges el numero y hace el calculo no se queda la pantalla congelada mostrando el texto "El numero que has elegido más 5 es igual a....", sino que se cierra el programa. Mi pregunta es: ¿Hay algún codigo para que se quede parado el programa ahí y así poder observar el resultado? Muchisimas gracias
  #2 (permalink)  
Antiguo 05/04/2007, 02:58
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Re: Se me cierra la consola sola

Lo del int esta bien aunque no veo que llames el return correspondiente.

Para ver el output del programa podes abrir la consola y ejecutarlo (supongo que estaras en Windows y es Inicio>>Ejecutar>>cmd) y para bloquear el programa en espera del teclado podes usar getchar.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #3 (permalink)  
Antiguo 05/04/2007, 03:18
 
Fecha de Ingreso: abril-2007
Mensajes: 5
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Se me cierra la consola sola

Muchas gracias por la rapida respuesta, pero no se como usar esa función. Podrias explicarme como usar getchar? Gracias otra vez
  #4 (permalink)  
Antiguo 05/04/2007, 03:29
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Re: Se me cierra la consola sola

Para tu proposito podes usarla asi:

Código:
getchar();
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #5 (permalink)  
Antiguo 05/04/2007, 03:40
 
Fecha de Ingreso: abril-2007
Mensajes: 5
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Se me cierra la consola sola

Asunto arreglado, muchisimas gracias Eternal Idol por tu ayuda. Espero algun dia poder ayudar yo a la gente. Hasta pronto.
  #6 (permalink)  
Antiguo 05/04/2007, 04:01
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Re: Se me cierra la consola sola

Cita:
Iniciado por Kard Ver Mensaje
Asunto arreglado, muchisimas gracias Eternal Idol por tu ayuda. Espero algun dia poder ayudar yo a la gente. Hasta pronto.
De nadas
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #7 (permalink)  
Antiguo 05/04/2007, 22:13
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Re: Se me cierra la consola sola

Cita:
El primero creo que ya esta resuelto, solo era por saber si esta bien resuelto. Lo que pasa es que en un manual ponia unos ejemplos de codigo, y ponia "void main()", pero al compilar me daba el siguiente error: 'main' must return 'int'. Se me ocurrio cambiar "void main()" por "int main()" y si que funciona, ¿cambia algo o esta bien resuelto?
Digamos que lo de int ya es mera estandarizacion.

te recomiendo mucho que siempre escribas tu main asi:

int main(int argc, char *argv[])

cuando argumentos, y asi cuando realmente no los necesites.

int main(void)

Y siempre al final escribe un return 0, que por eso esta el int.

int main(void)
{
...
...
return 0;
}

Mas tarde cuando avances en C entenderas que significa bien cada cosa y si tienes dudas nos preguntas y te ayudaremos en lo ams que podamos.

Saludos
  #8 (permalink)  
Antiguo 06/04/2007, 03:23
 
Fecha de Ingreso: abril-2007
Mensajes: 5
Antigüedad: 17 años, 1 mes
Puntos: 0
Exclamación Nuevo problema

Muchas gracias a todos, aqui vuelvo con más problemas :S Me vuelven a ocurrir dos cosas:

·La primera es que en un ejemplo he leido que en el include conio.h hay una funcion llamada clrscr() pero cuando la uso me da error al compilar.

·La segunda cosa que me ocurre es un error cuando ejecuto un programa. Se compila de maravilla pero al ejecutarlo y introducir el segundo dato (un numero) da un error de windows (El programa debe cerrarse...) y no consigo ejecutarlo. El codigo es el siguiente:

#include <stdio.h>
#include <conio.h>
int main(void)
{
char ciudad[20];
int base;
int altura;
int area;
printf("De que ciudad eres?\n");
scanf("%s",ciudad);
printf("Escribe la base de un triangulo:\n");
scanf("%d",base);
printf("Escribe ahora su altura:\n");
scanf("%d",altura);
area=base*altura/2;
printf("El area del triangulo es: %d",area);
printf("Hasta pronto habitante de %s",ciudad);
getch();
return 0;
}
(El error lo da cuando se introduce la base del triangulo)
Puede que hayan errores de codigo ya que lo he hecho yo pero al compilar no me da errores. Espero impaciente vuestra respuesta. Hasta pronto.
  #9 (permalink)  
Antiguo 06/04/2007, 03:37
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Re: Se me cierra la consola sola

conio.h es una libreria no standard, no deberias usarla nunca y ademas no tiene nada de utilidad real.

VC++ muestra estos warnings al compilar:
(13) : warning C4700: local variable 'base' used without having been initialized
(15) : warning C4700: local variable 'altura' used without having been initialized


Esos warnings te dicen que estas usando esas variables sin haberlas inicializado anteriormente y esto se produce por una razon: tenes que pasarle a scanf la direccion de las variables y no su valor.

Código:
scanf("%d", &base);
scanf("%d", &altura);
No uses getch tampoco, usa getchar (la funcion que te dije antes) que si es standard.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #10 (permalink)  
Antiguo 06/04/2007, 04:29
 
Fecha de Ingreso: abril-2007
Mensajes: 5
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Se me cierra la consola sola

Vale, asunto solucionado, gracias otra vez :D Solo pasa una cosa más, con getchar() en este codigo se me cierra el programa cuando introduzco el segundo numero, es decir, cuando deberia calcular el area, pero si pongo getch() va perfectamente. Cual es el problema?
  #11 (permalink)  
Antiguo 06/04/2007, 05:15
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Re: Se me cierra la consola sola

Usa fflush(stdin); justo antes de getchar();.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #12 (permalink)  
Antiguo 18/04/2007, 14:24
 
Fecha de Ingreso: septiembre-2003
Ubicación: Cerca de cualquier deposi
Mensajes: 22
Antigüedad: 20 años, 8 meses
Puntos: 0
Re: Se me cierra la consola sola

Cita:
#include <stdio.h>
int main()
{

int num;
printf("Elige un numero:");
scanf("%d",&num);
num=num+5;
printf("\nEl numero que has elegido más 5 es igual a %d",&num);
}


Hice el programita pero con instrucciones que me dicen son las que se usan ahora. No se a que se deba esto, si alguien sabe?

#include<conio.h>
#include<iostream.h>
#include<stdio.h> //no es necesaria en este ejemplo pero ya me acostumbre siempre a ponerla.

void main()
{
clrscr(); //limpiar pantalla

int num;

cout<<"Ingresa un número: ";
cin>>num;
num=num+5;
cout<<"El número que escogiste + 5 es igual a: "<<num;

getche(); //Se detiene hasta presionar una tecla.
}
  #13 (permalink)  
Antiguo 18/04/2007, 14:34
Avatar de _Lucifer_  
Fecha de Ingreso: junio-2006
Mensajes: 1.662
Antigüedad: 17 años, 11 meses
Puntos: 28
Re: Se me cierra la consola sola

Cita:
Iniciado por Ponxho Ver Mensaje
Hice el programita pero con instrucciones que me dicen son las que se usan ahora. No se a que se deba esto, si alguien sabe?
No "son las que se usan ahora" no es cuestioon de moda ni nada parecido, simlemente estas usando C++, especificamente dos objetos hechos para el control de flujo de la consola (entrada y salida).

Antes lo habias hecho en C, la diferencia es que C++ esta orientado a objetos y C no.

Saludos
__________________
Si crees que no tiene sentido, etonces probablemente lo tenga... :arriba:
  #14 (permalink)  
Antiguo 18/04/2007, 16:52
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Re: Se me cierra la consola sola

Repito, asi tal vez alguien haga caso:

conio.h es una libreria no standard, no deberias usarla nunca y ademas no tiene nada de utilidad real.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #15 (permalink)  
Antiguo 19/04/2007, 07:42
 
Fecha de Ingreso: septiembre-2003
Ubicación: Cerca de cualquier deposi
Mensajes: 22
Antigüedad: 20 años, 8 meses
Puntos: 0
Re: Se me cierra la consola sola

mmmm ok.... lo que pasa es que en mi escuela me lo dijeron asi: "conio.h - Entrada y salida a la consola, sirve para la lectura de caracteres, manejo de pantalla y para impresión de caractéres."

Y de igual forma me dijeron que siempre utilize estos tres (por lo mínimo).
#include<conio.h>
#include<iostream.h>
#include<stdio.h>

pero bueno a lo mejor y estan mal.

Gracias por la coreección.
Saludos =)
  #16 (permalink)  
Antiguo 19/04/2007, 19:16
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Re: Se me cierra la consola sola

Pues es me dio extraño.
stdio.h es la libreria de entrada y salida estandar para C e iostream es la libreria de instrada y salida estandar para C++.

conio.h es mmmmmmmmmmmmmm es...................... un, una.....basura?

Es una libreria inventada namas para hacer algunas cosas "bonitas", pero no aporta nada util y la entrada y salida de caracteres esta en stdio o iostream, depende del lenguaje.

Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:52.