PREGUNTAS CONTESTADAS -

 Hay un total de 745 Preguntas.<<  >> 

    Pregunta:  7005 - LEER MIENTRAS SE EJECUTA EL PROGRAMA
Autor:  Cesar Ramos
Hola,
Me gustaría sabar si existe alguna forma de leer (introducir datos) a un programa, mientras este se está ejecuntando. Es decir el programa hace unos calculos a partir del valor que le entramos por teclado. Alguien sabe si puedo realizar que mientras siga calculando, pueda introducir el dato y cambie los calculos 'al vuelo'. Espero que me haya explicado, y si alguien tiene alguna idea me la haga saber.

PD. Programando en C.
  Respuesta:  Luis Alfonso
Para mejorar el programa que te he indicado lo mejor que podrías hacer es invocar al procedimiento que realiza los cálculos un mayor número de veces que al que lee los datos, dado que la velocidad con la que pulsaras las teclas no requiere una atención tan rápida, es decir, no requiere un periodo tan pequeño. Ajusta el valor del contador y mira a ver cual es el valor que mejor se adapta a tus necesidades.
El cuerpo del ejecutivo cíclico quedaría de la siguiente manera.

main()
{
int cont = 0;
while(1) {
if (cont == 30) {
Leer_Entrada_Teclado();
cont = 0;
}
Realizacion_de_Calculos();
cont++;
}
}

Si los cálculos son muy complejos quizás necesites reducir el valor del contador.
También, puedes partir el procedimiento de realizar los cálculos si te interesa.
Un saludo,
Luis.
  Respuesta:  Luis Alfonso
Hola César:
Para hacer lo que tu dices lo mejor es que plantees tu aplicación como un sistema concurrente, que en el caso de un lenguaje como C no es posible implementar estrictamente dado que no es un lenguaje de esas caracteristicas. La solución a tu problema podría plantearse de la siguiente manera. Imagina un bucle infinito en el que se ejecutan entrelazadamente dos procedimientos, uno que realiza los cálculos y otro que atiende la entrada por teclado. Es una especie de "ejecutivo cíclico" (Técnica que se utiliza en los sistemas de tiempo real donde no existe un SO multitarea).

Ej:

void Leer_Entrada_Teclado();
void Realizacion_de_Calculos();

main()
{
while(1) {
Leer_Entrada_Teclado();
Realizacion_de_Calculos();
}
}

char cadena[255];

void Leer_Entrada_Teclado()
{
/* Leer caracteres con una funcion como getch() e ir
metiendolos en una cadena y transformarlos
a enteros o reales, según sea el caso */
/* Si se pulsa el caracter de borrado deberás eliminar
un carácter de esta cadena que va guardando los
caracteres */
}

void Realizacion_de_Calculos()
{
/* Realizacion de los cálculos pertinentes a partir
de los valores números obtenidos en la función
Leer_Entrada_Teclado */
}

Para que ambos procedimientos puedan trabajar sobre los mismos datos emplea variables globales. No vas a tener problema de compartición de recursos (variables) dado que se ejecutan en exclusión mutua, es decir, primero uno, luego el otro.
Espero que te sirva de ayuda.
Un saludo,
Luis.

    Pregunta:  7044 - ALGORITMO DE FUSION
Autor:  Daniel Edgardo bastonero
Quisiera saber si alguien sabe o la implementacion del algoritmo de ordenamiento por fusion de la forma correcta para ordenar un vector que se encuntra desordenado.
  Respuesta:  sinapse
Aqui tienes una version recursiva para ordenar tablas de enteros.
Empieza ordenado subtablas pequeñas (de tamaño 1, sigue la recursividad) y las va combinando (al ir volviendo de las llamadas recursivas). No se te olvide incluir y ::

int MergeSort(iint * T,int P,int U)
{
int M;

if (P>U) return -1;
else {
M=(P+U)/2; // Este es el pivote
if (MergeSort(T,P,M)==-1) return -1;
if (MergeSort(T,M+1,U)==-1) return -1;
Combinar(T,P,U,M);
}
}

int Combinar(int * T,int P,int U, int M)
{
int * Aux; // Tabla auxiliar
int i,j,k; // Indices para recorrer las tablas

if ((Aux=(int*)malloc((U-P+1)*sizeof(int)))==NULL) return -1;

i=P; j=M+1; K=p;

while ((i<=M)&&(j<=U)) {
if (T[i]else Aux[k]=T[j++];
k++;
}

if (i>M) // Si se ha pasado i
while(j<=U) Aux[k++]]=T[j++];
else
while(i<=M) Aux[k++]=T[i++];

T=Aux; // Hay que copiar Aux en T, pero no aseguro que funcione asi
free(Aux);
}

Pues eso, si quieres una version no recursiva o algun otro algoritmo solo escribeme.
Salu2

    Pregunta:  7108 - MULTIPROCESO
Autor:  roberto guzman
como puedo desarrollar un programa en borland C++ de dos para que ejecuta dos funciones al mismo tiempo, que datos debo guardar de cada proceso y como podria conmutar entre procesos, algo asi como alt + tab de windows para cambiar entre los programas como puedo cachar por ejemplo Alt - shitf o algun otra combinacion de teclas para poder ver los procesos, y otra como debo determinar el tiempo para cada proceso
  Respuesta:  Nohé Ramón Cázarez Castro
Si entendí bien lo que estás preguntando, lo puedes solucionar con threads, debes crear una clase thread para de esta poder sacar procesos independientes que corran al mismo tiempo. Y cómo cambiar entre ellas con combinaciónes de teclas tambien lo puedes hacer con otro thread, el cual estará siempre al pendiente de que teclas se oprimen, solo es necesario que las identifiques y listo.

Felicies desarrollos...

    Pregunta:  7213 - PROBLEMAS CON DIRECTINPUT
Autor:  Antonio Estrada Villegas
Buenas. Tengo un pequeño problema con direct Input y las "colisiones" entre teclas (quiero pensar que es un problema mio, y supongo que así es)

Estoy haciendo un jueguecito, y cuando pulso las teclas arriba e izquierda, no detecta la pulsación del espacio.
¿Cuando tengo que llamar a la función GetDeviceState?
¿Tengo que llamar a la función Adquire siempre o solo cuando detecto que he perdido el control del dispositivo?

Espero vuestra respuesta. Gracias.
  Respuesta:  Rommel Medina
Se debe a la arquitectura de las PC es normal asi funciona ese dispositivo puedes intentar jugar cualquier otro juego para dos personas sobre el mismo teclado y solo lo vas a bloquear, ya que estas usando directinput mejor usa un jostick.

    Pregunta:  7215 - OLEDB WITH VISUAL C++
Autor:  Paula Senor
Quiero migrar mi aplicación a SQL y no utilizar ODBC, ya que es muy lento. Mi idea era a través de OLEDB, que es otra de las opciones que brinda Visual C cuando uno crea sus Recordsets, pero no me habilita esta opción. Debo estar haciendo algo mal. Agradecería al que me pueda ayudar.
  Respuesta:  Juan Pablo Crossley
Para poder usar interfaces de ADO debes importar la libreria de msado15.dll, esto lo haces con la instrucción:
#import "c:\archivos de programa\archivos comunes\system\ado\msado15.dll" no_namespace rename("EOF", "adoEOF")

posteriormente puedes crear instancias de Objetos ADO Connection y ADO Recordset de esta manera:

_ConnectionPtr c;
c.CreateInstance(__uuidof(Connection));

y

_RecordsetPtr r;
r.CreateInstance(__uuidof(Recordset));

puedes referirte a la documentación de ADO para los metodos que aceptan cada uno, pero basicamente son... faciles de usar, por ejemplo para abrir una conexion con SQL Server y un servidor llamado Pruebas:

c->Open("Provider=SQLOLEDB; Data Source=Pruebas", "sa", "", -1);

para abrir un recordset:

r->Open("SELECT * FROM ACCOUNT", c.GetInterfacePtr(), adOpenDynamic, adLockBatchOptimistic, 0);

VARIANT v = r->GetCollect("Campo1");

si el campo es de tipo VT_BSTR puedes obtener el valor asi:

BSTR b = v.bstrval;

... si tienes dudas me cuentas..

    Pregunta:  7346 - WEBCAM
Autor:  Aarón Medel Muñoz
hola
tengo que hacer un programa que maneje una webcam o sea que solo capture imagenes, la webcam puede ser por usb o por paralelo, espero que alguien haya tenido experiencia programando webcam en c,vc,borland,builder...
gracias
  Respuesta:  paco22
Prueba con esto en VISUAL C++ 5.0

HWND hcap=capCreateCaptureWindow(NULL,WS_CHILD|WS_VISIBLE,LEFT+2+1*(CAM+3),2+1*(CAM+3),CAM,CAM,this->m_hWnd,0);
if (hcap!=NULL)
{
capDriverConnect(hcap,driver);
capPreviewRate(hcap,33);
capPreviewScale(hcap,false);
capPreview(hcap,true);
}

    Pregunta:  7348 - OCULTAR VENTANA HIJA
Autor:  Adelaida Lejarazu
Estoy haciendo una aplicación MDI en Visual C++ 6.0 del tipo view/document. El problema que tengo es que las ventanas hija ( MDIChildWindow)contienen un diálogo con lo cual no necesito que me aparezca la ventana blanca de la aplicación hija. Hay alguna manera de hacer desaparecer esta ventana ? He intentado reescribir el precreateWindow pero me da problemas. Gracias de antemano.
  Respuesta:  Jaime Olivares
En el objeto CWinApp, funcion miembro InitInstance(), elimina la llamada a las funciones ParseCommandline() y ProcessShellCommand()

    Pregunta:  7382 - COMO CAMBIO LA FORMA DE UNA VENTANA
Autor:  Dragon Flare
Quiero hacer un programa en C++ que cree una ventana, que tenga cualquier forma y cualquier apariencia, como las ventanas de WinAmp, MusicBOX, etc. No se como hacer que el fondo de la ventana sea eliminado cada vez que muevo la ventana y sin que dañe a lo que está debajo de ella.

Agradesco cualquier ayuda
  Respuesta:  Mario Zúñiga Trejo
Dragon:
Te sugiero que revises la siguiente página www.codeguru.com hay un articulo para darle apariencia y texturas a tus ventanas creo que el articulo se llama skins.

    Pregunta:  7392 - COMO IMPORTO UNA DLL
Autor:  Dragon Flare
En Visual C++ como exactamente importo una DLL. ya que hice una, pero no se como utilizarla en un proyecto normal. No se si hay que poner algo en los Settings, pero alguien me dijo que tengo que utilizar los .lib, pero la verdad no tengo ni la más minima idéa de como hacerlo
  Respuesta:  Ilec Naturailec
en efecto, en project,Settings, en la pestaña Link, hay una parte que dice "Object/library modules" ahi le pones el .lib de tu DLL,

    Pregunta:  7446 - QUE ES EL COMANDO BOX EN C++, C .
Autor:  javier millan
El comando BOX se utiliza para crear una linea, o un cuadro en C, C++. solicito la colaboracion de ustedes sobre este comando, o funcion.

muchas gracias por la colaboracion.
  Respuesta:  sinapse
Lo que yo se sobre el comando box es que es una funcion perteneciente a las librerias ncurses de Linux. Para usarlo, aparte de bajarte las librerias e instalarlas,debes incluir <ncurses.h> en tu codigo, y al compilar añadir la opcion -lncurses. Un ejemplo: si has creado un programa graf.c, para crear el ejecutable --> gcc -o graf graf.c -lncurses.

En cuanto a su prototipo es :
int box(WINDOW * win,chtype verch,chtype horch)

y lo que hace es rellenar la ventana "win" con caracteres, usando "verch" como caracter para trazar lineas verticales y "horch" para las horizontales.
Para mas info e-mail me

|<  <<  21 22 23 24 25 26 27 28 29 30 31  >>  >|