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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


  Mostrar Temas
Páginas: 1 [2] 3 4
11  Programación / Programación C/C++ / [C]Duda -warning compilación en: 9 Mayo 2010, 01:55 am
Hola, tengo una duda, gcc me lanza el siguiente warning:

Código:
 gcc puntero1.c
puntero1.c: In function ‘main’:
puntero1.c:34: warning: parameter names (without types) in function declaration


Este es el código:

Código
  1. #include <stdio.h>
  2.  
  3. /* Practica para ordenar arreglos
  4. 1- Utilizando una funcion con un argumento array
  5. 2- Utilizando una funcion con un argumento puntero
  6. */
  7.  
  8.  
  9. int Ord_Array(int Lista[], int Cant);
  10. int Ord_Point(int *Lista, int Cant);
  11.  
  12. int main()
  13. {
  14. //Declaracion de variables
  15. int miLista[10];
  16. int *miPuntero;
  17. int i;
  18.  
  19. int _max = 10;
  20. //Inicializacion de array
  21.  
  22. puts("\t\t Ingreso de lista");
  23. for(i = 0; i < 10; i++)
  24. {
  25. printf("Elemento n %d:",i);
  26. scanf("%d",&miLista[i]);
  27. }
  28. puts("Terminado");
  29.  
  30. //Inicializamos el puntero
  31. miPuntero = &miLista[0];
  32.  
  33. //Ordenamos
  34. int Ord_Point(miLista, _max);
  35.  
  36. //Mostramos
  37. for(i = 0; i < 10; i++)
  38. {
  39. printf("Elemento n %d \t %d\n",i,miLista[i]);
  40. printf("Elemento n %d \t %d\n",i,*(miPuntero + i));
  41. }
  42. return 0;
  43. }
  44.  
  45. int Ord_Array(int Lista[], int Cant)
  46. {
  47. int i, j, aux;
  48. for(i = 0; i < Cant; i++)
  49. {
  50. for(j = i + 1; i < Cant + 1; i++)
  51. {
  52. if(Lista[i] > Lista[j])
  53. {
  54. aux = Lista[i];
  55. Lista[i] = Lista[j];
  56. Lista[j] = aux;
  57. }
  58. }
  59. }
  60. }
  61.  
  62. int Ord_Point(int *Lista, int Cant)
  63. {
  64. int i, j, aux;
  65. for(i = 0; i < Cant; i++)
  66. {
  67. for(j = i + 1; i < Cant + 1; i++)
  68. {
  69. if(*(Lista + i) > *(Lista + j))
  70. {
  71. aux = *(Lista + i);
  72. *(Lista + i) = *(Lista + j);
  73. *(Lista + j) = aux;
  74. }
  75. }
  76. }
  77. }

   

   
12  Foros Generales / Foro Libre / Argentina - COMPRA DE Stickers??? en: 8 Mayo 2010, 16:24 pm
Hola, existe alguna página donde pueda conseguir stickers(pegatinas, calcomanías...etc) de software libre?
13  Sistemas Operativos / GNU/Linux / Duda Distro según requerimientos en: 7 Mayo 2010, 03:14 am
Hola, tengo una máquina algo vieja:

1- Athlon 1.6
2- RAM: 370mb
3- HD: 3,2 gb

Qué distro se podría instalar? Lo que se necesitaría es:

1- Internet(mozilla o chrome) + adobe flash
2- Cliente para msn

14  Programación / Scripting / Python Interfaces en: 1 Abril 2010, 23:49 pm
Qué recomendarían? Python + QT o Python + TCL/TK.

Sé que la principal diferencia es que el primero debe ser compilado, y el segundo es interpretado, con la que estaría muy en juego la velocidad...
15  Programación / Scripting / Python - Duda Algoritmo en: 27 Marzo 2010, 15:57 pm
Código
  1. import math
  2.  
  3. def menor(a,b):
  4.    return a if(a <= b) else b
  5.  
  6. def raiz2(a,b):
  7.    c = a//b
  8.    if(math.fabs(b - c) <= 1):
  9.        return menor(b,c)
  10.    else:
  11.        raiz2(a,(b + c)//2)
  12.  
  13.  
  14.  
  15. a = 170000
  16. b = raiz2(a,3)
  17. print(b)
  18.  

¿Por qué razón no devuelve el valor que es 412?

PD: Depuré hasta que llega al printf y ahí no hallo el error.
16  Programación / Java / Parámetros en: 24 Marzo 2010, 23:31 pm
En java como paso variables por referencia?
17  Programación / Java / Ubuntu - Instalar Eclipse en: 22 Marzo 2010, 02:06 am
Hola, me baje el .tar.gz de eclipse pero no tengo idea como instalarlo  :xD Alguien tiene idea?
18  Programación / Scripting / Python - Algoritmo de compresión en: 15 Noviembre 2009, 01:40 am
Citar
El algoritmo de compresión lz77 pertenece a la familia de compresores sin pérdida, también llamados compresores de texto, a los cuales se les llama así porque no omiten información del archivo al comprimirlo, al contrario que los compresores que utilizan algoritmos del tipo lossy, que omiten algo de información pero que disminuyen considerablemente el tamaño del archivo original, el cual es el caso de los archivos MP3, MPG, jpeg, etc.
Los compresores basados en algoritmos sin pérdida se utilizan cuando la información a comprimir es crítica y no se puede perder información, por ejemplo en los archivos ejecutables, tablas de bases de datos, o cualquier tipo de información que no admita pérdida.

El modelo lz77 es muy usado porque es fácil de implementar y es bastante eficiente.

En 1977 Abraham Lempel y Jacob Ziv presentaron su modelo de compresión basado en diccionario, para compresión de texto –compresión de texto se refiere a compresión sin pérdida para cualquier tipo de datos–. Hasta la fecha todos los algoritmos de compresión desarrollados eran básicamente compresores estáticos. El nuevo modelo fue llamado lz77 (por razones obvias). La salida consistía siempre en desplazamientos o corrimientos y tamaños del texto visto anteriormente. También se incluía en la salida el siguiente byte después de una coincidencia, porque el contexto (últimos bytes vistos) de este byte es la frase, y si no era parte de la frase (la coincidencia), luego tal vez no se había comprimido, así que, ¿Para que desperdiciar tiempo tratando de encontrar una coincidencia (o espacio) para él?

En 1982 James Storer y Thomas Szymanski basados en el trabajo de Lempel y Ziv, presentaron su modelo, el lzss. La diferencia principal es en la salida, lz77 siempre daba un para desplazamiento/tamaño, aún si la coincidencia era de un solo byte (en cuyo caso usaban más de ocho bits para representar un byte) de manera que el LZSS usa otro truco para mejorarlo: usa banderas (flags), que ocupan un solo bit y nos informan de lo que viene luego: una literal o un par desplazamiento/tamaño y este algoritmo es el que actualmente usamos, pero el lzss es comúnmente llamado lz77, así que lo llamaremos lz77 de este punto en adelante, pero es importante recordar que también puede ser llamado LZSS. LZSS también puede usar árboles binarios o árboles de sufijos para hacer búsquedas más eficientes.

La teoría es muy simple e intuitiva. Cuando se haya una coincidencia (también llamada frase o conjunto de bytes que ya han sido vistos en el archivo de entrada) en lugar de escribir dichos bytes se escribe el desplazamiento o tamaño de la repetición: dónde está y su longitud.

Éste es un modelo basado en diccionario, porque se mantiene un diccionario (que en este caso se conoce como “Ventana Corrediza”) y se hace referencia a ella con pares desplazamiento/tamaño. Esta versión de lz77, usa una ventana corrediza, la cual tiene un tamaño máximo, de manera que la ventana no puede ser el archivo completo, en su lugar, la ventana corrediza mantiene los últimos bytes “vistos”.

Imaginemos que estamos comprimiendo el texto “ab ab”, leemos hasta “ab ” y lo escribimos sin comprimir, luego leemos “ab” y escribimos lo siguiente: con el “desplazamiento” de 0 se halló una coincidencia de dos bytes repetidos.

Bien, aqui la implementación en python:

Compresor :

Código
  1. #Autor: determx
  2. #Fecha: 14/11/2009
  3. #Version : 1.0.0
  4. import os
  5. import string
  6.  
  7. #Funcion que devuelve el archivo de texto en una lista
  8. def Leer_Fichero(Ruta):
  9.    if os.path.exists(Ruta):
  10.        archivo = open(Ruta)
  11.        datos = []
  12.        for linea in archivo:
  13.            datos.append(linea)
  14.        archivo.close()
  15.        return datos
  16.  
  17. #Funcion para escribir texto comprimido en archivo
  18. def Escribe_Fichero(Ruta,Texto,lInsp,lMem):
  19.    archivo = open(Ruta,"w")
  20.    archivo.write(str(lInsp) + '\n')
  21.    archivo.write(str(lMem) + '\n')
  22.    archivo.write(Texto)
  23.    archivo.close()
  24.  
  25. #Function para codificar
  26. def _encode(prim,cnt):
  27.    aux = '(' + str(hex(prim))[2:] + ',' + str(hex(cnt))[2:] + ')'
  28.    return aux
  29.  
  30. #Cadena con espacios
  31. def _blancos(Cad,Cantidad):
  32.    Cad = Cad + " " * Cantidad
  33.    return Cad
  34.  
  35. #Inserta blancos al frente
  36. def _fblancos(Cad,Cantidad):
  37.    Cad = " " * Cantidad + Cad
  38.    return Cad
  39.  
  40. #Mueve caracteres a la ventana de inspeccion
  41. def _toshift(Vdel,Vins,cantidad):
  42.    Vins = Vins[cantidad:] + Vdel[:cantidad]
  43.    Vdel = Vdel[cantidad:]
  44.    return Vdel,Vins
  45.  
  46. #Funcion para buscar coincidencias
  47. def _matches(mem,insp):
  48.    while insp != '':
  49.        pos = string.find(mem,insp)
  50.        if pos != -1:
  51.    break
  52. else:
  53.    insp = insp[:-1]
  54.    return pos,len(insp)
  55.  
  56. #Funcion que devuelve un texto comprimido
  57. def Comprimir(Texto,TamInsp,TamMem):
  58.    V_Mem = ''
  59.    V_Insp = ''
  60.    V_Mem = _blancos(V_Mem,TamMem)
  61.    V_Insp = _blancos(V_Insp,TamInsp)
  62.    Comprimido = [] #Array donde junto el texto a guardar
  63.    for L in Texto:
  64. cant = len(L)
  65. cont = 1
  66. shcant = cont
  67.        L_Comp = "" #Linea a comprimir
  68.        L, V_Insp = _toshift(L,V_Insp,szInsp)#Inicializo mi ventana insp  
  69. L = _blancos(L,szInsp)
  70.        while cont < cant:
  71.            inicio,fin = _matches(V_Mem,V_Insp)
  72.    #Unicamente se codificaran las coincidencias
  73.    #mayores a la codificacion
  74.    if (fin - inicio) < len(str(szMem)*2)+3:
  75. L_Comp = L_Comp[:] + V_Insp[0]
  76.                #Muevo un solo caracter del texto a inspeccion
  77.                shcant = 1
  78.                cont += shcant
  79.            else:
  80. L_Comp = L_Comp[:] + _encode(inicio,fin)
  81. shcant = fin
  82.                cont += shcant
  83.    V_Insp, V_Mem = _toshift(V_Insp,V_Mem,shcant)
  84.    V_Insp = _fblancos(V_Insp,shcant)
  85.            L, V_Insp = _toshift(L,V_Insp,shcant)
  86.    L = _blancos(L,szInsp)
  87. Comprimido.append(L_Comp)
  88.    return '\n'.join(Comprimido)                
  89.  
  90. #Main
  91. Ruta = raw_input('Ruta de archivo a comprimir>')
  92. Dest = raw_input('Ruta destino de compresion>')
  93. Documento = Leer_Fichero(Ruta);
  94. szInsp = int(raw_input('Tamaño ventana inspeccion>'))
  95. szMem = int(raw_input('Tamaño ventana memoria>'))
  96. if Documento != None:  
  97.    Txt_Comp = Comprimir(Documento,szInsp,szMem)
  98.    Escribe_Fichero(Dest,Txt_Comp,szInsp,szMem)
  99.    print ('GOOD!')
  100. else:
  101.    print "NO EXISTE EL ARCHIVO/ARCHIVO VACIO"

Descompresor:

Código
  1. #Autor: determx
  2. #Fecha: 14/11/2009
  3. #Version : 1.0.0
  4.  
  5. import os
  6. import string
  7.  
  8. #Funcion que devuelve el archivo de texto en una lista
  9. def Leer_Fichero(Ruta):
  10.    if os.path.exists(Ruta):
  11.        archivo = open(Ruta)
  12.        datos = []
  13.        for linea in archivo:
  14.            datos.append(linea)
  15.        archivo.close()
  16.        return datos
  17.  
  18. #Funcion para escribir texto comprimido en archivo
  19. def Escribe_Fichero(Ruta,Texto):
  20.    archivo = open(Ruta,"w")
  21.    archivo.write(Texto)
  22.    archivo.close()
  23.  
  24. #Funcion que devuelve inicio y fin en enteros
  25. def _decode(Coded):
  26.    poscoma = string.find(Coded,',')
  27.    if poscoma != -1:
  28.        try:
  29.            ini = int(Coded[1 : poscoma],16)
  30.        except:
  31.            return 0,0
  32.        try:
  33.            fin = int(Coded[poscoma + 1: len(Coded)-1],16)
  34.        except:
  35.            return 0,0
  36.        return ini,fin
  37.    else:
  38.        return 0,0
  39.  
  40. #Cadena con espacios
  41. def _blancos(Cad,Cantidad):
  42.    Cad = Cad + " " * Cantidad
  43.    return Cad
  44.  
  45. def Descomprime(Texto):
  46.    szInsp = int(Texto[0])
  47.    szMem = int(Texto[1])
  48.    Texto = Texto[2:]
  49.    l_Descomp = []
  50.    V_Mem =''
  51.    V_Mem = _blancos(V_Mem,szMem)  
  52.    for l in Texto:
  53.        s_Descomp = ''
  54.        while l != '\n' and l!= '':
  55.            if l[0] != '(':
  56.                V_Mem = V_Mem[1:] + l[0]
  57.                s_Descomp = s_Descomp + l[0]
  58.                l = l[1:]
  59.            else:
  60.                PosFin = string.find(l,')')
  61.                Encoded = l[0:PosFin+1]
  62.                i,f = _decode(Encoded)
  63.                if (i != 0 or f !=0):
  64.                    s_Descomp = s_Descomp + V_Mem[i:i+f]
  65.                    V_Mem = V_Mem[f:] + V_Mem[i:i+f]
  66.                    l = l[PosFin+1:]
  67.                else:
  68.                    V_Mem = V_Mem[1:] + l[0]
  69.                    s_Descomp = s_Descomp + l[0]
  70.                    l = l[1:]
  71.        l_Descomp.append(s_Descomp)
  72.    return '\n'.join(l_Descomp)
  73.  
  74. #MAIN
  75. Path = raw_input('Ingresa ruta archivo comprimido>')
  76. Dest = raw_input('Ruta destino de compresion>')
  77. Documento = Leer_Fichero(Path)
  78. toArchivo = Descomprime(Documento)
  79. Escribe_Fichero(Dest,toArchivo)
  80. print('GOOD!')

Por supuesto, hacen falta muchas mejoras, me gustaría su opinión.
19  Programación / Scripting / Python - Problema en: 14 Noviembre 2009, 16:15 pm
Hola tengo la siguiente función:

Código
  1. #Funcion para buscar coincidencias
  2. def _matches(mem,insp):
  3.    while insp != "":
  4.        pos = mem.index(insp)
  5.        if pos != -1:
  6.            break
  7.        else:
  8.            insp = insp[:-1]
  9.    return pos,len(insp)

Por ejemplo :

Código:
memo = 'HOLA QUE TAL'
inspo = 'HOLA QUE TAL'

Me devuelve 0,12. Pero en el caso:

Código:
memo = 'HADES'
inspo = 'HADESASO'

Directamente me larga un error que no deja continuar buscando,
Código:
ValueError : substring not found

¿Cómo puedo hacer para siga buscando y pueda comparar pos != -1?
20  Programación / Scripting / [?] Python - String Matching en: 8 Noviembre 2009, 21:25 pm
Qué métodos conocen en python para búsquedas de strings, se que existe "find e index" pero estos solo encuentran la primera ocurrencia. Quisiera saber si es que existen otros métodos.
Páginas: 1 [2] 3 4
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines