• Viernes 19 de Abril de 2024, 08:14

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - sergio_

Páginas: [1]
1
C/C++ / Problema ASCII - Caracteres Con Tilde
« en: Sábado 29 de Octubre de 2011, 03:43 »
Buen dia gente!

Vengo a consultar sobre un problema que tengo con un tp T_T

Estoy en "C"
Resulta que estoy levantado en un buffer contenido de archivos de texto plano, y la idea es ir obteniendo palabras a partir del buffer
Los archivos de texto pueden estar en cualquier idioma

Por ejemplo:

Buffer = "Hola , cómo andan? todo bien gente?, espero que si! ;)"

Filtrando el buffer debería obtener los siguientes terminos

HOLA, COMO, ANDAN, TODO, BIEN, GENTE, ESPERO, QUE, SI

El filtrado de los signos de puntuación ya lo tengo, tmb manejo el tema de si el buffer me corta una palabra por la mitad y todo eso.
Para el filtrado lo que hago es fijarme que el caracter del buffer (Buffer[Pos]) pertenezca a los intervalos del Ascii  [65,90] ^ [97,122] ^ [128,165]

(Segun la tabla del ascii)
El intervalo [65,90] es para las minusculas
El intervalo [97,122] es para las mayusculas
El intervalo [128,165] es para las tildes y otras cosas raras

el problema que tengo con los tildes es que el codigo en 8 bits no pertenece a ese intervalo, o sea, ni siquiera son 8 bits por lo que veo

les dejo un ejemplo del codigo para ver los caracteres

Código: C
  1.  
  2. //Un Buffer levantado del disco que vale = Cómo estás
  3.         printf("Entre a obtener terminos con el buffer %s\n",buffer);
  4.         while (i != caractleidos){
  5.                 printf ("Caracter del buffer %c\n",buffer[i]);
  6.                 printf ("ASCII Caracter del buffer (sin signo) %u\n",buffer[i]);
  7.                 printf ("ASCII Caracter del buffer (con signo) %u\n",buffer[i]);
  8.                 i++;
  9.         }
  10.  
  11. //Salida por consola:
  12. Caracter del buffer C
  13. ASCII Caracter del buffer (sin signo) 67
  14. ASCII Caracter del buffer (con signo) 67
  15. Caracter del buffer
  16. ASCII Caracter del buffer (sin signo) 4294967235
  17. ASCII Caracter del buffer (con signo) -61
  18. Caracter del buffer �
  19. ASCII Caracter del buffer (sin signo) 4294967219
  20. ASCII Caracter del buffer (con signo) -77
  21. Caracter del buffer m
  22. ASCII Caracter del buffer (sin signo) 109
  23. ASCII Caracter del buffer (con signo) 109
  24. Caracter del buffer o
  25. ASCII Caracter del buffer (sin signo) 111
  26. ASCII Caracter del buffer (con signo) 111
  27. Caracter del buffer  
  28. ASCII Caracter del buffer (sin signo) 32
  29. ASCII Caracter del buffer (con signo) 32
  30. Caracter del buffer e
  31. ASCII Caracter del buffer (sin signo) 101
  32. ASCII Caracter del buffer (con signo) 101
  33. Caracter del buffer s
  34. ASCII Caracter del buffer (sin signo) 115
  35. ASCII Caracter del buffer (con signo) 115
  36. Caracter del buffer t
  37. ASCII Caracter del buffer (sin signo) 116
  38. ASCII Caracter del buffer (con signo) 116
  39. Caracter del buffer
  40. ASCII Caracter del buffer (sin signo) 4294967235
  41. ASCII Caracter del buffer (con signo) -61
  42. Caracter del buffer �
  43. ASCII Caracter del buffer (sin signo) 4294967201
  44. ASCII Caracter del buffer (con signo) -95
  45. Caracter del buffer s
  46. ASCII Caracter del buffer (sin signo) 115
  47. ASCII Caracter del buffer (con signo) 115
  48. Caracter del buffer
  49.  
  50.  
  51.  

Por lo que veo es como que tiene un flag adelante, o algo por el estilo y despues viene un caracter basura o algo asi

proba poniendo unsigned char, y me sigue pasando lo mismo pero con distintos numeros

si alguien me puede dar una mano estaria agradecido!
 



2
C/C++ / Re:programacion grafica en visual c++?
« en: Sábado 29 de Octubre de 2011, 03:05 »
Buenas, necesitarias instalarte las liberias:

OpenGl , Glut, Glu32, FreeGlut --> Los nombres pueden ser que no sean asi ajja pasa que hace mucho no las uso

Un buen libro para aprender es
Graficos por computadora con OpenGl

Es largo, y necesitas una base mas o menos solida de analisis matematico y algebra, pero sirve mucho ^ ^

3
Hardware / ¿Problema de Hardware?
« en: Martes 18 de Octubre de 2011, 14:28 »
Buen dia gente, la verdad que no sabia si postear esto aca o no, porque en realidad no se que es lo que me esta pasando.

Les comento mi situación, yo tengo en la pc Windows Xp, con un Ubuntu virtualizado. Siempre apago la pc, no suelo tenerla prendida cuando me voy a acostar, el otro dia yo no estaba y la deje encendida en Ubuntu, y mi hermano me apago la maquina de forma forzosa (no se si la desenfucho, apago la zapatilla, o la apago directamente desde el cpu, hoy mismo averiguo esto). La cosa es que me esta tirando una serie de errores desde ese dia.

En ubuntu, cada vez que prendo dice unos errores, dice algo de "disabling IRQ #18", estuve buscando de esto pero no encontré demasiado con respecto a lo mio, y cada un cierto periodo X se tilda, titilan las luces del teclado y se reinicia la maquinal, X no es un tiempo fijo, pueden ser dos horas, 20 min, o 10 horas.

No habia entrado a windows desde ese día, hoy entre y me esta pidiendo la reactivacion de windows, busque por internet y me dice que esto puede ser por haber cambiando el disco, o la memoria según este link
"http://windows.microsoft.com/es-ES/windows-vista/Activating-Windows-frequently-asked-questions"

¿¿Alguno tiene idea de que puede haber pasado??

Bueno gente, desde ya muchas gracias!

4
C/C++ / Re:Violacion de segmento al modificar el contenido de un puntero
« en: Lunes 17 de Octubre de 2011, 11:54 »
Me acabo de dar cuenta de lo que pasaba :P


yo queria hacer

La tabla con un reg

entonces la forma correcta de hacerlo hubiera sido:

Código: C
  1.         tablaOF* tabla = (tablaOF*)malloc(sizeof(tablaOF));
  2.         tabla->registros = (regOF*)malloc(sizeof(regOF));
  3.  

Al hacer esto, estoy declarando un puntero del tipo tablaOF, que apunta a un lugar en memoria donde  tiene espacio para el contenido de la tabla
lo mismo con tabla->registros, es un puntero que apunta a un lugar de la memoria que puede tener los datos que lleva.

Igual corríjanme si estoy mal xD

5
C/C++ / Re:Si Alguien Puede Entender Este Programa!!!!!!!!!!!
« en: Lunes 17 de Octubre de 2011, 01:14 »
mmm... A ver si sirve algo lo que digo xD



Entiendo que la idea es hacer alguna estructura que te permita almacenar bancos e informacion respecto a esto.

Por ejemplo

Tenes un listado de Bancos
Cada banco tiene sucursales y tipos de cuentas con las que trabaja, donde cada sucursal posee varios clientes que tienen "ape y nombre, dni, cuil, etc"
Cada banco tiene un gerente ( o u gerente por sucursal no se como es la jerarquia)
e ir mirando cosas asi, y despues plantearte como resolver las consultas y demas


no se, asi por arriba por ejemplo algo asi

Listado de bancos -->Banco A, B, C, ...Etc

un Banco{
 Gerente
 Listado de sucursales
 Tipos de cuenta con los que trabaja
 Codigo de banco
 etc
}

Sucursal {
  Listado de clientes
  Algo mas  (no se que .P )
}

Clientes{
 Ap y Nomb
 Dni
 Cuit
¿ Listado de sucursales ? --> Por si accedes por nombre de cliente y queres saber en que sucursales esta, ¿Puede estar en varias sucursales un msmo cliente?? (no se :P )
}

y no se,  algo asi, armate primero un diagrama de como seria todo.
y en base a las consultas, altas , bajas y demas, ver como ir haciendo para obtener toda esa inf

Por ejemplo no se, al agregar un nuevo banco o al agregar cientes a una sucursal, o dar de baja, cosas asi

Es todo un tema xD

Espero te sirva de algo esto

6
C/C++ / Re:Violacion de segmento al modificar el contenido de un puntero
« en: Lunes 17 de Octubre de 2011, 01:00 »
Buenas!, volvi a la red, gracias por la ayuda!

Me olvide del "/0" xD
y sii, leyendo despues me di cuenta de lo que estaba haciendo mal, pasa que hace mucho no toco C T_T jajaj

Ya que estoy comento otra duda que tengo con respecto a la mem dinamica.

Yo tengo esto

Código: C
  1. typedef struct regOf{
  2.  
  3.         unsigned int offset;
  4.         unsigned int frec;
  5.  
  6. }regOF;
  7.  
  8. typedef struct TablaOffFrec{
  9.  
  10.         //En caso que la cantidad inicial de registros no sea suficiente y tenga que reallocar registros en la tabla
  11.         //Necesito saber cuando las recorra cuantos registros tiene la tabla en definitiva para serializar
  12.         unsigned int cantRegFinal;
  13.         char* nombArch;
  14.         //La tabla es un conjunto de registros
  15.         regOF* registros;
  16. }tablaOF;
  17.  
  18.  
  19.  
  20. int main(){
  21.         tablaOF* tabla = (tablaOF*)malloc(sizeof(tablaOF*));
  22.         tabla->registros = (regOF*)malloc(sizeof(regOF*));
  23.  
  24.         tabla->registros->offset=0;
  25.         tabla->registros->frec=10;
  26.  
  27.         printf("offset = %u\n",tabla->registros->offset);
  28.         printf("frec = %u\n",tabla->registros->frec);
  29.  
  30.         free(tabla->registros);
  31.         free(tabla);
  32. }
  33.  
  34.  
  35.  

Al mostrar por pantalla los valores se muestran bien. Pero al usar el valgrind para comprobar si pierdo memoria obtengo lo siguiente

Código: C
  1. ==9496== Memcheck, a memory error detector
  2. ==9496== Copyright (C) 2002-2010, and GNU GPL'd, by Julian Seward et al.
  3. ==9496== Using Valgrind-3.6.1 and LibVEX; rerun with -h for copyright info
  4. ==9496== Command: ./prueba
  5. ==9496==
  6. ==9496== Invalid write of size 4
  7. ==9496==    at 0x804845F: main (prueba.c:64)
  8. ==9496==  Address 0x419e030 is 4 bytes after a block of size 4 alloc'd
  9. ==9496==    at 0x4026864: malloc (vg_replace_malloc.c:236)
  10. ==9496==    by 0x8048448: main (prueba.c:63)
  11. ==9496==
  12. ==9496== Invalid read of size 4
  13. ==9496==    at 0x8048466: main (prueba.c:66)
  14. ==9496==  Address 0x419e030 is 4 bytes after a block of size 4 alloc'd
  15. ==9496==    at 0x4026864: malloc (vg_replace_malloc.c:236)
  16. ==9496==    by 0x8048448: main (prueba.c:63)
  17. ==9496==
  18. ==9496==
  19. ==9496== HEAP SUMMARY:
  20. ==9496==     in use at exit: 0 bytes in 0 blocks
  21. ==9496==   total heap usage: 2 allocs, 2 frees, 8 bytes allocated
  22. ==9496==
  23. ==9496== All heap blocks were freed -- no leaks are possible
  24. ==9496==
  25. ==9496== For counts of detected and suppressed errors, rerun with: -v
  26. ==9496== ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 11 from 6)
  27.  

El error "write" se da al hacer el malloc de tabla->registros, y el "read" al hacer el free de lo mismo.

La idea mia es, poner en la tabla varios registros e ir llenandolos, pero detecte esto asiq no avanzo xD


Bueno, desde ya muchas gracias!!


7
C/C++ / Violacion de segmento al modificar el contenido de un puntero
« en: Sábado 24 de Septiembre de 2011, 02:56 »
Buenas gente, les paso a comentar lo que me ocurre y queria saber si alguien me puede decir porque me pasa esto.

Código: C
  1.         char buffer[8] = "hola com";
  2.         char* buffer2 = "hola com";
  3.  
  4.         buffer[0]='a';
  5.         buffer2[0] = 'a';
  6.  

Para el caso en que escribo buffer, anda lo mas bien, pero para el caso en que quiero escribir buffer2, me da violacion de segmento. No se si sera algo propio del ambiente unix o que, pero no se porque me ocurre esto. estoy modificando el contenido del puntero nada mas.

Tmb me ocurre en este caso:

Código: C
  1.  
  2. int* a = 123;
  3. *a = 245;
  4.  
  5.  

Bueno, si alguien me puede decir cual es el error se agradece.

Páginas: [1]