• Martes 1 de Julio de 2025, 16:33

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 - carmamezo

Páginas: 1 ... 4 5 [6] 7 8 ... 10
126
C/C++ / Re: Como Puedo Hacer Split Windows
« en: Martes 3 de Enero de 2006, 10:49 »
Te dejo el link a una pedazo de página con códigos fuente y ejemplos... el problema es que está en ingles:
Code Guru
Espero que te sirva de ayuda.
Un saludo.  :lightsabre:

127
Programación de Archivos del Sistema / Re: Archivos Inservibles
« en: Martes 3 de Enero de 2006, 09:04 »
Hola, la verdad es que el archivo que mencionas es un archivo comprimido donde se encuentran los drivers que vienen por defecto con windows.   Dices que lo borraste y windows siguió funcionando correctamente.... ¿trataste de instalar algún hardware nuevo tras borrarlo? seguramente que te daría problemas....  Es necesario para la instalación de windows porque si no windows no sería capaz de cargar o manejar el hardware.
La verdad es que es dificil saber que archivos de windows son necesarios y cuales no lo lo son y todavía es más dificil saber para qué los usa windows, es información clasificada (je, je) .... mi consejo, si necesitas espacio compra un disco duro mayor.
Saludos.

128
Microcontroladores / Re: Calentar Un Alambre
« en: Miércoles 28 de Diciembre de 2005, 13:33 »
Hola a todos.... a ver si puedo ayudar en algo....
Como ya se ha mencionado la fórmula teórica para calcular la resistencia de cualquier elemento conductor es la siguiente
R=ro*l/s -> la resistencia es igual a la resistividad (letra griega ro) que tiene el material por la longitud entre la sección del elemento.
Además sabemos que P=I^2*R, esto es la potencia disipada en una resistencia es igual a la intensidad al cuadrado por la resistencia.  Y se sabe que 1w = 0,24cal/seg.
Las resistencias tienen además otra propiedad, que cuando se calientan aumentan su resistencia, lo hacen siguiendo la siguiente fórmula:
AR = R20*AT*alfa
(Voy a explicar la fórmula, porque escribir letras griegas con el teclado es dificil)
AR -> es la variación de resistencia
R20 -> es la resistencia a temperatura ambiente, 20ºC.
AT -> es la variación de la temperatura. temperatura actual de la resistencia - 20ºC.
alfa -> es el coeficiente de temperatura del elemento conductor (resistencia).
Por tanto, como se ha mencionado, existe una variación de temperatura en el elemento conductor según se calienta.
Te dejo aqui algunos coeficientes de temperatura de elementos comunes:
Hierro  0.0050  
Estaño 0.0046
Plomo 0.0042
Zinc 0.0042
Oro 0.0040
Platino 0.0040
Plata 0.0040
Cobre 0.0039
Aluminio 0.0036
Latón 0.0015
Constantan 0.00004
Carbón -0.00045
Pongamos un ejemplo, un hilo de cobre tiene una resistencia de 10ohm a 20ºC, a 50ºC tendrá una variación de resistencia de: 10*(50-20)*0,0039= 1,17ohm.
Por tanto la resistencia del hilo a 50ºC será 11,17ohm.


En fin espero que te sirva de ayuda... por cierto, cuidado con la temperatura de fusión del elemento que intentas calentar y con la intensidad máxima de la fuente (no vayas a quemarla)... quizás deberías poner un potenciómetro en serie para limitar la intensidad que atraviesa el hilo y poco a poco aumentar la intensidad midiendo con un tester para controlar.....
Ya nos contarás qué tal te ha ido.
Un saludo. :lightsabre:

129
C/C++ / Re: Asm Y C
« en: Domingo 4 de Diciembre de 2005, 13:29 »
Todos los compiladores de C admiten sentencias en ensamblador (o eso creo):

En el Visual studio de Microsoft:
agregar lo siguiente:
__asm "instrucción en ensamblador"

en caso de querer insertar varias instrucciones seguidas:
__asm{
"instrucciones en asm"
}

Se pueden usar todas las variables creadas durante el código, ahora bien, no soporta la mayoría de las directivas en macroensamblador.

Si usas otro compilador, investiga un poco, puede que se parezca a lo anterior, en forma de asm("instrucciones en asm") o algo parecido...
Un saludo.

130
C/C++ / Re: Convertir Fecha A Palabras A Traves D Enumeracions
« en: Martes 15 de Noviembre de 2005, 12:57 »
se me ocurre una forma:
Código: Text
  1.  
  2. void main()
  3. {
  4.   char fecha[128],aux[32];
  5.   int aux2;
  6.   char *aux3;
  7.  
  8.   printf("Introduce fecha: ");
  9.   gets(aux);
  10.  
  11.   aux2=atoi(aux);
  12.   sprintf(fecha,"%d de ",aux2);
  13.  
  14.   aux3=strchr(aux,'/');
  15.   aux3+=1;
  16.   aux2=atoi(aux3);
  17.   switch(aux2)
  18.   {
  19.   case 1:
  20.     strcat(fecha,"Enero");
  21.     break;
  22.   case 2:
  23.     strcat(fecha,"Febrero");
  24.     break;
  25.   case 3:
  26.     strcat(fecha,"Marzo");
  27.     break;
  28.   case 4:
  29.     strcat(fecha,"Abril");
  30.     break;
  31.   case 5:
  32.     strcat(fecha,"Mayo");
  33.     break;
  34.   case 6:
  35.     strcat(fecha,"Junio");
  36.     break;
  37.   case 7:
  38.     strcat(fecha,"Julio");
  39.     break;
  40.   case 8:
  41.     strcat(fecha,"Agosto");
  42.     break;
  43.   case 9:
  44.     strcat(fecha,"Septiembre");
  45.     break;
  46.   case 10:
  47.     strcat(fecha,"Octubre");
  48.     break;
  49.   case 11:
  50.     strcat(fecha,"Noviembre");
  51.     break;
  52.   case 12:
  53.     strcat(fecha,"Diciembre");
  54.     break;
  55.   }
  56.   aux3=strchr(aux3,'/');
  57.   aux3+=1;
  58.   aux2=atoi(aux3);
  59.   sprintf(aux3," del %d",aux2);
  60.   strcat(fecha,aux3);
  61.   puts(fecha);
  62.   getchar();
  63. }
  64.  
  65.  
Seguro que hay muchas más formas de hacerlo.
Un saludo.  :lightsabre:

131
C/C++ / Re: Error En Makefile
« en: Martes 15 de Noviembre de 2005, 08:49 »
No tengo ni idea, pero ¿no deberías incluir alguna librería para manejo de ventanas?.  Algo como xwindows.h o algo asi....
Un saludo. :lightsabre:

132
C/C++ / Re: Abrir/crear Excel Desde C++
« en: Lunes 14 de Noviembre de 2005, 20:27 »
Para tratar formatos lo que te he dicho no sirve, es una incógnita cómo se guardan los formatos en los archivos (yo desde luego no tengo ni idea), deberías  usar las herramientas para desarrollar software específico para excell como te contestan en el mismo hilo que se encuentra en Visual C++.
Un saludo.

133
C/C++ / Re: Abrir/crear Excel Desde C++
« en: Lunes 14 de Noviembre de 2005, 09:04 »
Puedes crear un archivo de tipo *.xls
Cada vez que escribas un \t te mueves un cuadro a la derecha, cada vez que escribas \n pasas a la siguiente línea.
Por ejemplo:

FILE *pf;
pf=fopen("ejemplo.xls","w");
fprintf(pf,"1\t2\t3\n4\t5\t6");
fclose(pf);

Si lo abrieras con el excell se leería algo así:
1 2 3
4 5 6
ocupando cada número un cuadrado de excell.

Para abrir el excell lo más sencillo es usar la API de windows y su función CreateProcess() pasándole como argumento la ruta completa al programa excell (C:\\archivos de programa\Microsoft office\office\excell.exe) seguido del nombre (y ruta) del archivo que deseas abrir.
Un saludo.  :lightsabre:

134
Programación en C / Re: Problemas Con El Ccs
« en: Lunes 7 de Noviembre de 2005, 21:37 »
Prueba a reinstalarlo, debería funcionar sin problemas, no es necesario ninguna librería.
Por cierto, has elegido bien en el compilador la opción 14bits??

Un saludo.  :lightsabre:

135
C/C++ / Re: Smtp En C
« en: Lunes 7 de Noviembre de 2005, 21:30 »
Los pasos son los siguientes:
- Conectarse al servidor de SMTP (por ejemplo a hotmail: mail.hotmail.com) mediante el puerto 25.
 El servidor devolverá un número cada vez que se realice una acción, esto es lo que usaremos para comprobar el correcto funcionamiento del sistema, al conectarse el servidor devuelve: 220 y un mensaje de bienvenida

- Lo siguiente es presentarse al servidor con un nombre:
helo pp (con una l)
 El servidor responde 250 y se presenta, en caso de una instrucción erronea devuelve 500 y un mensaje de error

- Ahora hay que darle nuestra dirección de correo, lo mejor es tener una cuenta en ese servidor, asi en hotmail le daremos una cuenta de hotmail.... esto no es siempre asi, hay servidores que admiten enviar mensajes con otras cuentas:
mail from: aaaaaa@correo.com
 El servidor devuelve 250

- Ahora le damos el cuerpo del mensaje, primero le enviamos:
data
 El servidor contesta con 354 y nos dice que terminemos el mensaje con .

- Una vez hecho esto escribimos el mensaje y finalizamos con <enter> un punto como nos ha indicado y <enter> de nuevo.
 El servidor contesta con 250 OK: qued as....

- Ya está, mensaje enviado, escribimos quit y el servidor nos despide mediante un 221 Bye

Todo esto está basado en telnet y puede usarse en C, la única condición es conocer sockets bajo windows o linux y realizar la pertinente conexión TCP/IP.

Un saludo.  :lightsabre:

136
C/C++ / Re: Funciones
« en: Lunes 7 de Noviembre de 2005, 09:26 »
Si declaras un par de vbles auxiliares de tipo int puedes hacer lo siguiente: (recuerda que en las vbles de tipo enteras no se guardan decimales)

int aux1,aux2;

aux1=numero/100;  //de esta forma tendrías en aux1 el valor de las centenas

aux1=numero-(aux1*100);
aux2=aux1/10;  //ahora tendrías en aux2 el valor de las decenas

aux2=aux1-(aux2*10);  //ahora tendrías en aux2 el valor de las unidades

También podrías usar otras instrucciones....

137
C/C++ / Re: Lista Doble Enlazada
« en: Lunes 7 de Noviembre de 2005, 09:10 »
Supongo que la función que muestra los datos al revés es la siguiente:
Código: Text
  1.  
  2. void mostrar1()
  3. {
  4. nodo * tm;
  5.  
  6. clrscr();
  7. tm=cabeza;
  8.  
  9. while (tm)
  10. {
  11. printf(&#34;Nombre del paciente:%s&#092;n&#34;,tm-&#62;nom);
  12. printf(&#34;Numero de control de expediente:%d&#092;n&#34;,tm-&#62;numc);
  13. printf(&#34;Numero de afiliacion:%d&#092;n&#34;,tm-&#62;num);
  14. printf(&#34;%Enfermedad que padece es:&#092;n&#34;,tm-&#62;enfe);
  15. printf(&#34;Edad del paciente:%d&#092;n&#34;,tm-&#62;edad);
  16.  
  17. tm=tm-&#62;sig;
  18. }
  19. printf(&#34;&#092;n&#092;n&#092;t&#34;);
  20. getch();
  21.  
  22. }
  23.  
  24.  
Lo que deberías hacer es lo siguiente:
Primero editar el puntero a estructura anterior de la primera estructura de la cola, esto es, cuando creas una nueva lista la primera estructura debería apuntar de la siguiente manera:
cabeza->sig=NULL;
cabeza->ant=NULL;
Es importante que la primera estructura apunte a NULL cuando apunta a la estructura anterior para poder recorrer la lista igual que lo haces de delante hacia atrás.
Código: Text
  1.  
  2. void mostrar1()
  3. {
  4. nodo * tm;
  5.  
  6. clrscr();
  7. tm=cola;
  8.  
  9. while (tm)
  10. {
  11. printf(&#34;Nombre del paciente:%s&#092;n&#34;,tm-&#62;nom);
  12. printf(&#34;Numero de control de expediente:%d&#092;n&#34;,tm-&#62;numc);
  13. printf(&#34;Numero de afiliacion:%d&#092;n&#34;,tm-&#62;num);
  14. printf(&#34;%Enfermedad que padece es:&#092;n&#34;,tm-&#62;enfe);
  15. printf(&#34;Edad del paciente:%d&#092;n&#34;,tm-&#62;edad);
  16.  
  17. tm=tm-&#62;ant;
  18. }
  19. printf(&#34;&#092;n&#092;n&#092;t&#34;);
  20. getch();
  21.  
  22. }
  23.  
  24.  
Espero que te sirva de ayuda.
Un saludo.  :lightsabre:

138
Programación en C / Re: Alguien Me Puede Decir Como Funciona El Ccs
« en: Lunes 24 de Octubre de 2005, 11:49 »
En la página web oficial del programa tienes un manual muy completo de cómo usar el programa asi como las funciones de las que dispone el compilador:
http://www.ccsinfo.com/download.shtml#CompilerManual
Un saludo. :lightsabre:

139
Visual C++ / Añadir Una Librería Estática A Proyecto Mfc
« en: Jueves 6 de Octubre de 2005, 11:42 »
Hola a todos, :hola:
Lo primero, decir que lo del Visual C es nuevo para mi, programo con MFCs por comodidad y rapidez. :whistling:
estaba yo haciendo un pequeño programa con ventanitas usando MFCs... todo iba bien hasta que se me ocurrió programar una librería estática externa que contiene una serie de funciones externas a las propias del manejo de ventanas y linkarla al proyecto.
Uso el Visual Studio 6.0 y las linké como toda la vida: Project->settings->Link y luego añado el fichero .h al proyecto que contiene los prototipos de las funciones.  
Lo gracioso es que esto funciona perfectamente cuando se trata de un proyecto de tipo Win32 Console Application...
Pero con MFC application no la reconoce, cuando llamo a alguna función interna de la librería me dice lo típico de "unresolved external symbol..."
Alguien sabe como linkar una librería estática en un proyecto hecho con MFCs??
Un saludo y gracias. :lightsabre:

140
C/C++ / Re: Palindromo
« en: Lunes 19 de Septiembre de 2005, 11:51 »
Hola, puedes utilizar la función de comparación de strings strcmp() (creo que es esa) para comparar palabra con palabra 2, la función creo recordar que devuelve un 0 en caso de que ambas sean iguales.
Saludos y suerte.

141
Hardware / Re: Duda Con El Procesador
« en: Miércoles 14 de Septiembre de 2005, 08:25 »
Saludos Hao,
esa es una gran pregunta y lo que te puedo decir es que es también un gran secreto.  Ningun fabricante de placas base te va a decir cómo leer la temperatura.
Todas las placas base contienen un pequeño chip que se suele encargar de hacer pequeñas tareas como leer la velocidad de los ventiladores que se conectan a los conectores "molex" de la placa, también suelen leer la temperatura de un par de sensores, uno situado debajo del procesador y otro en el chipset de la placa o en la propia placa, los voltages...  Esto depende de la placa y el fabricante.  Se conoce estos chips como super IO chips, y los más famosos son el winbond y el ITE.
Casi todos usan el SMbus que es un bus de baja velocidad dentro de la placa, y por lo poco que he podido averiguar para poder leerlos se debe hacer llamadas con las instrucciones in y out en unas direcciones concretas (que yo personalmente desconozco), el problema surge bajo windows XP/2k, estos dos SO tienen esas instrucciones protegidas y es necesario tener el mayor nivel de privilegio para ejecutarlas, por ello es necesario hacer unos drivers (que se ejecutan con máximo nivel de privilegio) para realizar las lecturas.
Existen en internet un gran número de programas que leen la temperatura, hasta hace unos meses existía un programa llamado "Motherboard monitor" que era una pasada, pero el desarrollador se cansó y dejó de actualizarlo.  Como he dicho cada placa es distinta a las otras y su Super IO chip funciona de forma distinta.  Aun así se puede descargar el software y si la placa no es muy antigua seguramente que esté soportada por el Motherboard monitor.
Yo personalmente uso un software que trae la placa de ASUS, de todas formas casi todas las placas suelen traer un programa para poder leer estos valores desde windows.

Un saludo.  :lightsabre:

142
Hardware / Re: Duda Con El Procesador
« en: Martes 13 de Septiembre de 2005, 16:47 »
Hola a todos!!
Voy a hablar por propia experiencia, me he comprado hace un mes un ordenador nuevo, se trata de un AMD K8 64bits 3GHz (1800MHz) socket 939.  He comprado el más bajo de la gama.  He comprado una placa base Asus A8N SLI deluxe (bastante cara).  Decir tan sólo que el conjunto va perfectamente.  ¿Por qué esta elección?
- Esta placa soporta la tecnología Cool ´n quiet de AMD que permite modificar la frecuencia de la CPU en tiempo real desde el sistema operativo (windows) y así bajar la frecuencia cuando el uso de la CPU es bajo y subirla hasta el máximo cuando es alto (disminuye el ruido y la temperatura).
- Cuenta además con la tecnología AI booster de asus que permite overclockear la CPU cuando se quiera desde el SO.  Permite incluso un modo en el que la frecuencia de la CPU se sube un 10% del máximo en el momento que se está haciendo un gran uso de la CPU.
- AMD está fabricando actualmente sus nuevos procesadores dual core en este zócalo (939) y la placa los soporta, por tanto dentro de unos meses cuando bajen de precio podré poner un doble procesador a 1800MHz donde ahora tengo uno sólo.
- Le puse un procesador P4 3GHz a mi hermano y tiene problemas de temperatura, sobre todo cuando juega (60ºC).  En mi AMD la temperatura no ha sobrepasado aun los 40º (debo decir que mi refrigeración es muy buena: Thermaltake silent tower 112 con ventilador de 9cm + 5 ventiladores en la caja de 8cm + 2 ventiladores de 8cm en la fuente)
- Además de que se le puede sacar todo el rendimiento del mundo con un sistema operativo de 64bits.

Debo decir que Pentium también está fabricando los procesadores de 64bits con dual core.

Según mi experiencia... AMD sin duda.  
Un saludo :lightsabre:

143
Microcontroladores / Re: Ayuda, Soy Nuevo
« en: Martes 13 de Septiembre de 2005, 13:37 »
Hola Rasec!!
Acabo de terminar con los exámenes asi que estaré un poco más activo....
En cuanto a donde conseguir el CCS picc compiler en su última versión... Hay en la red un programa P2P llamado emule que para este tipo de cosas viene muy bien...
En cuanto al compilador no creo que tengas problemas, el CCS te crea un archivo .hex que leen todos los programadores.  Yo personalmente uso el Icprog y una grabadora T20x.
Para empezar un Pic 16f873/16f876 es más que de sobra, un 16f84 quizás sea demasiado pequeño para los extensos códigos en asm que genera el CCS.  Con los Pic que te he mencionado puedes probar muchas características como el manejo de timers, conversores analógico-digital (CAD), interrupciones, PWM, comunicación serie....
Suerte y un saludo.

P.D. por lo que he visto en el sub-foro de C (dentro del foro de microcontroladores), el gran Jonathan te envia el programa a tu dirección... Menudo chollo de moderador.  :lol:

Un saludo  :lightsabre:

144
Programación en C / Re: Problemas Con Array De Estructuras
« en: Lunes 18 de Julio de 2005, 11:34 »
Hola, siento haber tardado en responder, he solucionado el problema, se trataba de un fallo del ISIS de proteus, fallaba en la simulación... Resetee el PC y todo iba como la seda...
Gracias de todas formas.
Un saludo  :lightsabre:

145
Programación en C / Problemas Con Array De Estructuras
« en: Sábado 9 de Julio de 2005, 18:52 »
Hola a todos!!!
Bueno, os cuento, estoy programando una LCD gráfica para un proyecto de la uni, lo hago con el PICC compiler de CCS y lo simulo con el ISIS de proteus.  Tengo que manejar una imagen y dibujar sobre ella una serie de puntos... (Me sirvió de mucho el programa bmp2asm que se encuentra en otra discusión).
En fin, he creado una estructura del tipo:
Código: Text
  1.  
  2. typedef struct
  3. {
  4.   char cadena[25];
  5.   int x;
  6.   int y;
  7. }puntos;
  8.  
  9.  
Bueno, en el código me interesa inicializar un array de estructuras de este tipo y lo hago de la siguiente manera:
Código: Text
  1.  
  2. void main()
  3. {
  4.   puntos prueba[5]={
  5.       {&#34;algo&#34;,5,4},
  6.       {&#34;asdf&#34;,6,7},
  7.       {&#34;ñlkj&#34;,4,2},
  8.       {&#34;qwer&#34;,4,3},
  9.       {&#34;poiu&#34;,3,2}
  10.       };
  11.   ...
  12.   ...
  13. }
  14.  
  15.  
Luego voy recorriendo esos puntos, pero llega un momento en el que los datos no se leen correctamente, esto es cuando leo prueba[3].x en vez de darme un 4 me da un 0, y no sé por qué. Otras veces el texto no aparece...
No se si a alguien le ha pasado algo parecido, y sobre todo no se si es un problema del PICC (en el manejo de arrays de texto de distintos tamaños) o de la simulación del proteus...
Si alguien tiene alguna idea de por qué puede pasar esto que no dude en decírmela.  :lightsabre:
Un saludo y gracias a todos.

146
C/C++ / Re: Typedef Struct Algo1 {...} Alo2;
« en: Viernes 24 de Junio de 2005, 12:18 »
el tipo typedef te permite definir con un nombre un tipo de vble concreta, por ejemplo:
Código: Text
  1.  
  2. typedef struct
  3. {
  4. int a;
  5. float b;
  6. }st_estructura;
  7.  
  8.  
lo que haces es que estructura sea un tipo struct con dos vbles dentro, un int a y un float b.  Así desde tu programa principal podrías declarar una variable de esta forma:
Código: Text
  1.  
  2. void main()
  3. {
  4. st_estructura una_estructura
  5. }
  6.  
  7.  
De esta forma evitas tener que declararla de esta forma:
struct estructura una_estructura;
Ahora bien el caso de tu estructura es especial, puesto que dentro de la propia estructura tienes que referenciar la propia estructura.  Cuando defines la estructura con un tipo typedef, hasta que no terminas la estructura y le pones un nombre el compilador no sabe el nombre de esa estructura, así si declaras la estructura de la siguiente forma generarías un error:
Código: Text
  1.  
  2. typedef struct
  3. {
  4. int a;
  5. st_estructura *sigte;
  6. }st_estructura;
  7.  
  8.  
El error se debe a que hasta que no se termina de definir la estructura el compilador no sabe el nombre de esta, por tanto cuando se hace st_estructura *sigte el compilador aun no sabe qué es st_estructura.
Para solventar este problema se define en la estructura un nombre al principio de tal forma que puede ser referenciada antes de terminar con la definición:
Código: Text
  1.  
  2. typedef struct estructura
  3. {
  4. int a;
  5. struct estructura *sigte;
  6. }st_estructura
  7.  
  8.  
En este caso el compilador no da error porque antes de terminar la estructura ya le habías dado un nombre.  Espero que te sirva de ayuda, Un saludo  :lightsabre:

147
C/C++ / Re: Numeros En Base Hexadecimal Otra Vez
« en: Lunes 20 de Junio de 2005, 08:42 »
Volvemos de nuevo con el mismo problema de siempre.... LOS NÚMEROS DENTRO DEL ORDENADOR SE TRATAN COMO NÚMEROS EN FORMATO BINARIO, no tienes un entero en formato decimal ni uno en formato hexadecimal, octal, o lo que sea, los números se tratan en binario.  Los transistores del uprocesador tienen limitaciones y entre ellas están que sólo saben operar con 1s y 0s.  Espero que esto quede claro de una vez.
La función Outportb() recibirá dos valores que serán tipo int, float, char (en tu caso como dices tipo char)....  Esto es lo único que te tiene que interesar, pues si a la función antes mencionada le pasas el valor 31 como decías:
outportb(3f8,0x1f);
es igual a hacer lo siguiente:
outportb(3f8,31);
Al fin y al cabo a la función outportb le llegará el siguiente valor: 0001 1111, se lo pases en decimal o en hexadecimal.  El compilador de C te permite trabajar con números en decimal: a= 31, como en hexadecimal (si añades al principio el 0x): a=0x1f.  Pero esto sólo es una ayuda para el programador, para que pueda escribir su código bien usando notación decimal como hexadecimal, para hacer el código más sencillo para el programador, pero por dentro esos valores son números binarios y al programa le da exactamente igual que se los hayas pasado en hexadecimal o en decimal.
Tu programa se puede escribir de varias formas por tanto:
Código: Text
  1.  
  2. int valor;
  3. valor=0x1f; //se le pasa un valor en hexadecimal, aunque en valor se guardará 0001 1111
  4. outportb(3f8,(char)valor);
  5. valor=31;//en forma decimal, en valor se vuelve a guardar lo mismo de antes 0001 1111
  6. outportb(3f8,(char)valor);//se hace exactamente lo mismo que antes
  7.  
  8. outportb(3f8,31);//hace lo mismo
  9. outportb(3f8,0x1f);//de nuevo se hace lo mismo que antes
  10.  
  11.  
Como conclusión, da igual con qué tipo de números trabajes cuando escribes un código (decimal o hexadecimal) porque a la hora de la verdad el programa trabajará con los números en formato binario, y por tanto da igual que a una función le pases el número en uno u otro formato, siempre lo recibirá en binario.
Deja de darle vueltas al decimal y al hexadecimal.
Una última cosa, en el programa estás trabajando con una variable tipo int que ocupa 32bits, y la función outportb() recibe una variable de tipo char de 8 bits(según dices), así que ten cuidado con el valor que introduces pues tiene que estar en el rango de 0 a 255, de esta manera podrás hacer el cast sin problemas de pérdida de datos.
Un saludo  :lightsabre:

148
C/C++ / Re: Memoria Dinamica
« en: Lunes 13 de Junio de 2005, 21:16 »
Hola, la memoria dinámica no es más que memoria que se reserva en tiempo de ejecución, esto es, cuando realizas un programa en C, tienes que declarar todas las variables que vas a usar y el compilador junto con el SO te da una zona de memoria donde guarda esas variables con el tamaño que le has indicado.  Supón ahora que no sabes cuanta memoria vas a necesitar, por ejemplo, tienes que preguntar al usuario cuanto hueco quiere, por ejemplo para manejar un array, una matriz, una lista de estructuras, un dibujo...  Entonces tendrás que preguntar al usuario por el tamaño y luego reservarlo durante la ejecución, para hacer esto se usa la función malloc() en C y new() en C++.
Un ejemplo, vamos a crear un vector, le vamos a pedir al usuario que nos diga el número de elementos que tendrá el vector y luego le pediremos que lo rellene:
Código: Text
  1.  
  2. void main()
  3. {
  4. int n_elementos,i;
  5. float *vector; //puntero que apuntará al vector
  6.  
  7. printf(&#34;&#092;n&#092;tNumero de elementos del vector? &#34;);
  8. scanf(&#34;%d&#34;,&n_elementos);
  9.  
  10. vector=(float*)malloc(sizeof(float)*n_elementos);//reservamos espacio para tantos floats como el usario quiera
  11.  
  12. for(i=0;i&#60;n_elementos;i++)
  13. {
  14. printf(&#34;&#092;n&#092;tIntroduce valor %d: &#34;,i+1);
  15. scanf(&#34;%f&#34;,&vector[i]);
  16. }
  17. ...
  18. ...
  19. }
  20.  
  21.  
De esta manera podríamos tratar con vectores dinámicos...  Sino nuestro programa sólo podría manejar vectores de un tamaño fijo: float vector[n];

Espero que te haya servido la explicación,
un saludo  :lightsabre:

149
C/C++ / Re: Ayuda Con Visual C++
« en: Miércoles 8 de Junio de 2005, 19:35 »
Hola,
 el Handle hconsole sólo lo tienes que sacar la primera vez, luego lo puedes usar todas las veces que quieras, por tanto esa parte sólo debe ejecutarse al principio:
Código: Text
  1.  
  2. HANDLE hConsole = GetStdHandle ( STD_OUTPUT_HANDLE );
  3. if ( INVALID_HANDLE_VALUE == hConsole )
  4. {
  5. cout&#60;&#60;&#34;ERROR!!&#092;nPulsa &#60;enter&#62; para continuar&#34;;
  6. getchar();
  7. return(-1);
  8. }
  9. ....//ahora ya tienes hConsole, no hace falta hacer todo lo anterior
  10.  
  11.  
Lo que si tendrás que reescribir es
Código: Text
  1.  
  2. COORD pos = {32, 11};
  3. SetConsoleCursorPosition ( hConsole, pos );
  4. cout&#60;&#60;&#34;solo una linea&#34;;
  5.  
  6.  
Tantas veces como necesites...
Un saludo.  :lightsabre:

150
Programación en C / Re: De Float A Integer
« en: Miércoles 8 de Junio de 2005, 19:26 »
Hola, para pasar de float a int vas a perder los decimales de todas todas.  Al hacer un cast a integer lo que se hace es truncar el valor, así 5,83 queda como 5.  Si lo que quieres es redondear puedes hacer un simple algoritmo del tipo:
Código: Text
  1.  
  2. float valor;
  3. int valor2
  4. ...
  5. if(valor-(int)valor&#62;=0,5)
  6. valor2=(int)valor+1;
  7. else
  8. valor2=(int)valor;
  9.  
  10.  
De esta forma se te redondearía el valor, así el 5,83 se guardaría como 6 y  4,23 como 4.
Un saludo.  :lightsabre:

Páginas: 1 ... 4 5 [6] 7 8 ... 10