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