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

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 8 9 10 [11] 12 13 14 15 16 17 18 19
101  Programación / Programación C/C++ / Re: funcion limpiar buffer de teclado en: 6 Octubre 2021, 21:10 pm
El problema con esa función es que si el buffer ya está vacío getchar tomará el control de la consola obligando a que el buffer se llene otra vez. Es decir: esa función sólo hace el trabajo esperado si en el buffer quedó algo.

mm ya veo, tiene total sentido eso que decis. De ahi que aveces me haga eso y otras no
102  Programación / Programación C/C++ / Re: funcion limpiar buffer de teclado en: 6 Octubre 2021, 20:26 pm
Bueno, ahí va un hack que me ha funcionado siempre:

Código:
fseek(stdin, 0, SEEK_END);

Hola MAFUS, funciona bien ese hack xD gracias!

------------------------------------------------------

RayR gracias por tu aporte !

El tema es que solo uso C en este programa, tengo entendido que no es buena práctica combinar las cosas no?

Por alguna razón, en el momento de publicar la pregunta eso me pasaba (del doble enter) y me ha pasado en otros programas donde incluí esta función que mencioné. Aveces pasa y aveces no, es raro... acá dejo donde la estaba usando en este caso.

Código
  1.  
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <sysinfoapi.h>
  5.  
  6. typedef struct
  7. {
  8.    char nombreDragon[30];
  9.    int numeroClase;
  10.    char color[15];
  11.    int puntaje;
  12.    int mes;
  13.    int dia;
  14. }dragon;
  15.  
  16. void limpiarBuffer()
  17. {
  18.    char c;
  19.  
  20.    do
  21.    {
  22.        c = getchar();
  23.    }while( c != '\n' );
  24.  
  25. } // fin funcion
  26.  
  27. dragon cargarDatosDragon()
  28. {
  29.    dragon aux;
  30.    SYSTEMTIME datosTiempo;
  31.  
  32.    printf("\n<< Carga de datos >>\n");
  33.  
  34.    printf("\nIngrese el nombre del dragon >> ");
  35.    limpiarBuffer();
  36.    gets(aux.nombreDragon);
  37.  
  38.    printf("\nIngrese el numero de clase >> ");
  39.    scanf("%d",&aux.numeroClase);
  40.  
  41.    printf("\nIngrese el color >> ");
  42.    limpiarBuffer();
  43.    gets(aux.color);
  44.  
  45.    printf("\nIngrese el puntaje >> ");
  46.    scanf("%d",&aux.puntaje);
  47.  
  48.    GetLocalTime(&datosTiempo);
  49.  
  50.    aux.mes = datosTiempo.wMonth;
  51.    aux.dia = datosTiempo.wDay;
  52.  
  53.    return aux;
  54.  
  55. } // fin funcion
  56.  
  57. int main()
  58. {
  59.    dragon nuevoDragon;
  60.  
  61.    nuevoDragon = cargarDatosDragon();
  62.  
  63.    return 0;
  64.  
  65. } // fin main
  66.  
  67.  

pd: ignorese los gets() y demas cosas mejorables, es solo un boceto jaja

103  Programación / Programación C/C++ / funcion limpiar buffer de teclado en: 6 Octubre 2021, 16:51 pm
Buenas a todos,

Tengo una duda con la siguiente función... la saqué de un libro de texto. Y es una solución para limpiar buffer de entrada de teclado (sin usar el vaciado de fflush() ) en C, antes de leer un string. Solo que cuando la utilizo en la consola, tengo que oprimir dos veces  salto de linea, una vez cuando ingreso el dato y otra vez mas para que salte de linea.  A diferencia de ingresar el dato y oprimir salto de linea "enter", y que se guarde el dato de inmediato.

Alguien sabe una alternativa a esta función ?

Saludos

Código
  1.  
  2. void limpiarBuffer()
  3. {
  4.    char c;
  5.  
  6.    do
  7.    {
  8.        c = getchar();
  9.    }while( c != '\n' );
  10.  
  11. }
  12.  
  13.  
104  Programación / Programación C/C++ / Re: Problema de comprensión programa C en: 3 Octubre 2021, 17:15 pm
Si vas a ver sistemas operativos te conviene hacer una buena repasadita a C  :rolleyes:
105  Programación / Programación C/C++ / Re: Problema con la lectura de este archivo Binario en: 28 Septiembre 2021, 17:19 pm
Tal vez puedes manejarte con los bytes del archivo ? pararte al principio del archivo con rewind() o fseek() y luego moverte tantos bytes (bytes de la estructura) hacia abajo, leer. Y así.
106  Programación / Programación C/C++ / Re: Problema con la lectura de este archivo Binario en: 27 Septiembre 2021, 21:46 pm
Suele ser mejor utilizar el retorno de la función fread() para leer hasta el fin del archivo...
Prueba con esto

Código
  1. while(  fread(&X,sizeof(X),1,FP) > 0 )
  2. {
  3.  
  4.    printf("\n\n %5d %15s %35s %20s %8d %10d ",X.ART , X.COD , X.DESC , X.FAB , X.STOCK , X.POS);
  5.  
  6. }
  7.  

pregunta, en el nombre del archivo no deberías colocar la extensión ? ya sea .bin,  .dat
107  Programación / Programación C/C++ / Re: problemas con números mayores y menores en: 27 Septiembre 2021, 03:06 am
Aquí es cuando investigas en un manual de C/C++. Te planteas bien tu problema (qué es lo que tienes que hacer) y buscas una solución inteligente.

Tal como te dice MAFUS un arreglo de variables, un bucle y una variable acumuladora es lo que tienes que usar.

NUNCA repites lineas iguales de codigo, utilizas de forma inteligente las herramientas del lenguaje (las que te mencioné arriba). 

108  Programación / Programación General / Re: buen lenguage para programa en: 26 Septiembre 2021, 14:38 pm
se ve k soy d letras.

 :xD :xD Te falta mucha lectura para ser de letras, o sos muy vago al escribir. Es deshonorable para los que realmente son de letras.
109  Programación / Programación C/C++ / Re: AL SALIR OPRIMIENDO UNA TECLA IMPRIME TAMBIÉN LO ÚLTIMO INGRESADO en: 15 Septiembre 2021, 14:58 pm
Hola!
No me convence mucho la condicion del while... si quieres hacer que el usuario salga del bucle ,segun lo que planteaste, puedes hacer

Código
  1. while( !(GetAsyncKeyState('S') )
  2. {
  3.     //y el resto
  4. }
  5.  

No entiendo la segunda condicion que planteas en el while... ( el "& 1") ? Puede que ahi te esté tirando el error.

Aunque yo no agregaria toda la ENORME libreria de windows para solo esa funcion de la tecla. Puedes conseguir el mismo resultado con una variable char y el metodo cin.get(), y seria una forma mas eficiente y rapida, para conseguir los mismos resultados. Siempre buscamos la eficiencia del codigo. Soluciones simples son mejores.

Código
  1. //donde declaraste las demas variables
  2. char controlUsuario;
  3.  
  4. // luego si colocar la S o la N va en gusto del programador, entiendo más clara cuando es
  5. //negativa la condicion, osea cuando oprime n. Fijate que se tiene en cuenta n minuscula Y
  6. //N mayuscula.
  7. while( controlUsuario != 'n' && controlUsuario != 'N' )
  8. {
  9.  
  10. //operaciones
  11.  
  12. cout << "Continuar ? (s/n)";
  13.  
  14. cin.get(controlUsuario);
  15.  
  16. }
  17.  



Luego, en la asignacion, no es necesario los parentesis.

Código
  1.  
  2. d = b + c
  3. // recuerda poner nombres DESCRIPTIVOS para tus variables, hace más legible el código
  4. // lo anterior podria ser, por ejemplo.
  5.  
  6. suma = num + otroNum;
  7.  
  8. //recuerda que mientras mas CLARO y EVIDENTE a la vista el codigo mejor.
  9.  
  10.  

Por ultimo, en la linea donde imprimir por pantalla el resultado de la suma, puedes colocar directamente esto:

Código
  1. cout << "\nLa suma es: " << b + c << endl;
  2.  

Como ves, no es necesario ni bajarlo a una variable

Saludos

110  Programación / Programación C/C++ / Re: Simulacion Tirar dados utilidad en: 14 Septiembre 2021, 20:36 pm
Las simulaciones computarizadas de la vida real sirven para recolectar datos y predecir resultados, e incluso entrenar en ciertas areas. Por ejemplo, la fuerza áerea de un país utiliza sistemas de simulación de vuelo. Otro ejemplo, un grupo de ingenieros mecánicos puede simular cómo una pieza va a reaccionar dados ciertas fuerzas en un sistema.
Páginas: 1 2 3 4 5 6 7 8 9 10 [11] 12 13 14 15 16 17 18 19
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines