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

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 8 9 [10] 11 12 13 14 15 16 17
91  Programación / Programación C/C++ / Re: Ayuda con ejercicio en C en: 31 Octubre 2012, 12:45 pm
tambien te lo conteste al principio del hilo y no me hiciste mucho caso. pero bueno, te dejo aqui el codigo a falta de implementar lo del numero de 100 cifras.

Código
  1. #include <stdio.h>
  2. #include <stdint.h>
  3. #include <inttypes.h>
  4.  
  5. int main() {
  6.  
  7. uint64_t segundos, minutos, horas, dias;
  8.  
  9. printf("Introduce los segundos: ");
  10. scanf("%llu", &segundos);
  11.  
  12. minutos=segundos/60;
  13. if (segundos%=60) puts("N"); else puts("S");
  14.  
  15. horas=minutos/60;
  16. if (minutos%=60) puts("N"); else puts("S");
  17.  
  18. dias=horas/24;
  19. if (horas%=24) puts("N"); else puts("S");
  20.  
  21. printf("%llu d, %llu h, %llu m, %llu s\n", dias, horas, minutos, segundos);
  22.  
  23. return 0;
  24. }

salida:

Código:
xiruko:~$ gcc segundos.c -o segundos
xiruko:~$ ./segundos
Introduce los segundos: 5650560900
S
N
S
65400 d, 0 h, 15 m, 0 s
xiruko:~$

un saludo!

Y ya, si lo quieres hacer precioso, usas el operador ternario en vez de los ifs xD

Por ejemplo:

Código:
puts ( horas%=24 ? "N" : "S" );
92  Programación / Programación C/C++ / Re: Code::Blocks - Duda sobre librerias en: 31 Octubre 2012, 01:56 am
Acabo de leer el error. "No such file or directory" es que no encuentra la librería y eso es debido o al PATH o a que realmente no está la librería (?) xD

Verifica la variable PATH y si no es por eso, te aconsejo que reinstales.

El problema de Geany es el de compilar proyectos. Lo ideal sería compilar con makefile.
93  Programación / Programación C/C++ / Re: Code::Blocks - Duda sobre librerias en: 31 Octubre 2012, 01:50 am
Desinstala y reinstala todo. Así te despreocupas de qué puede pasar y si tienes una instalación defectuosa. Creo que en la página oficial de C::B hay un enlace de descarga que te incluye el MinGW con las librerías además del C::B todo en un paquete listo para instalar.

(Qué buen vendedor soy (?)) XD
94  Programación / Programación C/C++ / Re: [AYUDA] Obtener la fecha de modificacion de un archivo en: 31 Octubre 2012, 00:59 am
Puedes hacerlo con una estructura stat a partir de leer la entrada de directorio que corresponda al fichero que quieres analizar.

Te pongo un esbozo en C:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h> // para la ruta
  4. #include <dirent.h> // para la struct dirent
  5. #include <sys/stat.h> // para la struct stat
  6. #define TAM 256 // macro TAM de la ruta
  7.  
  8.  
  9. int main() {
  10.    char * ruta = malloc(TAM*sizeof(char));
  11.    strncpy(ruta,"Aqui_la_ruta_que_quieras",TAM);
  12.    struct dirent *entrada;
  13.    struct stat status;
  14.    DIR * dir = opendir(ruta); // abrimos el directorio
  15.    if (!dir) exit(1); // comprobamos si lo pudimos abrir
  16.    else {
  17.        chdir(ruta);
  18.        while ( (entrada=readdir(dir)) != NULL ) { // leemos entradas de directorio hasta que se devuelva puntero a NULL
  19.            if ( ( strcmp(entrada->d_name, ".") == 0 ) ||
  20.                 ( strcmp(entrada->d_name, "..") == 0 ) )
  21.                 continue; // Saltamos las entradas de directorio actual y directorio raíz
  22.            if (stat(entrada->d_name,&status) == 0) // cargamos la estructura stat (mejor usar lstat() para symbolic links)
  23.                puts(entrada->d_name); // mostramos el nombre de la entrada
  24.                puts((char *)ctime(&status.st_mtime)); // cogemos la fecha de modificación
  25.         }
  26.    }
  27. }
  28.  

Ahí te dejo el código medio comentado. Modifícalo a tus necesidades :)

Bueno, el código lee las entradas de un directorio y posteriormente lista el nombre de cada entrada junto a su última fecha de modificación (m_time de la struct stat).
95  Programación / Programación C/C++ / Re: crear programa que sume los primeros n términos de la sucesión en: 30 Octubre 2012, 00:30 am
Lo puedes hacer sencillamente aplicando recursividad. La idea de llevar un contador en la recursividad de este problema es interesante.

Si aplicas recursividad recuerda reconocer explícitamente el caso base.
96  Programación / Programación C/C++ / Re: estructura de control while en: 30 Octubre 2012, 00:15 am
A ver qué links pasamos...

Sorry, this file is infected with a virus.

Only the owner is allowed to download infected files.



· En el primer while haces una asignación en vez de colocar una expresión booleana.

· Dentro de los ciclos no modificas la variable de control...
97  Programación / Programación C/C++ / Re: variables o no en: 30 Octubre 2012, 00:08 am
El uso de los operadores unarios ++ (incremento) o -- (decremento) sirve para aumentar o decrementar en una unidad respectivamente (variables, punteros...). La posición que ocupan estos operadores infiere en el resultado obtenido de la evaluación de estos.

++a => La variable a se incrementa en una unidad y luego uso el valor de la variable a.

a++ => Primero usamos el valor de la variable a y finalmente incrementamos su valor.

La explicación para el operador -- es análoga.

Ejemplo:

Citar
a=0
mostrar(a++) // muestra el valor 0, pero en a está guardado 1, ya que lo hemos incrementado

a=0
mostrar(++a) // muestra el valor 1, ya que primero incrementamos el valor de a y luego mostramos su valor. El valor almacenado en a es 1.
98  Programación / Programación C/C++ / Re: [C] Búsqueda binaria recursiva en: 29 Octubre 2012, 23:06 pm
Hoy pase a releer las normas y me vi que casi nadie las cumplia al 100%.

Felicidades eres de los pocos que cumplen las normas creo  ;-).

Será eso de la experiencia... jaja
99  Programación / Programación C/C++ / [C] Búsqueda binaria recursiva en: 29 Octubre 2012, 18:54 pm
Este pequeñito aporte va dedicado especialmente a aquellos que comienzan recién en la programación :D

Prerrequisitos (?)

→ Vectores
→ Saber qué es y cómo se lleva a cabo la búsqueda binaria

Adjunto el código del algoritmo no recursivo (Por: Rodrigo Burgos Domínguez.):
http://algorithmmx.blogspot.com.es/2011/11/algoritmo-de-busqueda-binaria.html

Código
  1. int busqueda_binaria(vector <int> list, int val){
  2.   int der = list.size() - 1, izq = 0, m;
  3.   while(izq <= der){
  4.      m = (izq + der) / 2;
  5.      if(m == list[val]) return m; //la posicion del valor
  6.      if(m > list[val]) der = m – 1;
  7.      else izq = m + 1;
  8.   }
  9.   return -1; // no se encontro el dato :P
  10. }

Teniendo en cuenta que ya sabemos la lógica que sigue este algoritmo y su implementación arriba expuesta, vamos a pensar en hacerlo de forma recursiva, es decir, que la misma función vaya reduciendo el tamaño (N) del problema a un caso base, de tal manera, al conocer la solución del caso base, va a poder dar solución a cualquier problema de tamaño N.

Entonces el código sería el siguiente:

(utilizo int casting para no usar la librería math.h)

Código
  1. int BinarySearch(int x, int v[], int tam) {
  2.  
  3.    int RecursiveBinarySearch(int x, int v[], int i, int m, int d) {
  4.        if (i>d) return -1;
  5.        else if ( x == v[m] ) return m;
  6.        else if ( x < v[m] ) return RecursiveBinarySearch(x, v, i, (int)((i+m-1)/2), (m-1));
  7.        else return RecursiveBinarySearch(x, v, (m+1), (int)((d+m+1)/2), d);
  8.    }
  9.  
  10.    int i = 0;
  11.    int m = tam/2;
  12.    int d = tam;
  13.  
  14.    return RecursiveBinarySearch(x, v, i, m, d);
  15.  
  16. }

Explicación general:

La premisa que tenemos es que nosotros tenemos que buscar un elemento x en un vector v de tamaño N que está previamente ordenado. Teniendo eso en cuenta podemos afirmar que cualquier subvector w de v de tamaño [0..N] también está ordenado.

Pues teniendo eso en cuenta vamos reduciendo el tamaño del problema (N) a la mitad en cada llamada recursiva. ¿Por qué? Porque si x no es el elemento medio del vector v de tamaño N, entonces verificamos si es menor o mayor que él. Si es menor, buscamos en el subvector de tamaño N/2 izquierdo, sino en el derecho.

Como véis, en este caso, el algoritmo se pasa de forma cíclica a forma recursiva casi sin pensar. ¿Por qué? Estamos ante una Tail Recursive Function (la autollamada es lo último que se hace) y podemos pensar en definitiva que estamos ejecutando un ciclo simplemente.

Podría aquí estar escribiendo horas y horas sobre algoritmos de búsqueda y ordenación pero no es plan xD

Decir simplemente que hay tener en cuenta que el vector en el que vayamos a buscar un elemento, debe estar previamente ordenado.

En este momento os preguntaréis: ¿Qué me conviene más, buscar directamente en un vector con la búsqueda lineal o es mejor ordenarlo previamente (quicksort) y luego aplicar búsqueda binaria? Bueno eso ya son temas de complejidad algorítmica y haciendo un pequeño estudio se puede sacar conclusiones.

Decir también que hay estructuras de datos eficientes para la búsqueda como lo son por ejemplo las Tablas Hash o los Árboles Binarios de Búsqueda, ABB (variante AVL), por ejemplo.

Bueno con esto y un bizcocho me despido.

¡Saludos!

Todos los comentarios serán bien recibidos :)
100  Programación / Programación C/C++ / Re: CodeBlocks "undefined reference to gotoxy" en: 27 Octubre 2012, 02:42 am
Si al compilar no se reconoce la función gotoxy, algo pasa con los headers. En este caso conio.h. Y supuestamente según el error que te da, la función no se encuentra en el header conio.h o_O

En mi caso al compilar desde codeblocks con el gcc me suelta:

Citar
/home/pyxolo/Escritorio/testgotoxy.c|3|error fatal: conio.h: No existe el archivo o el directorio|

Ya ni conio.h tengo en el path de los headers. Creo que no está porque conio no es una librería estándar de C.
Páginas: 1 2 3 4 5 6 7 8 9 [10] 11 12 13 14 15 16 17
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines