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 - Locura_23

#1
Bueno depende de si lo sabes usar, en internet puedes aprender de todo. Yo aprendi casi un idioma y en parte a programar. Pero todo esto me llevó años...
#2
por qué no programarla ?   ::) :rolleyes:
#3
Siento revivir el tema, pero si alguna vez alguien necesita saber sobre esto, acá dejo otro hack que encontré recién, sirve para leer con la función scanf(), manteniendo limpio el buffer.


/**Muestra como leer un dato con scanf, de manera que el buffer quede limpio despues de la
lectura, no es necesario utilizar el fflush**/

#include <stdio.h>
#include <stdlib.h>

int main()
{
   int num = 0;
   char palabra[15] = {""};

   printf("Ingrese un numero.\n");
   scanf("%i%*c",&num); ///hack

   printf("El numero ingresado fue: %i\n",num);

   printf("\n\nIngrese una palabra.\n");
   gets(palabra);

   printf("\nLa palabra ingresada fue: %s\n",palabra);

   return 0;
}


prueba de que funciona es que tras ingresar el numero entero se puede leer tranquilamente un string.
#4
Hola @LadyWin, bueno estas cuestiones de diseño muchas veces varian pero

1) pienso que el cliente solo necesitaria las funciones (o metodos) basicas de la lista tal como mencionaste insertar, mostrar, eliminar, buscar... Todas las funciones que sean intrinsecas a la forma en que las funciones hacen esas tareas deberian estar ocultas.
El usuario deberia ingresar el dato que quiere guardar, y en todo caso una bandera de cómo quiere hacerlo, (principio, final o en orden). Esto se podria hacer con un subprograma.
La funcion de crear nodo no es necesaria que la sepa el usuario o tampoco la de buscar ultimo nodo (si decide insertar al final)...

2) efectivamente la forma interna en que trabajan cambia segun la estructura, por ejemplo: puedes implementar el TDA pila con una lista enlazada simple o lista enlazada doble. Sin embargo en ambos casos, el cliente solo quiere las funciones basicas, apilar, desapilar, mostrar, y una funcion predicado pilavacia tal vez...

Para mucha más información del tema, te recomiendo:

"Programación en C" de Luis Joyanes Aguilar, capitulo sobre TDA.
#5
Programación C/C++ / Re: Teclado para programar
10 Octubre 2021, 17:35 PM
Con respecto a teclado fisico, supongo que si tiene pad numerico será mas comodo. Aunque siempre es mejor el teclado de pc de escritorio para mejor velocidad, en comparacion que el integrado de una note.

La configuracion de teclado tal como te dijeron en alfabeto latino. Yo lo tengo en español. Si necesito usar un teclado de otro idioma se configura facilmente desde el SO. Siempre y cuando te fijes que donde estás programando soporte Unicode.

Siempre tener a mano una imagen del código ASCII, en caso de que no encuentres algún simbolo, entonces te manejas con alt + codigo_caracter
#6
Te autorespondiste, buen trabajo (? efectivamente la función printf() tiene muchas opciones de formateo.

Si sabes inglés, esa página es bastante buena para C.

https://c-for-dummies.com/blog/?p=360
#7
Terrible jajaja, si fue un error involuntario ojalá no le hundan la carrera. Pero cómo te equivocas así...? xD
#8
Se agradece muchisimo el aporte
#9
Cita de: MAFUS en  6 Octubre 2021, 20:51 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
#10
Cita de: MAFUS en  6 Octubre 2021, 18:19 PM
Bueno, ahí va un hack que me ha funcionado siempre:

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.



#include <stdio.h>
#include <stdlib.h>
#include <sysinfoapi.h>

typedef struct
{
   char nombreDragon[30];
   int numeroClase;
   char color[15];
   int puntaje;
   int mes;
   int dia;
}dragon;

void limpiarBuffer()
{
   char c;

   do
   {
       c = getchar();
   }while( c != '\n' );

} // fin funcion

dragon cargarDatosDragon()
{
   dragon aux;
   SYSTEMTIME datosTiempo;

   printf("\n<< Carga de datos >>\n");

   printf("\nIngrese el nombre del dragon >> ");
   limpiarBuffer();
   gets(aux.nombreDragon);

   printf("\nIngrese el numero de clase >> ");
   scanf("%d",&aux.numeroClase);

   printf("\nIngrese el color >> ");
   limpiarBuffer();
   gets(aux.color);

   printf("\nIngrese el puntaje >> ");
   scanf("%d",&aux.puntaje);

   GetLocalTime(&datosTiempo);

   aux.mes = datosTiempo.wMonth;
   aux.dia = datosTiempo.wDay;

   return aux;

} // fin funcion

int main()
{
   dragon nuevoDragon;
   
   nuevoDragon = cargarDatosDragon();

   return 0;

} // fin main



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