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

[SOLUCIONADO] getchar deja de funcionar al usar variables

Estas en el tema de getchar deja de funcionar al usar variables en el foro de C/C++ en Foros del Web. Buenas a todos, hoy he empezado con un manual de C desde 0... Tabajo desde windows 7 y uso el compilador dev++, para los primeros ...
  #1 (permalink)  
Antiguo 17/02/2014, 22:32
 
Fecha de Ingreso: julio-2013
Ubicación: España
Mensajes: 51
Antigüedad: 10 años, 8 meses
Puntos: 0
getchar deja de funcionar al usar variables

Buenas a todos, hoy he empezado con un manual de C desde 0...
Tabajo desde windows 7 y uso el compilador dev++, para los primeros ejercicios evita que el exe se me cerrase antes de ver el resultado ponia:
getchar (); //anes de return 0;
ejemplo:
#include <stdio.h>
int main ()
{
printf ("El producto de los números 12 y 13 nos da como resultado %d",12*13);
getchar ();
return 0;
}


Pero desde que he empezado a usar variables, la ventana despus de mostar el ultimo printf se cierra igualmente que si no tuvisese getchar ();
--ejemplo:
#include <stdio.h>
int main ()
{
int n1;
int n2;
int division;
int resto;
division= n1/n2;
resto=n1%n2;
printf(" Intoduzca el primer digito");
scanf("%d",&n1);
printf("Introduzca el segundo digito");
scanf("%d",&n2);
printf("La diviision entre ambos digitos es %d",division);
printf("y el resto es %d",resto);
getchar();
return 0;
}

'' un saludo y racias po astar vustro tiempo con un novicio como yo.
Lo compila bien y funciona bien si te das prisa a leer antes de que se cierre,pero no entiendo.. pq ahora etchat no cumple lo que antes si
Imaino que habra otros modos mas directos y sencillos pero como creo haber mencionado comnc hoy asi que pasito a pasito jaja un saludo.
  #2 (permalink)  
Antiguo 18/02/2014, 00:31
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 6 meses
Puntos: 38
Respuesta: getchar deja de funcionar al usar variables

puedes usar para pausar el comando:
system("pause");
o el
system("pause>null");
Código C:
Ver original
  1. #include <stdio.h>
  2. #include <windows.h> /*Esta cabecera se incluye para que funcione el comando pause en windows*/
  3.  
  4. using namespace std;
  5.  
  6. int main (){
  7.  
  8.     /*Esto arregla el tamaño de la consola*/
  9.     system("MODE CON cols=100 lines=50");
  10.    
  11.    
  12.    
  13.    
  14.    
  15.     /*Este comando pausa el programa para que no se cierre, necesita incluir windows.h*/
  16.     system("pause>null");
  17.     return 0;
  18. }

Si el getchar no te funciona te recomiendo 2 cosas.
1º pon 2 getchar asi:
getchar();getchar();

2 usas el comando de arriba pause o pause>nul.
El pause>nul hace que no te saya ese aviso de pulsar una tecla, la consola sale solo lo que escribes ;)
  #3 (permalink)  
Antiguo 18/02/2014, 00:37
Avatar de patilanz  
Fecha de Ingreso: enero-2012
Mensajes: 880
Antigüedad: 12 años, 3 meses
Puntos: 29
Respuesta: getchar deja de funcionar al usar variables

Intenta con poner fflush(stdin) antes de getchar(); Esto limpia el buffer de entrada.
http://www.cplusplus.com/reference/cstdio/fflush/
Saludos
  #4 (permalink)  
Antiguo 18/02/2014, 07:56
 
Fecha de Ingreso: julio-2013
Ubicación: España
Mensajes: 51
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: getchar deja de funcionar al usar variables

Buenas racias por la ayuda, del comando de win y ventanas me deje aun ya que estoy comenzando el mnanual y sin duda lo mirare pero ahora me atañe el no saber pq de repente getchat no funciona:
Probe varios modos:
#include <stdio.h>
int main ()
{
int n1;
int n2;
int division;
int resto;
division= n1/n2;
resto=n1%n2;
printf(" Intoduzca el primer digito");
scanf("%d",&n1);
printf("Introduzca el segundo digito");
scanf("%d",&n2);
printf("La diviision entre ambos digitos es %d",division);
printf("y el resto es %d",resto);
getchar();getchar();
return 0;
}
¡
Este modo compila bien peo la ventana se cierra igualmente.
con las otras ofoomas que me disteis me dba error al compilarlo, aluien podria copiarlo a un editor y ver q es el fallo please? pq siue haciendo lo mismo, un saludo y gracias.
  #5 (permalink)  
Antiguo 18/02/2014, 08:00
 
Fecha de Ingreso: julio-2013
Ubicación: España
Mensajes: 51
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: getchar deja de funcionar al usar variables

Solo conseui que no se cierre al finalizar con el include de win y su linea despiues:
#include <stdio.h>
#include <windows.h>
int main ()
{
int n1;
int n2;
int division;
int resto;
division= n1/n2;
resto=n1%n2;
printf(" Intoduzca el primer digito");
scanf("%d",&n1);
printf("Introduzca el segundo digito");
scanf("%d",&n2);
printf("La diviision entre ambos digitos es %d",division);
printf("y el resto es %d",resto);
system("pause>null");
return 0;
}

Pero da resultados loquisimos compruebenlo asi que asi tb esta mal :(
  #6 (permalink)  
Antiguo 18/02/2014, 08:54
 
Fecha de Ingreso: julio-2013
Ubicación: España
Mensajes: 51
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: getchar deja de funcionar al usar variables

ME pondria a trastear como hice anoche ahora con las opciones q me disteis pero q no me funcionan y no se el motivo de esos resultados o de q s ciere la ventana directamente... asi q para no liarme mas y comprender el motivo esperare vuestras respuestas un saludo y muchas gracias.
  #7 (permalink)  
Antiguo 18/02/2014, 08:57
Avatar de leosansan  
Fecha de Ingreso: mayo-2012
Ubicación: GRAN CANARIA
Mensajes: 194
Antigüedad: 11 años, 10 meses
Puntos: 49
Respuesta: getchar deja de funcionar al usar variables

Cita:
Iniciado por CrazypiXel Ver Mensaje
Solo conseui que no se cierre al finalizar con el include de win y su linea despiues:

Pero da resultados loquisimos compruebenlo asi que asi tb esta mal :(
Claro que da resultados loquísimos, haces las operaciones de división y resto antes de introducirle los valores numéricos.

Y para "parar" la pantalla y que no se te cierre basta con poner dos getchar:

Código C++:
Ver original
  1. #include <stdio.h>
  2. int main ()
  3. {
  4. int n1;
  5. int n2;
  6. int division;
  7. int resto;
  8. printf(" Introduzca el primer digito");
  9. scanf("%d",&n1);
  10. printf("Introduzca el segundo digito");
  11. scanf(" %d",&n2);
  12. division= n1/n2;
  13. resto=n1%n2;
  14. printf("La division entre ambos digitos es %d",division);
  15. printf(" y el resto es %d",resto);
  16. return 0;
  17. }

Y un consejo, actualiza por lo menos la versión del Dev-C++.
  #8 (permalink)  
Antiguo 18/02/2014, 09:07
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 6 meses
Puntos: 38
Respuesta: getchar deja de funcionar al usar variables

Hola leo ^^ es bueno verte por aquí :D
  #9 (permalink)  
Antiguo 18/02/2014, 09:09
 
Fecha de Ingreso: julio-2013
Ubicación: España
Mensajes: 51
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: getchar deja de funcionar al usar variables

ultimo intento con lo leido en vuestras respuestas:

Mi ultimo nitento modificandoo la ventana como me dijeron y con pause al final:

#include <stdio.h>
#include <windows.h>

using namespace std;<----QUE DICE O HACE EXACTAMENTE ESTA LINEA?
int main ()
{
/*Esto arregla el tamaño de la consola*/
system("MODE CON cols=100 lines=50");
int n1;
int n2;
int division;
int resto;
division= n1/n2;
resto=n1%n2;
printf(" Intoduzca el primer digito");
scanf("%d",&n1);
printf("Introduzca el segundo digito");
scanf("%d",&n2);
printf("La diviision entre ambos digitos es %d",division);
printf("y el resto es %d",resto);
system("pause");
return 0;
}


Todo estaria perfecto, salvo que como n1 introduzco en pantalla 2 como n1 introduzco tb 2 y el resultado es 737 y el resto que deberia ser 0 me da un numero ntero de 6 diitos...
que hay mal??? las variables estan bien mas simple no puede ser no??
Un saludo y racias por ayudarme en estos primeros pasos q se q son poco interesantes para vosotos pero muy importantes para mi, para poder continuar el manual sabiendo que hago y aprendiendo.
  #10 (permalink)  
Antiguo 18/02/2014, 09:10
 
Fecha de Ingreso: julio-2013
Ubicación: España
Mensajes: 51
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: getchar deja de funcionar al usar variables

Editado: me salio doble por liarme con el cptcha, aluien sabe como se elimina? teno nod32 full version instalada en mi equipo.... no se a que se refiere con software antyspyware.... cual???
Respecto a las opeaciones Lion, es cierto las hacia cuando declaraba las variables, gracias es alo q dudo q olvide jaja
Finalmente me quedo asi pq con etchat siue sin quedase abierta.... no se pq:
#include <stdio.h>
#include <windows.h>

using namespace std;
int main ()
{
/*Esto arregla el tamaño de la consola*/
system("MODE CON cols=100 lines=50");
int n1;
int n2;
int division;
int resto;
printf(" Intoduzca el primer digito");
scanf("%d",&n1);
division=n1/n2;
printf("Introduzca el segundo digito");
scanf("%d",&n2);
resto=n1%n2;
printf("La diviision entre ambos digitos es %d",division);
printf("y el resto es %d",resto);
system("pause");
return 0;
}

Ahora me da 0 de division siempre pero el resto me lo da bien... seuro que la he caado en otra tonteia q no veo...

Última edición por CrazypiXel; 18/02/2014 a las 09:27
  #11 (permalink)  
Antiguo 18/02/2014, 09:31
 
Fecha de Ingreso: julio-2013
Ubicación: España
Mensajes: 51
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: getchar deja de funcionar al usar variables

Cita:
Iniciado por leosansan Ver Mensaje

Y un consejo, actualiza por lo menos la versión del Dev-C++.
LA verdad es que utilice ese pq es el q tenia de hace tiempo... y como compila y ejecuta parecia util, cual me recomendais bajo win???
y bajo debian? la semana que viene volvere a instalarmelo 5 años despues jeje
  #12 (permalink)  
Antiguo 18/02/2014, 09:38
 
Fecha de Ingreso: julio-2013
Ubicación: España
Mensajes: 51
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: getchar deja de funcionar al usar variables

Finalmente ya funciona, Lion tuvo la clave y yo di con el despiste..:
#include <stdio.h>
#include <windows.h>

using namespace std;
int main ()
{
/*Esto arregla el tamaño de la consola*/
system("MODE CON cols=100 lines=50");
int n1;
int n2;
int division;
int resto;
printf(" Intoduzca el primer digito");
scanf("%d",&n1);
printf("Introduzca el segundo digito");
scanf("%d",&n2);
division=n1/n2;
resto=n1%n2;
printf("La diviision entre ambos digitos es %d",division);
printf("y el resto es %d",resto);
system("pause");
return 0;
}


Ahora funciona bien pero me quedan inconitas.... pq getchar (); no funciona cuando antes si?? esto me hace incluir la libreria windows.h y que pese mas no?
otra duda que me surje... no podria dejar un espacio despies de pedir el primer y el seundo numero y mostrar el printf con un espacio para que no se junte el resultado de la division y el comienzo del printf del resto??
Un saludo y gracias.
Editado:getchar();getchar(); si funciona en mi caso para no se cierre la ventana aunq me usta mas el otro modo entonces.

Última edición por CrazypiXel; 18/02/2014 a las 09:45
  #13 (permalink)  
Antiguo 18/02/2014, 11:00
Avatar de leosansan  
Fecha de Ingreso: mayo-2012
Ubicación: GRAN CANARIA
Mensajes: 194
Antigüedad: 11 años, 10 meses
Puntos: 49
Respuesta: getchar deja de funcionar al usar variables

Cita:
Iniciado por vangodp Ver Mensaje
Hola leo ^^ es bueno verte por aquí :D
Idem, amigo vangodp.
  #14 (permalink)  
Antiguo 18/02/2014, 11:11
Avatar de leosansan  
Fecha de Ingreso: mayo-2012
Ubicación: GRAN CANARIA
Mensajes: 194
Antigüedad: 11 años, 10 meses
Puntos: 49
Respuesta: getchar deja de funcionar al usar variables

Cita:
Iniciado por CrazypiXel Ver Mensaje
Finalmente ya funciona, Lion tuvo la clave y yo di con el despiste..:

Ahora funciona bien pero me quedan inconitas.... pq getchar (); no funciona cuando antes si?? esto me hace incluir la libreria windows.h y que pese mas no?
otra duda que me surje... no podria dejar un espacio despies de pedir el primer y el seundo numero y mostrar el printf con un espacio para que no se junte el resultado de la division y el comienzo del printf del resto??
Un saludo y gracias.
Editado:getchar();getchar(); si funciona en mi caso para no se cierre la ventana aunq me usta mas el otro modo entonces.
* Ahora son necesarios porque la presencia del scanf hace que en el llamado buffer o memoria intermedia se quede un retorno de carro, vamos un '\n', y se necesita un getchar para que se lo "coma" y otro para frenar la salida del programa.

* El uso del system es innecesario, y no conveniente en este caso, con los dos getchar es suficiente.

* Para separar la introducción de los números del resultado puedes usar:

Código C++:
Ver original
  1. printf("\nLa division entre ambos digitos es %d",division);
  #15 (permalink)  
Antiguo 18/02/2014, 13:23
 
Fecha de Ingreso: julio-2013
Ubicación: España
Mensajes: 51
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: getchar deja de funcionar al usar variables

Cita:
Iniciado por leosansan Ver Mensaje
* Ahora son necesarios porque la presencia del scanf hace que en el llamado buffer o memoria intermedia se quede un retorno de carro, vamos un '\n', y se necesita un getchar para que se lo "coma" y otro para frenar la salida del programa.

* El uso del system es innecesario, y no conveniente en este caso, con los dos getchar es suficiente.

* Para separar la introducción de los números del resultado puedes usar:

Código C++:
Ver original
  1. printf("\nLa division entre ambos digitos es %d",division);
Finalmente haciendote caso para hacer el codigo lo mas breve posible y no saltarme cosas que aun ni vi en el tuto, el ejercicio quedaria funcionando pero sin modificar espacios o saltos de linea (que ni lo pide en el ejercicio ni se me explico como hacerlo aún):
#include <stdio.h>
int main ()
{
int n1;
int n2;
int division;
int resto;
printf(" Intoduzca el primer digito");
scanf("%d",&n1);
printf("Introduzca el segundo digito");
scanf("%d",&n2);
division=n1/n2;
resto=n1%n2;
printf("La diviision entre ambos digitos es %d",division);
printf("y el resto es %d",resto);
getchar();getchar();
return 0;
}
  #16 (permalink)  
Antiguo 18/02/2014, 13:27
 
Fecha de Ingreso: julio-2013
Ubicación: España
Mensajes: 51
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: getchar deja de funcionar al usar variables

Como curiosidad final me podrias recomendar un programa para escribir codigo (colorines utiles etc/compilador para win y otro para linux(imagino que debian ya traera alguno integrado, pero tal vez hayan mejores por eso pregundo, un saludo y muchisimas gracias.
  #17 (permalink)  
Antiguo 18/02/2014, 14:06
Avatar de patilanz  
Fecha de Ingreso: enero-2012
Mensajes: 880
Antigüedad: 12 años, 3 meses
Puntos: 29
Respuesta: getchar deja de funcionar al usar variables

Cita:
Iniciado por CrazypiXel Ver Mensaje
Como curiosidad final me podrias recomendar un programa para escribir codigo (colorines utiles etc/compilador para win y otro para linux(imagino que debian ya traera alguno integrado, pero tal vez hayan mejores por eso pregundo, un saludo y muchisimas gracias.
Yo utilizo visual studio 2012 me gusta mucho y detecta muy bien los errores antes de compliar. Aunque es de pago se puede encontrar gratis por internet.

Saludos

Etiquetas: ejercicio, funcion, funcionar, int, usar, variables
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 01:00.