• Domingo 19 de Mayo de 2024, 10:27

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

Páginas: 1 ... 3 4 [5] 6
101
C/C++ / Re: Memoria Dinamica
« en: Martes 9 de Noviembre de 2004, 11:20 »
Cita de: "JuanK"
Citar
Con esto es suficiente,  es bueno tener en cuenta que hacer este tipo de cosas baja el renfimeinto de la aplicacion, ya que declarar un array de esta forma:

char mt[20][30];

deja la variable alojada en los registros del procesador es decir en el stack lo cual hace que su acceso sea muy rapido , mientras que al construir espacios de memorioa con malloc lo que se hace es resevar una porcion del heap para la informacion, de esta manera el programa hace doble trabajo ya que cada vez que desee operar sobre estos datos, llevara porciones de infromacion desde el heap hata los registros del procesador.

 :hola:

Bueno, yo también crei que la memoria estatica era más rápida. Eso dice la teoria. Pero yo he trabajado con un compilador (una versión de hace unos años del GCC de GNU) para una máquina pequeñita, que cuando la matriz tenia un indice mayor que [no me acuerdo] utilizaba multiplicaciones para el acceso a las celdas mientras que al trabajar con punteros en la memoria dinámica, solo se utilizan sumas.

El caso es que el resultado es que para las imagenes de (char) 62*82*3 que utilizaba, el acceso a un byte concreto era sobre 7 veces mas rapido con memoria dinamica que sobre estatica. En aquel entonces puse un Post y Ruben3D (seguro queos suena) me contesto en el foro de videojuegos proponiendome lo de utilizar punteros.

Solo es por si os encontrais en el caso, que sepais que la memoria estática en ciertas ocasiones no es más rápida.

102
C/C++ / Re: Memoria Dinamica
« en: Lunes 8 de Noviembre de 2004, 12:24 »


Citar
int(*matriz)[8]=new int [8][10];

es una reserva dinamica de vectores estaticos, no una matriz dinamica bidimensional. Pero, aunque yo nunca usaria esto, puede valer.

103
C/C++ / Re: Memoria Dinamica
« en: Viernes 5 de Noviembre de 2004, 11:42 »
el 27 de mayo se publico un post que esplica todo esto

se llamaba "matriz dinamica, eso"

y fue respondido perfectamente por "BGirl"

ahi esplica como hacerlo con las funciones alloc, malloc, free...

Si programas para C++ puedes usar new como explica diodo.

104
C/C++ / Re: Memoria Dinamica
« en: Viernes 5 de Noviembre de 2004, 11:17 »
:hola:

Hola diodo, solo quisiera darte las gracias por esa magistral leccion que me diste hoy.

Solo decir, que yo estube enterado en todo momento sobre lo que escribí. Cosa que no se puede decir de tí en el primer post porque:

    :lol: "La cagaste hasta el fondo. Estaba todo mal" :lol:

Después decir de tu segundo post que me parece genial que hayas redactado un buen parrafo de tus apuntes con una opinión muy subjetiva sobre algo que no conoces.

Yo que tu tendria más cuidado con ir aleccionando a gente con conceptos que no dominas porque algún día podrias meter la pata.

Por último espero que jodijo5 utilice C++ poque como trabaje en C no creo que tu ayuda sea todo lo util de que presumes, pero claro, eso tp lo preguntaste.

 :comp:

105
Dudas informáticas / Re: Instalación De Windows
« en: Viernes 5 de Noviembre de 2004, 10:59 »
:hola:

Bueno chicos, muchas gracias por la ayuda pero ya conseguí solucionar el problema.

El problema era la combinación de memoria. El sistema operativo no me dejaba trabajar con esa combinación tan rara de RAM.

He dejado los dos chips de 64Mb y todo va como la seda.

Si algna vez os encontrais con el mismo problema ya sabeis.

Gracias     :comp:

106
C/C++ / Re: Memoria Dinamica
« en: Jueves 4 de Noviembre de 2004, 12:51 »
No es asi exactamente.

Para utilizar memoria dinamica debes utilizar alguna funcion que la reserve como malloc o alloc.

La solución que te da diodo no es de todo correcta. Diodo esta creando un vector dinamico de vectores estaticos y personalmente no se para que puede servir eso. Me parece un poco ridiculo.

tu deberias hacer una declaración del tipo

int **n;

y luego malloc para hacer la reserva de memoria dinámica.

Todo esto está esplicado ya en el foro a si que te dejo que lo consultes por que yo no soy muy buen esplicador.


Saluditos :hola:

107
C/C++ / Re: Ayuda Con Menus..
« en: Jueves 4 de Noviembre de 2004, 12:42 »
:hola:

bueno lo de que te sume el resultado es normal porque no reciclas la variable result1 ni result2.


despues de acabar un bucle, esta variable tendrá el valor que tenia al acabar la iteración anterior.

Debes darle el valor cero al salir de cada iteracion. justo despues de escribir el resultado. Otra opcion es que te crees una función donde la variable result1 o 2 sea local.

                       :alien:

en cuanto a la resta, creo que tienes un problema en el concepto y en la implementacion, no en la programacion.

Una resta no es mas que una suma de números en los que por lo menos uno es negativo. Para restar dos numeros positivos, al primero no le debes cambiar el signo. Debes ir quitando de este número positivo, el resto tb en positivo. No entiendo lo de cambiar de signo. En tu caso estas restando todos los numeros introducidos por el usuario de 0 que es el valor que tiene result2 inicialmente.


Espero haberte ayudado por lo menos un poquito

108
Dudas informáticas / Instalación De Windows
« en: Jueves 4 de Noviembre de 2004, 10:49 »
:hola:

Buenas. Tengo un pequeño problemilla a la hora de meter el sistema operativo en una maquina.

La maquina es un PII a 266 y he intentado con todos los windows hasta el 2000 (desde el 95 claro) y no consigo que funcione más que el milenium.

Lo que pasa es que el milenium (debates a parte) no lo quiero. Me gustaría que corriera bajo W98 s.e. pero:

      :blink: Una vez ya instalado el sistema operativo y cuando va a arrancar por primera vez me da un error en el HIMEM.sys anunciando falla en la dirección 0x00F00002 de la memoria extendida y no termina nunca de cargar.

La maquina tiene tres targetas de SDRam. (2*64 + 32 Mb).


¿Que es lo que está pasando?


Gracias por adelantado y saludos a todos

109
La taberna del BIT / Re: Averiguar De La Vida Personal
« en: Lunes 14 de Junio de 2004, 19:20 »
Buenas, yo me llamo Roberto y soy de Reinosa (un pueblito de cantabria en españa).

tengo casi 23 años (cumplo el sabado)  :beer:

Estudio Ingenieria de Telecomunicaciones y lo de programar... no se porque empece pero le encuentro un puntillo.

Cosillas sobre mi:

musica- Rock (sobre todo heavy metal) (tb me mola el punk, antes lo oia mas que ahora, pero no me considero punk)
canción- Stair way to heaven (led zepelin
trago-ron cola
grupo - kamelot (tambien: stratovarius, metallica, rhapsody...)
hobby- los amigos en general
curro- ninguno, soy absoltamente pobre, ni siquiera tengo para libros.
programo en: C (estoy empezando a defenderme) voy estudiando algun otro como Ada o C++.

....

creo que de momento es bastante para un primer post

Saludos

110
C/C++ / Re: Reserva De Memoria Dinamicamente
« en: Lunes 14 de Junio de 2004, 17:46 »
No, tampoco estoy en Windows. Trabajo en Linux.

Gracias de nuevo.

 :hola:

111
C/C++ / Re: Reserva De Memoria Dinamicamente
« en: Lunes 14 de Junio de 2004, 17:02 »
No, seria en C.

pero muchas gracias por responder tan rápido.

 :hola:

112
Microcontroladores / Acceso A Puerto Paralelo
« en: Lunes 14 de Junio de 2004, 16:45 »
Hola, trabajo con una máquina basada en MC68332 de motorola. En esta máquina accedo al puerto paralelo que tiene implementado apuntado tres variables de tipo:

unsigned char *

a cada uno de los registros mapeados en memoria del puerto.

Quisiera hacer lo mismo en mi pc trabajando bajo RedHat 6 y quisiera saber si me iba a resultar tan facil.

Se que bajo linux, las direcciones de los registros estan protegidas.

¿como puedo acceder de esta forma?

Gracias de antemano.

113
C/C++ / Reserva De Memoria Dinamicamente
« en: Lunes 14 de Junio de 2004, 16:39 »
Hola, mi pregunta es sencilla.

   ¿Conoceis alguna alternativa a malloc, calloc, etc para reservar memoria dinamicamente?

   Gracias

114
Programación de Videojuegos / Re: Por Donde Empiezo?
« en: Miércoles 9 de Junio de 2004, 17:38 »
Cita de: "JONMI"

Esos programas de los que hablais(OPENGL,Directx) se pueden bajar por internet(emule)?

directx y opengl no son programas, son bibliotecas que contienen una serie de procedimientos definiciones y funciones que incluyes en tu código.

si buscs en google encuentras infínitas páginas que hablan sobre ellas.

Saludos

115
Programación de Videojuegos / Re: Erosion Binaria De Un Mapa De Bits
« en: Miércoles 9 de Junio de 2004, 17:23 »
:hola:

Muchas gracias, he cambiado la division por un desplazamiento y ahora consigo mucha mas velocidad.

Me ha venido genial tu código.  De todas formas seguiré trabajando en ello, seguro que aun se le puede sacar un poquitin más de partido. Ya os contaré. De todos modos cualquier sugerencia sigue siendo bien recibida.

Muchas gracias ruben3d

116
C/C++ / Re: El Dilema Del Prisionero
« en: Lunes 7 de Junio de 2004, 20:18 »
Si, excelente respuesta, pero creo que la idea de la tarea fue tuya juank...

no tires la piedra y escondas la mano.  je  ;)

yo respondi a dos de tus "acertijos". (seguramente no tan bien como otros)

no creo que sea el más borde ni pesao con lo de la tarea.  :alien:

saludos señores "todos".

117
Programación de Videojuegos / Re: Erosion Binaria De Un Mapa De Bits
« en: Lunes 7 de Junio de 2004, 20:12 »
Se me olvido decirles, que el tamaño de la imagen debe ser fija de 62x82 pixels (chiquitilla) y 24 bpp.

Si desean darle una ojeada al codigo, primero se les pide que introduzcan el path de la imagen origen.
Se binariza y se les pide un nombre para guardar el resultado.
Despues se erosiona y se vuelve a pedir un path para almacenar el resultado.



Les he hecho una pequeña imagen un poco artesanal para probar. Se la incluyo.


Gracias a todos de antemano.

 :hola:

PD: les envio la imagen comprimida porque no me deja de otro modo

118
Programación de Videojuegos / Re: Erosion Binaria De Un Mapa De Bits
« en: Lunes 7 de Junio de 2004, 20:05 »
:hola:

Estoy trabajando en un proyecto en el que debo hacer una localización desde una imagen de video.

Debo encontrar una pelotita naranja.

La imagen queda guardado en un array que toma la forma:

camframe imagen[n_filas][n_columnas][bytes_RGB];

se ve claro ¿no?

camframe es un typedef de unsigned char.

esta imagen la binarizo de forma que se coloreen los pixels naranjas.
El resultado queda en un array

camframe_bin imagen[n_filas][n_columnas].

camframe_bin vuelve a ser unsigned char.

Despues implemente la siguiente función para erosionar la imagen y eliminar ruido.

Código: Text
  1.  
  2. int erode(camframe_bin *img)
  3. {
  4.  
  5. int x,y;
  6.  
  7. for(y=1;y<61;y++)
  8.   {
  9.     for(x=1;x<81;x++)
  10.       {
  11.   if((*img)[y][x])
  12.     {
  13.       if(!((*img)[y+1][x]&&(*img)[y-1][x]&&(*img)[y][x+1]&&(*img)[y][x-1]))
  14.         (*img)[y][x]=MARK;;
  15.     }
  16.       }
  17.   }
  18. for(y=0;y<62;y++)
  19.   {
  20.     (*img)[y][0]=NO_ASERT;
  21.     (*img)[y][81]=NO_ASERT;
  22.   }
  23.  
  24. for(x=0;x<82;x++)
  25.   {
  26.     (*img)[0][x]=NO_ASERT;
  27.     (*img)[61][x]=NO_ASERT;
  28.   }
  29.  
  30. for(y=0;y<62;y++)
  31.   {
  32.     for(x=0;x<82;x++)
  33.       {
  34.   if((*img)[y][x]==MARK)
  35.     (*img)[y][x]=NO_ASERT;
  36.       }
  37.   }
  38. return(0);
  39. }
  40.  
  41.  

pero me parece muy tosca y lenta. ¿verdad?


La pregunta es si podrian aconsejarme algun algoritmo mas eficiente o si conocen algun sitio donde encontrarlo ("yo busque y busque y nada encontre").

muchas gracias.

Por si quieren hecharle un ojo mejor, les escribi un pequeño codigo donde se recoge una imagen de un .bmp y se introduce en un "camframe". despues se binariza, se erosiona y se pasa de nuevo a un .bmp. así podran verlo.

Gracias a cualquiera que tenga un ratito y le heche un ojo.

 :gracias:

119
C/C++ / Re: El Dilema Del Prisionero
« en: Miércoles 2 de Junio de 2004, 19:36 »
Muchas gracias

                                                  :gracias:


 ¿que he ganado?


                                     es una broma. :devil:


...yo tambien espero que no sea una tarea.


saludos

120
C/C++ / Re: Problemas Para Usar El While En C
« en: Miércoles 2 de Junio de 2004, 19:32 »
:hola:
Hola, siento no haberte respondido antes antes. No me conecto muy amenudo por que no tengo red en casa.

Creo que aprendiste mucho. usaste fflush para liberar los buffers de entrada y otros arreglos buenos.


                                     :scream:
bueno, como ya te dije yo no conozco la funcion 'isspace', pero deberias revisarla por que a mi no me funciona como debiera. en mi caso se evalua como cierta cuando lee el primer uno del texto y entonces guarda en el dni un espacio antes y falta el ultimo caracter. yo uso
Código: Text
  1.  
  2. if(car == ' ') //entre las comillas hay un espacio que logicamente no se ve
  3.  
  4.  

que como ya te dije funciona bien.

El otro dia se me debio pasar decirte que en el bucle:

Código: Text
  1.  
  2. do{
  3. ...
  4. }while(!feof(fp));
  5.  
  6.  

existe el problema de que si el fichero esta vacio, tu entraras en el bucle igualmente y te quedaras esperando infinitamente un espacio.

creo que es mejo que en vez de un do-while utilices un while a secas.

                                     :scream:

El echo de que no salga del bucle es casi seguro porque el editor que utilices para
crear el fichero alumnos.txt metera algun caracter entre el ultimo '\n' y el EOF. de esta forma al acabar, despues de leer el ultimo salto de linea intentara ver si a acabado el fichero y vera que no (por culpa de ese caracter) y quedara bloqueado esperando un espacio. ¿verdad?

a mi tambien me pasa. yo lo arregle añadiendo al

Código: Text
  1.  
  2. while((car = fgetc(fp)) != '\n');
  3.  
  4.  

otra condicion que quedo asi.

Código: Text
  1.  
  2. while(((car = fgetc(fp)) != '\n')&&(!feof(fp)))
  3.  
  4.  

pero no te recomiendo que hagas esto porque es una chapuza.

deberias reestructurar los bucles para que se evaluen correctamente y espere los caracteres adecuados. por ejemplo yo te recomendaria que irias llevando un conteo de las lineas que lees.

    :devil:

otra cosilla. Cuando se produce un error al introducir el numero de años y haces que se repita
Código: Text
  1.  
  2. }while(numero_anyo > 3);
  3.  
  4.  
deberias sacar un mensaje de error para saber que debes introducir el mismo alumno correctamente ¿no? ¿o me estoy equivocando? solo es un consejo.

bueno. creo que no se me olvida nada esta vez.

espero haberme hecho entender y por supuesto haberte ayudado.

de todas formas si tienes alguna duda, escribe e intentare ayudarte cuanto antes

un saludo

 :suerte:

121
C/C++ / Re: La Cuerda Anudada
« en: Miércoles 2 de Junio de 2004, 17:29 »
Yo ya contesté, alguno de los ""retos"" de Bgirl (facilillos y entretenidos) y también he pensado que quiza estabas pidiendo que te hicieran los deberes.

Se me ocurria que tu no has resuelto ninguno.

¿Por que no nos das la forma en que tu lo resolverias?

seguro que no es igual que ninguna resolución anterior.

Asi podriamos ver como tu programas y aprender algo también de ti y quedaria resuelto el problema en el foro ya que no se puede colgar la solución de ningun otro.  Luego podriamos ver quien lo hace más eficiente por ejemplo.

¿te atreves, Bgirl?

¿que os parece la idea?

un saludo a todos.

:hola:

122
C/C++ / Re: El Dilema Del Prisionero
« en: Viernes 28 de Mayo de 2004, 17:32 »
No se si entendi bien, pero creo que el problema pide conocer el número de bolas rojas y verdes dentro de cada urna para tener el máximo de probabilidades de sacar una verde ¿no?

si es así, yo resolvi de la siguiente:

la probabilidad de sacar una bola verde teniendo en cuenta que tenemos las mismas probabilidades de elegir cualquier urna es:

P= (p(de sacar una verde de urna A)) *0.5 + (p(sacar una verde de urna B ) *0.5)

siendo la probabilidad de sacar una verde de cualquier urna:

p=numero de volas verdes dentro de la urna / numero de bolas totales en la urna

teniendo esto en cuenta solo se ha de buscar cuando esta funcion es máxima.

El 0.5 es la probabilidad de seleccionar esta urna  (pura estadistica)

en vez de tantear todas las posibilidades hice este código.

para eso es un foro de C ¿no?     jejejejejeje       :D

Espero no haberme equivocado.  Si lo hice, diganme.

P.D:  no se si C++ BorlFJ resolvio bien en su ultimo post porque no entendi nada, pero nada de lo que puso se parece a lo que yo obtube.


saludos
                 :hola:

123
C/C++ / Re: Numeros Persistentes
« en: Viernes 28 de Mayo de 2004, 16:09 »
Citar
tambíén se tiene que el número que posea dos dígitos que multiplicados den mas de 4 persistencias. a continuación

          se tiene;
                            55=5*5=25=2*5=10=1*0=0

Bueno, C++ BorlFJ, creo que te equivocas. 55 solo tiene tres persistencias, miralo bien.

Incluyo un programilla que resuelve el problema.

Lo hice muy rapido osea que no es nada del otro mundo.


 ;)
                   :hola:

124
C/C++ / Re: Problemas Para Usar El While En C
« en: Viernes 28 de Mayo de 2004, 15:16 »
Hola, vale ya entendí un poco más el problema.

 :hola:
He encontrado varios fallos:

1- :question:

 en esta condición:
Código: Text
  1.  
  2. ...
  3. while((car = fgetc(fp) != '\n')) /*se lee del fichero texto*/
  4. {
  5. ...
  6.  
  7.  

colocas los parentesis juntos (uno te sobraria) y lo que haces es meter en car, el resultado de la evaluación fgetc(fp) != '\n' que solo puede ser 0 si es falsa o 1 si es cierta.

¿entiendes?

deberias escribirlo:

Código: Text
  1.  
  2. ...
  3. while((car = fgetc(fp)) != '\n') /*se lee del fichero texto*/
  4. {
  5. ...
  6.  
  7.  
:D

2- :question:

Después, cuando entras en el bucle

Código: Text
  1.  
  2. do{
  3. printf("Introduzca los Apellidos: ");
  4. gets(apellidos);
  5. printf("\n");
  6. printf("Introduzca el Nombre: ");
  7. gets(nombre);
  8. printf("\n");
  9. printf("Introduzca el Numero de años: ");
  10. scanf("%d",&numero_anyo);
  11.  
  12. strcpy(d.nombre, nombre);
  13. strcpy(d.apellidos, apellidos);
  14. d.numero_anyo = numero_anyo;
  15.  
  16.  
  17. fwrite(&d, sizeof(DATOSALUMNO), 1, ficbin);
  18.  
  19. }while(numero_anyo >=3);
  20.  
  21.  

no sales de aqui hasta que numero_anyo es menor que 3. de forma que si lee el primer dni y es correcto estaria pidiendo datos hasta que numero_anyo fuera menor de 3 sin leer ningún dni más ¿entiendes?
el do deberia estar antes de leer el dni y la llave que cierra el if más abajo.

3- :question:

Por ultimo.

lo que tienes que esperar es el fin del fichero alumnos.txt que es del que lees y no del .bin

osea que seria:

Código: Text
  1.  
  2. ...
  3. }while(!feof(fd));
  4. ...
  5.  
  6.  

en vez de

Código: Text
  1.  
  2. }while(!feof(ficbin));
  3.  
  4.  
.


Con esto el programa ya funcionaria más o menos.


otra cosa:

yo no habia oido hablar de la función isspace asique la cambie por  
Código: Text
  1.  
  2. car==' '
  3.  
  4.  

Otra cosa, si en el archivo colocas algun espacio despues del dni en vez de directamente un salto de linea te da error. Deberias buscar una forma mejor de leer los caracteres del fichero alumnos.txt
 :alien:  :alien:  :alien:  :alien:  :alien:  :alien:  :alien:  :alien:
Por supuesto no te voy a enviar el codigo corregido.

creo que tienes mucho que aprender aun. tanto como yo:hitcomp:

Pero para cualquier consulta preguntame que tratare de ayudarte

Suerte. :smartass:   :comp:

 :suerte:  :hola:

125
C/C++ / Re: Problemas Para Usar El While En C
« en: Miércoles 26 de Mayo de 2004, 18:14 »
Podrias decirme que formato tiene el fichero alumnos.txt?

no entiendo muy bien el bucle del

Código: Text
  1.  
  2. }while(!feof(ficbin));
  3.  
  4.  

se supone que el EOF se le marcas tú ¿no?

¿no estas esperando a que llegue?

mandame el fichero alumnos.txt y le hecho un vistazo haber si puedo ayudarte


saludos

Páginas: 1 ... 3 4 [5] 6