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

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


  Mostrar Mensajes
Páginas: 1 ... 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 [20] 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 ... 51
191  Programación / Programación C/C++ / Re: [C] Llenar arreglo con recursividad en: 4 Noviembre 2013, 21:30 pm
Igual no es la mejor solución pero funcionar funciona:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void Procesar(int *p, int nelem, int nrestantes);
  5.  
  6. int main()
  7. {
  8. int nelem, i;
  9. int *arreglo;
  10.  
  11. printf("Introduce la cantidad de elementos: ");
  12. scanf(" %d", &nelem);
  13. arreglo=malloc(nelem*sizeof(int));
  14.  
  15. // inicializacion
  16. for (i=0; i<nelem; i++) arreglo[i]=1;
  17.  
  18. // funcion recursiva para procesar y mostrar por pantalla el arreglo
  19. Procesar(arreglo, nelem, nelem);
  20.  
  21. free(arreglo);
  22. return 0;
  23. }
  24.  
  25. void Procesar(int *p, int nelem, int nrestantes)
  26. {
  27. int i;
  28.  
  29. // procesar arreglo
  30. for (i=0; i<(nelem-nrestantes); i++) p[nelem-1-i]++;
  31.  
  32. // imprimirlo
  33. for (i=0; i<nelem; i++) printf("%d", p[i]);
  34. printf("\n");
  35.  
  36. // procesar siguiente etapa
  37. if (nrestantes>1) Procesar(p, nelem, nrestantes-1);
  38. }

Saludos!
192  Programación / Programación C/C++ / Re: Switch con cadena en: 30 Septiembre 2013, 04:15 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:

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

Código:
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:

Código
  1. // prototipos de las funciones
  2. int funcion_1(void);
  3. int funcion_2(void);
  4.  
  5. //...
  6.  
  7. // dentro de main
  8. int (*f[])(void)={funcion_1, funcion_2};    // array de funciones
  9. char cadena[]="opcion2";
  10. int index=atoi(cadena+6);                   // index de la funcion a ejecutar segun la opcion
  11. 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.
193  Informática / Electrónica / Re: Inductor es igual a resistencia? en: 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.
194  Programación / Programación C/C++ / Re: serie de numeros en fichero en: 24 Septiembre 2013, 05:58 am
También puedes usar sprintf para preparar la cadena a escribir y luego pasarla al archivo:

Código
  1. char cadena[MAX];
  2. for (i=1000; i>0; i--) {
  3.    memset(cadena, '\0', MAX);
  4.    sprintf(cadena, "%d\n", i);
  5.    fwrite(cadena, sizeof(char), strlen(cadena), fd);
  6. }

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

Código
  1. fwrite("\n", sizeof(char), 1, fd);

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

Código
  1. fputs("\n", fd);

Saludos
196  Programación / Programación C/C++ / Re: analisis codigos de ordenamiento en: 19 Septiembre 2013, 05:40 am
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
197  Programación / Programación C/C++ / Re: analisis codigos de ordenamiento en: 18 Septiembre 2013, 19:05 pm
Aquí tienes un ejemplo exactamente con lo que pides.

Saludos
198  Informática / Electrónica / Re: ayuda a programar un pic 16f84a en: 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!
199  Foros Generales / Noticias / Re: PocketHound y adiós a copiar en los exámenes en: 27 Agosto 2013, 20:50 pm
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...
200  Programación / Programación C/C++ / Re: Palindromo en un archivo en: 26 Agosto 2013, 21:13 pm
siempre puedes hacer en la linea de comandos:

Código:
./programa > output.txt < input.txt

saludos!
Páginas: 1 ... 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 [20] 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 ... 51
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines