PREGUNTAS CONTESTADAS - C/Visual C

 Hay un total de 745 Preguntas.<<  >> 

    Pregunta:  13304 - METODO DE BúSQUEDA BINARIA
Autor:  quique sánchez galindo
necesito saber como realizar el método de busqueda binaria para un array de estructuras en TC.
  Respuesta:  yon
codigo

bool binario(Tipo_vec Vector, int tamano , int lim_inf=0, int lim_sup=tamano-1, Tipo_vec dato=0) {
// Vector es el vector a hacer la busqueda.
// tamano el tamano del vector.
// lim los limites del vector, inferior y superior.
// return true si lo encuentra a dato.
if(lim_inf > lim_sup) return false; // condicion de salida.
if(Vector[lim_inf+tamano/2] == dato) {
return true;
}
else {
if(Vector[lim_inf+tamano/2] < dato) {
lim_sup -= tamano/2;
}
else {
lim_inf +=tamano/2;
}
return binario(Vector,tamano,lim_inf,lim_sup,dato); // Vuelvo a buscar.
}
} // binario.

    Pregunta:  13407 - LIST EN STL
Autor:  beatriz Ciudad
hola:
Tengo un problema al ordenar un list de Stl .

Yo tengo una clase CClase que tiene unos determinados campos , entonces creo una lista de este tipo es decir
list <CClase*> lista

Esta estructura list tiene la opcion de ordenacion haciendo list.sort(), pero esta funcion de ordenacion se le permite definir un predicado
que le indique como ordenar. En mi caso yo quiero ordenar por un campo de la lista.
Es decir mi funcion de ordenacion seria algo asi.

Operador > ( CClase A*,CClase *B)
{
return A->f > B->f
}

El problema es que no se como definirle a la lista que coja este tipo de ordenacion.
Gracias por adelantado,
un saludo
  Respuesta:  Jesús Antón Martín
Tras echar un vistazo a la documentación de STL, me he fijado en que los operadores que "list" utiliza para ordenar son "<" y "==", y no ">" que es el que has definido tú.

Si deseas utilizar un operador distinto, puedes usar una clase Compare, que según creo es una clase de función binaria (que toma dos argumentos), concretamente "greater". En realidad podrías definir un descendiente con el operador "()" redefinido para que haga lo que necesitas.

Un saludo.

Por cierto, la STL estándar la puedes encontrar en http://www.stlport.com/download, preparada para utilizar con varios compiladores y sistemas operativos; y la documentación la puedes navegar en http://www.sgi.com/tech/stl/table_of_contents.html.

    Pregunta:  13475 - MIDIS EN TURBO C++ 3.0
Autor:  Juan Mauricio Gutiérrez Sánchez
Me gustaria saber si puedo abrir y reproducir archivos midi en Turbo C++ 3.0 y si es asi, agradeceria el que me pueda proporcionar una rutina,funcion o libreria para poder hacerlo.
  Respuesta:  David Cañadas
Sí se puede pero no directamente, obviamente necesitarás programarlo.

Es posible que por la red exista alguna librería al respecto, no estaría más que echaras mano del Google.

De todas formas, el método en sí no es muy complicado. Necesitas que tu programa reconozca la tarjeta de sonido y la inicialice. Posteriormente, necesitas abrir el fichero MIDI y cargar su contenido en memoria. Luego, necesitas que tu programa lo interprete.

Para ello, lo más básico es conocer cómo funciona el pseudo-estándar SB16 y cómo está codificado un archivo MIDI. Recurre rápidamente a http://brand107.home.attbi.com/pc-gpe/ donde encontrarás la PC Game Programmers Encyclopedia, donde responden eso entre otras cosas. Inglés imprescindible.

Salu2.

    Pregunta:  13547 - ASIGNAR UN CBYTEARRAY A UN CSTATIC Y VICEVERSA
Autor:  José Luis De Cáceres García
Por favor, necesito saber cómo se puede realizar la asignación de un objeto CByteArray a un CStatic y viceversa. Mi problema surge al querer manejar unos campos de imágenes de una bd y querer mostrar dichos campos a través de miembros static de cuadros de diálogo.
Estoy manejando VC++; he realizado la bd con estilo DAO (he probado tanto estático (DFX) como dinámico (funciones Get/SetFieldValue); el campo imagen de la bd es de tipo CByteArray; y el campo del cuadro de diálogo a través del cual mostrar esa imagen de la bd es de tipo CStatic.
Si hay alguna otra forma de poder manejar (tanto insertar, como mostrar y eliminar) los campos imágenes de la bd a través de cuadros de diálogo, por favor, coméntenmela.
Gracias por todo.
  Respuesta:  Doctor Luz
Hombre, al CStatic le puedes asociar un CBitmap con la funcion SetBitmap. El CBitmap asociado debe de vivir mientras viva el CStatic, es decir, no vale cualquier objeto local.

Para crear el CBitmap depende de que sea el CByteArray, depende de si es jpg, gif, bmp..., si contiene información sobre la paleta de colores, dimensiones etc.

si es un bmp puedes usar el CByteArray para crear un HBITMAP con CreateDIBSection and SetDIBits. Luego puedes usar CBitmap::Attach() para asociar el HBITMAP al CBitmap, y asi asociarlo al CStatic.

Si el CByteArray fuera todo un archivo de imagen puedes usar IPicture para mostrarlo en un DC directamente.

Como ves hay muchas posibilidades, quizá mostrarlo en un CStatic no sea la mejor ya que puedes mostrarlo directamente en un DC y el efecto será prácticamente el mismo, si lo haces en la funcion respuesta a WM_PAINT.

    Pregunta:  13550 - FORMATEAR DISQUETE
Autor:  Llogui
Necesito ayuda con un programa en C para formatear disquete de 1.44 MB para sistemas DOS, yo prové la función _biosdisc() pero tengo problemas cuando termina, el disquete no sirve.
  Respuesta:  Nohé Ramón Cázarez Castro
Has la rutina en ensamblador y llámala desde C, es más seguro y más elegante.

Felices desarrollos!!!

    Pregunta:  13575 - OPENFILE, PERO CON LA API Y CON CARPETAS
Autor:  Mariano Cuenze
cómo puedo usar un open file, pero para seleccionar carpetas? Desde ya, mil gracias.
  Respuesta:  Oscar Vazquez
Por la largada de la respuesta esta en el archivo resp13575.txt

    Pregunta:  13686 - COMO ACTIVAR LA FUNCIòN DEL MOUSE EN UN PROGRAMA EN C
Autor:  Marlyn Torres Mora
Hola, necesito elaborar un programa en C referente al juego de damas
chinas , entre la màquina (inteligencia artificial) y el jugador humano.

Mi problema es cuando el jugador humano necesita mover su ficha necesito activar la funciòn del mouse para que pueda hacer su movimiento, cuando busquè en las preguntas contestadas decìa que las librerìas a utilizar eran dos.h y bio.h, pero me interesa com activar la funciòn.

Agradecerìa mucho la informaciòn que me puedas brindar.
  Respuesta:  Daniel Azkona Coya
Hola,

Entiendo que la pregunta es en plataforma MsDOS.
Si es asi, habría que incluir ciertas rutinas que llaman a interrupciones.

Si te interesa, mandame un mail

    Pregunta:  13784 - INVOCAR INSTRUCCIONES ASSEMBLER DESDE C!!
Autor:  Johnny Alberto Gómez Pérez
estamos usando la función de c "asm " pero, el programa no corre y muestra errores , necesito saber como tengo que invocar las instrucciones assembler desde C, si es posible enviar un pequeño codigo como ejemplo.
gracias!!!!!
  Respuesta:  paco pérez
Es curioso lo diferentes que son las llamadas a ensamblador con Borland Pascal y Borland C. Por ésto hay que tener especial cuidado con algunas cosas. Por ejemplo, las etiquetas (para los saltos, etc) deberán en C estar fuera de la instrucción asm. Asimismo, el corchete de apertura deberá estar en la misma línea de la instrucción asm. También hay que considerar que podemos confundir al compilador C si utilizamos como indicador hexadecimal la "h". Hay que usar siempre 0x.

Por cierto, Borland admite asm como palabra clave. Otros fabricantes sólo admitirán _asm ó __asm. Aparte, aunque generalmente no es obligatorio, conviene, al contrario que con el ensamblador de verdad, terminar cada instrucción con un punto y coma y no emplearlo como símbolo de comentario del ensamblador.

EJEMPLOS:

NO VALE:

asm
{
mov al, 12h ; Suma 12h a al
cmp al, 0
jnz otro ; Si no es 0, salta a otro
xor al, al
otro:
pop ax
push ax
}

SÍ VALE:

asm {
mov al, 0x12; /* Suma 0x12 a al */
cmp al, 0
jnz otro /* Si no es 0 salta a otro */
xor al, al
}

otro:

asm pop ax;
asm push ax;
  Respuesta:  Nohé Ramón Cázarez Castro
Yo lo hago con funciones, escribo la función en ensamblador, despues la declaro en C como si fuera una función normal, la invoco y listo.

Recuerda que las variables que declaras en C, en ensamblador deben estar presedidas por un "_".

Felices desarrollos!!!

    Pregunta:  13800 - COMO OBTENER EL CLOCK DE UN MICROPORCESADOR
Autor:  Angel Alvarez
Buenas, Necesito saber como obtener la velocidad e Mhz del clock del microprocesador, en C/C++ en ambiente NT
  Respuesta:  Patrick Sloveck
No puedes obtenerlo en Mhz tienes que hacer la conversion, y tienes que hacerlo en un bucle pues este clock tiene ciertos cambios, dichos cambios los puedes saber utilizando los registros flags, o realizando un AND entre el registro dx , cx y luego un and con otro pero esto es muy complicado, te aconsejo que te haga un func. en assembler dentro de C, en la cual preguntes por el estado de los flags

    Pregunta:  13863 - ANIMACION DE IMAGENES
Autor:  LUMI GARCIA
Como crear animacion a un dibujo, por ejemplo un logotipo que se mueva por la pantalla en C
  Respuesta:  Arkham Amadeus
Bueno si solo has creado una imagen, la animacion tiene que ser una secuencia de imagenes enviadas en secuencia a la pantalla, si ya lograste cargar una imagen desde archivo, necesitaras las herramientas "power tools" para "C" y bastara enviar tu imagen a la pantalla, (claro la imagen debera ser *.gif)

Si no entendi tu pregunta escribeme a mi correo
Espero poderte ayudar

|<  <<  28 29 30 31 32 33 34 35 36 37 38  >>  >|