|
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: char texto1[40], texto2[40]... ... ... printf("Sus 4 primeras letras son %s\n", texto3 );
Asi que como observer arreglos, quice hacerlo con punteros y ver su funcionamiento. #include <stdio.h> #include <stdlib.h> #include <string.h> int main(void) { char* saludo; int n; printf("Cuantas letras desea ver: "); char* copySaludo = malloc((strlen(saludo ) + 1) * sizeof(char)); printf("Resultado con los %d primeras letras: %s\n", n , copySaludo ); return 0; }
Lo curioso es que a veces tengo resultados muy fuera de si: Texto: hello, world! Cuantas letras desea ver: 6 Resultado con los 6 primeras letras: hello,> Texto: hello, world! Cuantas letras desea ver: 7 Resultado con los 7 primeras letras: hello, 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: Carrera Estudiante ------- ---------- idCarrera PK idEstudiante PK Titulo idCarrera FK Nombres Apellido SELECT Estudiante.idCarrera AS [Carrera], Estudiante.Nombres, Estudiante.Apellido FROM Estudiante; SELECT Titulo FROM Carrera WHERE Carrera.idCarrera LIKE '%CS%';
Carrera Nombres Apellidos IS Jeff Parker CS Mat Brown Titulo Ciencias de Computacion SELECT Estudiante.idCarrera AS [Carrera], Estudiante.Nombres, Estudiante.Apellido FROM Estudiante WHERE Estudiante.idCarrera = (SELECT Carrera.Titulo FROM Carrera WHERE Carrera.idCarrera LIKE '%CS%');
Carrera Nombres Apellidos
Aqui la informacion me aparece en blanco! Lo que quiero lograr es algo parecido esto 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. do{ numero = ingresa.nextInt(); }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: do{ do{ numero = ingreso.nextInt(); }while(numero == 0); }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! Y que pasaria con Jarvis, el sistema de inteligencia artificial del exso-esqueleto de Iron Man, argumentando un disparate no croe use Java 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. #include <iostream> #include <cstdio> using namespace std; typedef struct _nodo{ char letra; int frecuencia; _nodo *sig; _nodo *cero; _nodo *uno; } tipoNodo; typedef struct _tabla{ char letra; unsigned long int bits; char nbits; _tabla *sig; } tipoTabla; tipoTabla *Tabla; void Cuenta(tipoNodo* &Lista, char c); void Ordenar(tipoNodo* &Lista); void InsertarOrden(tipoNodo* &Cabeza, tipoNodo *e); void BorrarArbol(tipoNodo *n); void CrearTabla(tipoNodo *n, int l, int v); void InsertarTabla(char c, int l, int v); tipoTabla *BuscaCaracter(tipoTabla *Tabla, char c); int main(int argc, char *argv[]){ tipoNodo *Lista; tipoNodo *Arbol; FILE *fe, *fs; char c; tipoNodo *p; tipoTabla *t; int nElementos; long int Longitud = 0; unsigned long int dWORD; int nBits; if(argc < 3) { cout<<"\n\tUsar:\n\t"<<argv[0]<<" <fichero_entrada> <fichero_salida>\n"; return 1; } Lista = NULL; fe = fopen(argv[1], "r"); while((c = fgetc(fe)) != EOF){ Longitud++; Cuenta(Lista, c); } fclose(fe); Ordenar(Lista); Arbol = Lista; while(Arbol && Arbol->sig){ p = new(tipoNodo); p->letra = 0; p->uno = Arbol; Arbol = Arbol->sig; p->cero = Arbol; Arbol = Arbol->sig; p->frecuencia = p->uno->frecuencia + p->cero->frecuencia; InsertarOrden(Arbol, p); } Tabla = NULL; CrearTabla(Arbol, 0, 0); fs = fopen(argv[2], "wb"); fwrite(&Longitud, sizeof(long int), 1, fs); nElementos = 0; t = Tabla; while(t){ nElementos++; t = t->sig; } fwrite(&nElementos, sizeof(int), 1, fs); t = Tabla; while(t) { fwrite(&t->letra, sizeof(char), 1, fs); fwrite(&t->bits, sizeof(unsigned long int), 1, fs); fwrite(&t->nbits, sizeof(char), 1, fs); t = t->sig; } fe = fopen(argv[1], "r"); dWORD = 0; nBits = 0; while((c = fgetc(fe)) != EOF) { t = BuscaCaracter(Tabla, c); while(nBits + t->nbits > 32){ c = dWORD >> (nBits-8); fwrite(&c, sizeof(char), 1, fs); nBits -= 8; } dWORD <<= t->nbits; dWORD |= t->bits; nBits += t->nbits; } while(nBits>0){ if(nBits>=8) c = dWORD >> (nBits-8); else c = dWORD << (8-nBits); fwrite(&c, sizeof(char), 1, fs); nBits -= 8; } fclose(fe); fclose(fs); BorrarArbol(Arbol); while(Tabla){ t = Tabla; Tabla = t->sig; delete(t); } return 0; } void Cuenta(tipoNodo* &Lista, char c){ tipoNodo *p, *a, *q; if(!Lista){ Lista = new(tipoNodo); Lista->letra = c; Lista->frecuencia = 1; Lista->sig = Lista->cero = Lista->uno = NULL; } else{ p = Lista; a = NULL; while(p && p->letra < c){ a = p; p = p->sig; } if(p && p->letra == c) p->frecuencia++; else{ q = new(tipoNodo); q->letra = c; q->frecuencia = 1; q->cero = q->uno = NULL; q->sig = p; if(a) a->sig = q; else Lista = q; } } } void Ordenar(tipoNodo* &Lista){ tipoNodo *Lista2, *a; if(!Lista) return; Lista2 = Lista; Lista = NULL; while(Lista2){ a = Lista2; Lista2 = a->sig; InsertarOrden(Lista, a); } } void InsertarOrden(tipoNodo* &Cabeza, tipoNodo *e) { tipoNodo *p, *a; if(!Cabeza){ Cabeza = e; Cabeza->sig = NULL; } else{ p = Cabeza; a = NULL; while(p && p->frecuencia < e->frecuencia){ a = p; p = p->sig; } e->sig = p; if(a) a->sig = e; else Cabeza = e; } } void CrearTabla(tipoNodo *n, int l, int v){ if(n->uno) CrearTabla(n->uno, l+1, (v<<1)|1); if(n->cero) CrearTabla(n->cero, l+1, v<<1); if(!n->uno && !n->cero) InsertarTabla(n->letra, l, v); } void InsertarTabla(char c, int l, int v){ tipoTabla *t, *p, *a; t = new(tipoTabla); t->letra = c; t->bits = v; t->nbits = l; if(!Tabla){ Tabla = t; Tabla->sig = NULL; } else{ p = Tabla; a = NULL; while(p && p->letra < t->letra){ a = p; p = p->sig; } t->sig = p; if(a) a->sig = t; else Tabla = t; } } tipoTabla *BuscaCaracter(tipoTabla *Tabla, char c){ tipoTabla *t; t = Tabla; while(t && t->letra != c) t = t->sig; return t; } void BorrarArbol(tipoNodo *n){ if(n->cero) BorrarArbol(n->cero); if(n->uno) BorrarArbol(n->uno); delete(n); }
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: 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 - DudaSaludos.
|
|
|
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 hexdump -C cifrado
y pude ver en el siquiete resultado: 00000000 0f 00 00 00 0c 00 00 00 0a 02 00 00 00 04 31 03 |..............1.| 00000010 00 00 00 04 61 00 00 00 00 04 62 01 00 00 00 04 |....a.....b.....| 00000020 64 06 00 00 00 04 65 03 00 00 00 02 6f 07 00 00 |d.....e.....o...| 00000030 00 04 70 04 00 00 00 04 72 05 00 00 00 04 74 04 |..p.....r.....t.| 00000040 00 00 00 03 75 0a 00 00 00 04 78 0b 00 00 00 04 |....u.....x.....| 00000050 9d c7 6d 16 b1 03 20 |..m... | 00000057
como se puede ver es posible la lectura de los caracteres usados en la supuesta encriptacion. la frase usada fue: pruebadetexto1la 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. #include<math.h> double leer(double x[]); int main(){ double x[]={0}; leer(x); } double leer(double data[]){ int i=0; char opc; do{ i++; printf("\nGoing add data (s/n): "); }while(opc != 's' || opc!='S'); return data[i]; }
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:
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: int main(){ float x; int y; y = x+.5; printf("\nThe Value x is: %d", y ); }
Ahora estuve adaptandolo en un modelo base de funciones: #include<stdio.h> int main(){ float x; int y; } float floor(float value ){ return value; }
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.
|
|
|
|
|
|
|