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

#191
Programación C/C++ / Re: Switch con cadena
30 Septiembre 2013, 04:15 AM
Cita de: Xedrox en 30 Septiembre 2013, 01:56 AM
Mira deja de contestar porque pareces que no entiendes, el programa externo no lo puedo tocar y punto, no es parte de la solución que estoy otorgando y esta fuera de mi alcance.

Quizás antes de programar deberías practicar un poco de comprensión lectora...

Para intentar ayudar, si el formato de las opciones siempre es de la misma manera como "opcionX" u "OpcionX" o lo que sea, puedes pasarle un puntero al inicio del número en la cadena a la función atoi() de esta manera:

#include <stdlib.h>
char cadena[]="opcion123";
printf("%d\n", atoi(cadena+6));


output: 123

Claro que si el formato entre opciones cambia entonces ya no sirve. Si no cambia, podrías hacer lo que dijo eferion para ahorrarte un switch-case tan grande y usar punteros a función. Por ejemplo:

// prototipos de las funciones
int funcion_1(void);
int funcion_2(void);

//...

// dentro de main
int (*f[])(void)={funcion_1, funcion_2};    // array de funciones
char cadena[]="opcion2";
int index=atoi(cadena+6);                   // index de la funcion a ejecutar segun la opcion
f[index]();                                 // se ejecuta la funcion


Y bueno, de esta manera ganarías bastante rapidez aunque se perdería algo de legilibilidad en el código.

Saludos.
#192
Electrónica / Re: Inductor es igual a resistencia?
27 Septiembre 2013, 13:31 PM
Seguro que son inductancias? Porque una inductancia no es más que un conductor enrollado (normalmente cobre), sobre un núcleo que suele ser de algún ferromagnético aunque a veces se use aire. Con esto quiero decir que la diferencia entre una resistencia y una inductancia en apariencia es bastante grande, pero bueno si dices que son inductancias...

En CC las inductancias se pueden tratar como un cable más que tiene una resistencia asociada normalmente pequeña, pero con un comportamiento muy distinto a las resistencias. Me gusta pensar en las inductancias como que tienen inercia eléctrica, que sería más que nada que se oponen al cambio de corriente que pasa por ellas. Por ejemplo, si montas un circuito solo con una tensión de alimentación, una resistencia y una inductancia, por ahí circulará una corriente que ahora mismo da igual el valor. Ahora bien, si cortas la alimentación (por ejemplo con algún interruptor), la bobina tiende a mantener la corriente que pasaba por ella por un tiempo aunque el circuito esté abierto, lo que provoca un aumento de la tensión en bornes de la inductancia bestial. Si esto no se tiene en cuenta se pueden llegar a quemar diversos componentes.

Y bueno, después de todo esto, yo te aconsejaría cogerte un kit de resistencias y guardarte las inductancias para jugar con ellas un poco más adelante.

Saludos.
#193
Programación C/C++ / Re: serie de numeros en fichero
24 Septiembre 2013, 05:58 AM
También puedes usar sprintf para preparar la cadena a escribir y luego pasarla al archivo:

char cadena[MAX];
for (i=1000; i>0; i--) {
    memset(cadena, '\0', MAX);
    sprintf(cadena, "%d\n", i);
    fwrite(cadena, sizeof(char), strlen(cadena), fd);
}


Saludos
#194
Programación C/C++ / Re: serie de numeros en fichero
23 Septiembre 2013, 23:11 PM
No sé si de esta manera funcionará, supongo que sí:

fwrite("\n", sizeof(char), 1, fd);

Y sino, una manera que seguro que funciona para escribir cadenas constantes en un archivo:

fputs("\n", fd);

Saludos
#195
En estos caso se suele hacer que se inicialice de manera aleatoria, asignando números aleatorios con rand() en un ciclo que recorra el array de elementos.

Saludos
#196
Aquí tienes un ejemplo exactamente con lo que pides.

Saludos
#197
Electrónica / Re: ayuda a programar un pic 16f84a
10 Septiembre 2013, 21:10 PM
No creo que nadie vaya a hacerte el programa, o bueno al menos hablo por mí y ya te digo que no te lo haré.

Y bueno para darte un poco de ayuda, tienes que saber que los pulsadores padecen de rebotes con lo que para detectar cuando se ha pulsado no basta con leer el pin al que este conectado y ver su estado, ya que así verás que los leds se te encienden y apagan más de una vez cuando hagas solo una pulsación.

En su lugar, deberías tener dos variables, una para detectar el estado anterior del pulsador y una para detectar el estado actual. Si la anterior estaba en 0 y el actual está en 1 significa que ha habido un flanco de subida y tendrías que encender el led. Si quieres hacerlo por flanco de bajada pues sería al revés. Así para evitar los rebotes, solo te bastará con tener un flag que lo pongas a 0 cuando detectes un flanco de subida (o bajada, como quieras) y que lo vuelvas a poner a 1 al cabo de, por ejemplo, 400 o 500 msec. Y claro, para detectar si se ha pulsado habrían dos condiciones: 1. que se detecte un flanco de subida, y 2. que el flag esté a 1.

De esta manera conseguirás detectar la pulsación solo 1 vez sin rebotes y sin que pasen cosas que no quieres que pasen.

Un saludo!
#198
pues ojala en mi uni compraran unos cuantos de estos. no os imaginais la rabia que da luchar y luchar un examen para luego salir y ver que a todos los que van a una academia les han pasado las respuestas del test por whatsapp...
#199
siempre puedes hacer en la linea de comandos:

./programa > output.txt < input.txt

saludos!
#200
struct Array {int *v; int n;};

Te faltó el ';' al final de la declaración del struct. Debajo tienes la siguiente declaración:

Array ArrayCreaAleatorio(int linf, int lsup)
{
      Array a;
      //...


Y bueno para declarar el tipo de retorno de la función y la variable de esta manera deberías usar lo siguiente para declarar el struct:

typedef struct {int *v; int n;} Array;

Si quieres declarar el struct tal y como lo tenías antes entonces deberías declarar el tipo de retorno y la variable de esta manera:

struct Array ArrayCreaAleatorio(int linf, int lsup)
{
      struct Array a;
      //...


No sé si tendrás el mismo error en otras líneas, pero bueno eso ya te lo dejo a ti.

Saludos.