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

 

 


Tema destacado: Curso de javascript por TickTack


  Mostrar Temas
Páginas: [1] 2 3
1  Programación / Programación C/C++ / Copiando cadenas - comportamientos extraños en: 15 Abril 2014, 07:32 am
Estaba revisando uno viejo libro que hace mucho tiempo imprimi, y me llamo la atencion, asi comienza parte del codigo:

Código
  1. char texto1[40], texto2[40]...
  2. ...
  3. gets(texto1)
  4. ...
  5. strncpy(texto3, texto2, 4);
  6. printf("Sus 4 primeras letras son %s\n", texto3);

Asi que como observer arreglos, quice hacerlo con punteros y ver su funcionamiento.

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int main(void)
  6. {
  7.    char* saludo;
  8.    int n;
  9.  
  10.    printf("Texto: ");
  11.    gets(saludo);
  12.  
  13.    printf("Cuantas letras desea ver: ");
  14.    scanf("%d", &n);
  15.  
  16.    char* copySaludo = malloc((strlen(saludo) + 1) * sizeof(char));
  17.    strncpy(copySaludo, saludo, n);
  18.  
  19.    printf("Resultado con los %d primeras letras: %s\n", n, copySaludo);
  20.  
  21.    return 0;
  22. }

Lo curioso es que a veces tengo resultados muy fuera de si:
Citar
Texto: hello, world!
Cuantas letras desea ver: 6
Resultado con los 6 primeras letras: hello,>

Citar
Texto: hello, world!
Cuantas letras desea ver: 7
Resultado con los 7 primeras letras: hello,

Citar
Texto: hello, world!
Cuantas letras desea ver: 5
Resultado con los 5 primeras letras: hello♣>

Y a veces provoca un crash!

Es algo extraño, y confuso... creo que jugar con punteros es para super-heroes!
Saludos.
2  Programación / Bases de Datos / Consultas relacionadas sin JOIN en: 5 Julio 2013, 01:54 am
Que tal gente!

Una duda, se puede realizar consultas relacionadas sin joins de tal manera que muestre algun campo especifico de una llave foranea. Por ejemplo:

Código:
Carrera		Estudiante
------- ----------
idCarrera PK idEstudiante PK
Titulo idCarrera FK
Nombres
Apellido

Código
  1. SELECT Estudiante.idCarrera AS [Carrera], Estudiante.Nombres, Estudiante.Apellido FROM Estudiante;
  2. SELECT Titulo FROM Carrera WHERE Carrera.idCarrera LIKE '%CS%';
  3.  
Código:
Carrera	Nombres	Apellidos
IS Jeff Parker
CS Mat Brown

Citar
Titulo
Ciencias de Computacion

Código
  1. SELECT Estudiante.idCarrera AS [Carrera], Estudiante.Nombres, Estudiante.Apellido FROM Estudiante WHERE Estudiante.idCarrera = (SELECT Carrera.Titulo FROM Carrera WHERE Carrera.idCarrera LIKE '%CS%');
  2.  
Código:
Carrera			Nombres Apellidos

Aqui la informacion me aparece en blanco!

Lo que quiero lograr es algo parecido esto

Código:
Carrera			Nombres Apellidos
Ciencias de computacion Mat Brown
3  Programación / Java / Dos condiciones en estructura do-while en: 2 Junio 2013, 06:45 am
Esta pregunta es bastante novato, pero la verdad estoy llevando tiempo viendo por que no funciona.
Código
  1. do{
  2.   numero = ingresa.nextInt();
  3. }while(numero == 0 && numero > 100000)

La idea es ingresar un numero que este entre: 1<= n <100.
Y que sume naturalmente segun el numero ingresado.

Entrada:
2
5

Salida:
3
15

Pero si ingresas 0, es resultado es: 0.
Si ingresas 101, sale el resultado.
Cosa que debe  de seguir pidiendome leer numero.

Por ejemplo si hago asi:
Código
  1. do{
  2. do{
  3. numero = ingreso.nextInt();
  4. }while(numero == 0);
  5. }while(numero > 10000);

Hace correctamente, pero mi pregunta es por que no puedo hacerlo solo en un while?

Saludos.
4  Foros Generales / Foro Libre / Iron Man y Oracle Cloud en: 5 Mayo 2013, 19:19 pm
Hola a la gente despues de tiempos.
Estoy empezando con java y ando suscrito algunos magazines de Java.
Pero mi sorpresa fue encontrar un articulo en el Magazine de oracle de la edicion de mayo. Donde Hablan sobre Iron Man donde Stark Industries usa un servicio de Oracle, 'Oracle Cloud'.

Estuve leyendo y me pregunataba que pasaria si esto fuera real, sobre todo estado pendiente con los problemas de seguridad en Java y si tomarian controlando Stark Industries!  :o

Y que pasaria con Jarvis, el sistema de inteligencia artificial del exso-esqueleto de Iron Man, argumentando un disparate no croe use Java  :silbar:

Dejo el PDF donde se habla al respecto.

Engineered For Heroes
5  Programación / Programación C/C++ / compresion - encriptacion con huffman - duda en: 10 Julio 2012, 04:31 am
Hola a todos estoy analizando un codigo que consegui sobre este algoritmo de huffman, me intereso el tema de compresion, y despues de seguir  esta lectura pues observe que tambien era posible el cifrado de datos, asi que los puse en marcha y algunas pequeñas modificaciones que realize, aunque sigue siendo el mismo code.

Código
  1. #include <iostream>
  2. #include <cstdio>
  3.  
  4. using namespace std;
  5.  
  6. typedef struct _nodo{
  7.   char letra;
  8.   int frecuencia;
  9.  
  10.   _nodo *sig;
  11.   _nodo *cero;
  12.   _nodo *uno;
  13. } tipoNodo;
  14.  
  15.  
  16. typedef struct _tabla{
  17.   char letra;
  18.   unsigned long int bits;
  19.   char nbits;
  20.   _tabla *sig;
  21. } tipoTabla;
  22.  
  23. tipoTabla *Tabla;
  24.  
  25. void Cuenta(tipoNodo* &Lista, char c);
  26. void Ordenar(tipoNodo* &Lista);
  27. void InsertarOrden(tipoNodo* &Cabeza, tipoNodo *e);
  28. void BorrarArbol(tipoNodo *n);
  29. void CrearTabla(tipoNodo *n, int l, int v);
  30. void InsertarTabla(char c, int l, int v);
  31. tipoTabla *BuscaCaracter(tipoTabla *Tabla, char c);
  32.  
  33. int main(int argc, char *argv[]){
  34.   tipoNodo *Lista;
  35.   tipoNodo *Arbol;
  36.  
  37.   FILE *fe, *fs;
  38.   char c;
  39.   tipoNodo *p;
  40.   tipoTabla *t;
  41.   int nElementos;
  42.   long int Longitud = 0;
  43.  
  44.   unsigned long int dWORD;
  45.   int nBits;
  46.  
  47.   if(argc < 3)
  48.   {
  49.      cout<<"\n\tUsar:\n\t"<<argv[0]<<" <fichero_entrada> <fichero_salida>\n";
  50.      return 1;
  51.   }
  52.  
  53.   Lista = NULL;
  54.  
  55.   fe = fopen(argv[1], "r");
  56.   while((c = fgetc(fe)) != EOF){
  57.      Longitud++;
  58.      Cuenta(Lista, c);
  59.   }
  60.   fclose(fe);
  61.  
  62.   Ordenar(Lista);
  63.  
  64.   Arbol = Lista;
  65.   while(Arbol && Arbol->sig){
  66.      p = new(tipoNodo);
  67.      p->letra = 0;
  68.      p->uno = Arbol;
  69.      Arbol = Arbol->sig;
  70.      p->cero = Arbol;
  71.      Arbol = Arbol->sig;
  72.      p->frecuencia = p->uno->frecuencia + p->cero->frecuencia;
  73.      InsertarOrden(Arbol, p);
  74.   }
  75.  
  76.   Tabla = NULL;
  77.   CrearTabla(Arbol, 0, 0);
  78.  
  79.   fs = fopen(argv[2], "wb");
  80.  
  81.   fwrite(&Longitud, sizeof(long int), 1, fs);
  82.  
  83.   nElementos = 0;
  84.   t = Tabla;
  85.   while(t){
  86.      nElementos++;
  87.      t = t->sig;
  88.   }
  89.  
  90.   fwrite(&nElementos, sizeof(int), 1, fs);
  91.  
  92.   t = Tabla;
  93.   while(t)
  94.   {
  95.      fwrite(&t->letra, sizeof(char), 1, fs);
  96.      fwrite(&t->bits, sizeof(unsigned long int), 1, fs);
  97.      fwrite(&t->nbits, sizeof(char), 1, fs);
  98.      t = t->sig;
  99.   }
  100.  
  101.  
  102.   fe = fopen(argv[1], "r");
  103.   dWORD = 0;
  104.   nBits = 0;
  105.   while((c = fgetc(fe)) != EOF)
  106.   {
  107.  
  108.      t = BuscaCaracter(Tabla, c);
  109.  
  110.      while(nBits + t->nbits > 32){
  111.         c = dWORD >> (nBits-8);
  112.         fwrite(&c, sizeof(char), 1, fs);
  113.         nBits -= 8;
  114.      }
  115.      dWORD <<= t->nbits;
  116.      dWORD |= t->bits;
  117.      nBits += t->nbits;
  118.   }
  119.  
  120.   while(nBits>0){
  121.      if(nBits>=8) c = dWORD >> (nBits-8);
  122.      else c = dWORD << (8-nBits);
  123.      fwrite(&c, sizeof(char), 1, fs);
  124.      nBits -= 8;
  125.   }
  126.  
  127.   fclose(fe);
  128.   fclose(fs);
  129.  
  130.  
  131.   BorrarArbol(Arbol);
  132.  
  133.   while(Tabla){
  134.      t = Tabla;
  135.      Tabla = t->sig;
  136.      delete(t);
  137.   }
  138.  
  139.   return 0;
  140. }
  141.  
  142. void Cuenta(tipoNodo* &Lista, char c){
  143.   tipoNodo *p, *a, *q;
  144.  
  145.   if(!Lista){
  146.      Lista = new(tipoNodo);
  147.      Lista->letra = c;
  148.      Lista->frecuencia = 1;
  149.      Lista->sig = Lista->cero = Lista->uno = NULL;
  150.   }
  151.   else{
  152.      p = Lista;
  153.      a = NULL;
  154.      while(p && p->letra < c){
  155.         a = p;
  156.         p = p->sig;
  157.      }
  158.  
  159.      if(p && p->letra == c) p->frecuencia++;
  160.      else{
  161.         q = new(tipoNodo);
  162.         q->letra = c;
  163.         q->frecuencia = 1;
  164.         q->cero = q->uno = NULL;
  165.         q->sig = p;
  166.         if(a) a->sig = q;
  167.         else Lista = q;
  168.      }
  169.   }
  170. }
  171.  
  172. void Ordenar(tipoNodo* &Lista){
  173.   tipoNodo *Lista2, *a;
  174.  
  175.   if(!Lista) return;
  176.   Lista2 = Lista;
  177.   Lista = NULL;
  178.   while(Lista2){
  179.      a = Lista2;
  180.      Lista2 = a->sig;
  181.      InsertarOrden(Lista, a);
  182.   }
  183. }
  184.  
  185. void InsertarOrden(tipoNodo* &Cabeza, tipoNodo *e)
  186. {
  187.   tipoNodo *p, *a;
  188.  
  189.   if(!Cabeza){
  190.      Cabeza = e;
  191.      Cabeza->sig = NULL;
  192.   }
  193.   else{
  194.       p = Cabeza;
  195.       a = NULL;
  196.       while(p && p->frecuencia < e->frecuencia){
  197.          a = p;
  198.          p = p->sig;
  199.       }
  200.  
  201.       e->sig = p;
  202.       if(a) a->sig = e;
  203.       else Cabeza = e;
  204.    }
  205. }
  206.  
  207. void CrearTabla(tipoNodo *n, int l, int v){
  208.   if(n->uno)  CrearTabla(n->uno, l+1, (v<<1)|1);
  209.   if(n->cero) CrearTabla(n->cero, l+1, v<<1);
  210.   if(!n->uno && !n->cero) InsertarTabla(n->letra, l, v);
  211. }
  212.  
  213. void InsertarTabla(char c, int l, int v){
  214.   tipoTabla *t, *p, *a;
  215.  
  216.   t = new(tipoTabla);
  217.   t->letra = c;
  218.   t->bits = v;
  219.   t->nbits = l;
  220.  
  221.   if(!Tabla){
  222.      Tabla = t;
  223.      Tabla->sig = NULL;
  224.   }
  225.   else{
  226.       p = Tabla;
  227.       a = NULL;
  228.       while(p && p->letra < t->letra){
  229.          a = p;
  230.          p = p->sig;
  231.       }
  232.  
  233.       t->sig = p;
  234.       if(a) a->sig = t;
  235.       else Tabla = t;
  236.    }
  237. }
  238.  
  239. tipoTabla *BuscaCaracter(tipoTabla *Tabla, char c){
  240.   tipoTabla *t;
  241.  
  242.   t = Tabla;
  243.   while(t && t->letra != c) t = t->sig;
  244.   return t;
  245. }
  246.  
  247. void BorrarArbol(tipoNodo *n){
  248.   if(n->cero) BorrarArbol(n->cero);
  249.   if(n->uno)  BorrarArbol(n->uno);
  250.   delete(n);
  251. }

Ahora estuve viendo que la logica era comprimir por que coge solo un digito y si se repite a esta le aumenta la cantidad de veces en un apartado de frecuencias, entonces seguido seria pasarle al arbol, para que reduzca el tamanño en Bits.

Pero note que en una frase de 15 bits, esta llegaba a 72 Bits. (nom comprime ...)
Luego observe que el texto guardado ya no es legible, no se si esto se deba a las funciones archivos:
Código
  1.   fs = fopen(argv[2], "wb");
Lo asumi que tal vez este cifrado pero recorde que en archivos la escritura tambien se puede hacer en binario, cosa que aun no me queda, si deberia cifrar comprimir ?

A bueno puse algunas pruebas como resultados en este topic: Cifrando con Huffman - Duda

Saludos.
6  Seguridad Informática / Hacking / cifrando con huffman - duda en: 9 Julio 2012, 01:55 am
Hola a todos estoy tratando de salir de dudas del algoritmo de huffman.
Me da entender que con este algoritmo puedo comprimir el tamaño de la frase en texto plano y dicho sea de paso pueda cifrar/cifrar la informacion.

Ahora luego de encriptarlo vi que si era posible leer  al supuesto archivo cifrado asi que decidi usar una forma de leer el archivo asi que use hexdump
Código
  1. hexdump -C cifrado

y pude ver en el siquiete resultado:
Código
  1. 00000000  0f 00 00 00 0c 00 00 00  0a 02 00 00 00 04 31 03  |..............1.|
  2. 00000010  00 00 00 04 61 00 00 00  00 04 62 01 00 00 00 04  |....a.....b.....|
  3. 00000020  64 06 00 00 00 04 65 03  00 00 00 02 6f 07 00 00  |d.....e.....o...|
  4. 00000030  00 04 70 04 00 00 00 04  72 05 00 00 00 04 74 04  |..p.....r.....t.|
  5. 00000040  00 00 00 03 75 0a 00 00  00 04 78 0b 00 00 00 04  |....u.....x.....|
  6. 00000050  9d c7 6d 16 b1 03 20                              |..m... |
  7. 00000057

como se puede ver es posible la lectura de los caracteres usados en la supuesta encriptacion.
la frase usada fue: pruebadetexto1

la duda es:
. en realidad esto esta cifrado?
. por que puedo el texto si la idea de huffman es convertilo a binario?

lo digo por que con usando archivos en C,  los textos usados para guardarlos en texto plano se guardan en binario y son ilegibles al leerlo.

Saludos.
7  Programación / Programación C/C++ / Vision Computacional - Orientacion con AMD/Intel en: 29 Junio 2012, 06:21 am
Hola a todos :)

Luego de ir vagando en la programacion encontre algo interesante como es el tema de 'Computer Vision'.
Ahora estuve viendo una manera practica de aprender sobre este area, ya que mi reto es poder crear una aplicacion con reconocimiento de un dedo o la mano para manipular las tareas basicas de la PC.

Pues encontre que una practica era usar librerias como OpenCV, con C/C++. Ahora pues esta libreria esta liberada por Intel, Asi que aqui el problema:
Sera compatible con los procesadores AMD?
Podria trabajar en el futuro con CUDA?

Pues necesito alguna orientacion, pues ando estancado en el tema, y estoy considerando solo comprar Intel para estas finalidades.
O a lo mejor hay una forma de tambien hacer Computer Vision en AMD.

Saludos.
8  Programación / Programación C/C++ / ingresando datos unidimensionalmente en: 2 Mayo 2012, 00:22 am
Holas a todos, no se si este bien de la cabeza pero estoy tratando de ingresar n datos en un arreglo; pero sin conocer el limite de comparacion, dejo mi idea que trato de correrlo. aclaro: aun no funciona pero se entendera mi idea.

Código
  1. #include<math.h>
  2.  
  3. double leer(double x[]);
  4.  
  5. int main(){
  6.    double x[]={0};
  7.  
  8.    leer(x);
  9.  
  10. }
  11.  
  12. double leer(double data[]){
  13.    int i=0;
  14.    char opc;
  15.  
  16.    do{
  17.        printf("\nAdd: ");
  18.        scanf("%lf", &data[i]);
  19.        i++;
  20.        printf("\nGoing add data (s/n): ");
  21.        scanf("%c", &opc);
  22.    }while(opc != 's' || opc!='S');
  23.  
  24.    return data[i];
  25. }

Saludos
9  Programación / Programación C/C++ / redondeado en C con funciones. en: 1 Mayo 2012, 18:55 pm
tratando de realizar el siguiente problema:
Una aplicacion de funcion floor es la de redondear un valor al entero mas cercano, la instruccion:

Código
  1. y = floor(x + .5);

redondea el numero x al entero mas cercano, y asigna el resultado a y. Escriba un programa que lea varios numeros al entero mas cercano, Por cada uno de los numeros procesados, imprima el numero original y el numero redondeado.

estoy tratando de escribir un modelo base:

Código
  1. int main(){
  2.    float x;
  3.    int y;
  4.  
  5.    printf("\nAdd: ");
  6.    scanf("%f", &x);
  7.  
  8.    y = x+.5;
  9.    printf("\nThe Value x is: %d", y);
  10. }

Ahora estuve adaptandolo en un modelo base de funciones:

Código
  1. #include<stdio.h>
  2.  
  3. float floor(float);
  4.  
  5. int main(){
  6.    float x;
  7.    int y;
  8.  
  9.    printf("\nAdd: ");
  10.    scanf("%f", &x);
  11.  
  12.    y = floor(x+.5);
  13.  
  14.    printf("\nValues is: %d", y);
  15. }
  16.  
  17. float floor(float value){
  18.    return value;
  19. }

Código:
si x=3.5 entonces resulta y=4
si x=2.3 entonces resulta y=2

no se si esto este bien, por que espera la suma del .5, por ejemplo del 2.3 + 0.5 -> 2.8 entonces y deberia tener -> 3

alguna explicacion o necesito revisar la teoria de la aritmetica ?

Claro que si corren en un compilador ansi este vota warning! :/
10  Comunicaciones / Redes / Server 2003 no conecta a servicios de red en: 17 Septiembre 2011, 01:49 am
Hola a todos.

Tengo un problema con un windows server 2003, que tiene un problema grave en la conexion externa por asi decir, no coneta a internet con I.E.

Hago las pruebas con un ping a mi DNS Primario: ping xxx.xxx.xxx.xxx
responde efectivamente, pero si hago un ping a google por ejemplo este no conecta, saliendo perdida de conexion.

Bien ahora todo esto se origino por un problema ajeno, para mecionarlo se queria acceder al router por telnet al puerto 23, pero este no conectaba. Entonces fue cuando se decidio comprobar con el comando: netsh winsock reset

Desde este entonces lanzo errores de servicio, y fue cuando observe que el ping al localhost no conectaba, decidi reinstalar la tarjeta de red. Al terminar de instalar configure mi IP local con su respectivo DNS.

Ahora el problema que se presenta hasta el momento es que solo conecta al servidor DNS, no conecta a otros servicios externos que usan la red externa como programa I.E, Firefox, O programas de conexion remota como TeamViewer o DynDNS.

Bueno muy extenso el problema.
Saludos.
Páginas: [1] 2 3
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines