|
Mostrar Temas
|
Páginas: 1 2 3 [4]
|
31
|
Programación / Programación Visual Basic / Calculadora-Duda
|
en: 17 Julio 2009, 01:08 am
|
Hola, analizando ayer la calculadora de windows me ha quedado una duda para hacer una implementación en vb.
Pareciera que mi cerebro está algo congelado peor no logro entender la siguiente lógica:
Para realizar las operaciones, uno ingresa un número, escoge la operación, y luego ingresa otro número,..., todo esto N veces. Bien, la calculadora no borra nunca la pantalla entre un número y otro número; lo que yo pienso es que existe una bandera que cambia a un TRUE cuando se escoge una operación, luego cuando se ingresa el próximo número, se analiza si esta bandera está en TRUE, si es así guarda el resultado en una variable, limpia el textbox y uno sigue escribiendo normalmente, ¿esto es correcto?
|
|
|
33
|
Programación / Ejercicios / Pascal-Agenda
|
en: 13 Julio 2009, 04:37 am
|
Hola aqui les dejo una parte de la agenda que estoy haciendo: program Untitled; uses crt; type Persona= record Nombre:string[10]; Telefono:string[10]; end; var option:integer; Friend:Persona; Fichero:file of Persona; nameFile:string; buscado:integer; adato:Persona; begin repeat //Menu clrscr; nameFile:='c:\AGENDA.txt'; writeln('1) Agregar persona'); writeln('2) Buscar persona'); writeln('3) Salir de agenda'); //Validar opcion repeat writeln('Elige opcion:'); readln(option); until (option>0) and (option<=3); case option of 1: begin writeln('AGREGANDO PERSONA'); writeln('INGRESA NOMBRE:'); readln(Friend.Nombre); writeln('INGRESA TELEFONO:'); readln(Friend.Telefono); Assign(Fichero,nameFile); Reset(Fichero); Write(Fichero,Friend); Close(Fichero); end; 2: begin writeln('BUSCANDO'); readln(buscado); Assign(Fichero,nameFile); reset(Fichero); seek( fichero, buscado ); read(fichero,adato); writeln('Nombre:',adato.Nombre); writeln('Telefono:',adato.Telefono); close(Fichero); end; 3:writeln('Seleccionaste salir') end; readln(); until option=3; end.
Un saludo
|
|
|
34
|
Programación / Programación Visual Basic / Duda GetCursorPos
|
en: 29 Junio 2009, 03:41 am
|
Hola... Estoy en un proyecto donde utilizo la función mencionada, con el fin de mostrar en una etiqueta la posición exacta del mouse a medida que se va moviendo. El problema es que lo utilizo de la siguiente manera: Private Sub Form_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single) GetCursorPos pt Label3.Caption = "X:" & Str$(pt.x) & " Y:" + Str$(pt.y) End Sub
Ciertas veces, es medio "lenta" la letura y cuando muevo el mouse tarda un segundo y medio en refrescar. Será mejor colocar un timer?
|
|
|
35
|
Programación / Programación Visual Basic / Linux-Ver procesos(GAMBAS)
|
en: 24 Junio 2009, 01:36 am
|
Tengo una duda. Quiero comenzar a leer y escribir procesos pero todavía no se muy bien sobre las funciones para editar memoria. Son las mismas que en windows? Me refiero a readprocessmemory,writeprocessmemory? Y con respecto a las ventanas? Ya no puedo utilizar seguramente findwindowsex, como sería en linux?
|
|
|
36
|
Programación / Programación Visual Basic / Show_Hide_Desktop
|
en: 14 Junio 2009, 19:39 pm
|
Hola hace unas 2 horas se me dio la idea de hacer un programita para ocultar y mostrar el escritorio. A algunos seguro les será bienvenido a otros no, pero es sólo para compartir experiencia. Option Explicit Private Declare Function SetErrorMode Lib "kernel32" (ByVal wMode As Long) As Long Private Declare Sub InitCommonControls Lib "Comctl32" () Private Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" ( _ ByVal hWnd1 As Long, _ ByVal hWnd2 As Long, _ ByVal lpsz1 As String, _ ByVal lpsz2 As String) As Long Private Declare Function ShowWindow Lib "user32" ( _ ByVal hwnd As Long, _ ByVal nCmdShow As Long) As Long Private Const SW_SHOW = 5 Private Const SW_HIDE = 0 Private Const NIM_ADD = &H0 Private Const NIM_MODIFY = &H1 Private Const NIM_DELETE = &H2 Private Const NIF_MESSAGE = &H1 Private Const NIF_ICON = &H2 Private Const NIF_TIP = &H4 Private Const WM_LBUTTONDBLCLK = &H203 Private Const WM_LBUTTONDOWN = &H201 Private Const WM_RBUTTONUP = &H205 Private Const KEY_TOGGLED As Integer = &H1 Private Const KEY_PRESSED As Integer = &H1000 Private Type NOTIFYICONDATA cbSize As Long hwnd As Long uId As Long uFlags As Long ucallbackMessage As Long hIcon As Long szTip As String * 64 End Type Dim sysTray As NOTIFYICONDATA Private Sub Command1_Click() MsgBox " Hacer Doble click en el ícono para reestaurar el Form", vbInformation, "SH_DEKTOP" Call Colocar_Tray(1000) End Sub Private Sub Command2_Click() Call Quitar_Systray End Sub Sub Colocar_Tray(Intervalo As Integer) With sysTray .cbSize = Len(sysTray) .hwnd = Me.hwnd .uId = 1& .uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE .ucallbackMessage = WM_LBUTTONDOWN .hIcon = Image1.Picture End With Call Shell_NotifyIcon(NIM_ADD, sysTray) Me.Hide Timer1.Interval = Intervalo End Sub Sub Quitar_Systray() With sysTray .cbSize = Len(sysTray) .hwnd = Me.hwnd .uId = 1& End With Call Shell_NotifyIcon(NIM_DELETE, sysTray) End Sub Private Sub Command3_Click() End End Sub Private Sub Form_Initialize() Call SetErrorMode(2) Call InitCommonControls Me.Caption = "SH_DEKTOP" End Sub Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Dim msg msg = X / Screen.TwipsPerPixelX If msg = WM_LBUTTONDBLCLK Then mnuMostrar_Click ElseIf msg = WM_RBUTTONUP Then Me.PopupMenu mnuPopup End If End Sub Private Sub mnuMostrar_Click() Timer1.Interval = 0 Me.Show End Sub Private Sub mnuSalir_Click() Unload Me End Sub Private Sub Timer1_Timer() sysTray.hIcon = Image1.Picture Call Shell_NotifyIcon(NIM_MODIFY, sysTray) End Sub Private Sub Form_Load() Image1.Visible = False Command1.Caption = " Colocar en el systray " Command2.Caption = " Quitar del sysTray " Command3.Caption = "Salir" Timer2.Enabled = True Timer2.Interval = 100 End Sub Private Sub Form_Unload(Cancel As Integer) Quitar_Systray End End Sub Private Sub Timer2_Timer() If GetKeyState(vbKeyF10) And KEY_PRESSED Then Dim HWND_Escritorio As Long On Error Resume Next HWND_Escritorio = FindWindowEx(0&, 0&, "Progman", vbNullString) Call ShowWindow(HWND_Escritorio, SW_HIDE) ElseIf GetKeyState(vbKeyF11) And KEY_PRESSED Then On Error Resume Next HWND_Escritorio = FindWindowEx(0&, 0&, "Progman", vbNullString) Call ShowWindow(HWND_Escritorio, SW_SHOW) End If End Sub
|
|
|
37
|
Programación / Ejercicios / Algoritmia-Ejercicios introductorios.
|
en: 13 Junio 2009, 23:26 pm
|
Variables Simples. Problema 1: Diseñe un diagrama para resolver una ecucación cuadrática. Problema 2: N! se define como n!=1*2*3*4...*(n-1)*n, diseñe un algoritmo que calcule n! con n>=0. Problema 3:Dada una lista de N números, desarrollar un algoritmo que permita determinar el más grande. Problema 4: Diseñe un programa para encontrar el segundo número más grande de N números distintos. Problema 5: Diseñe un programa que permita descomponer un número N en sus dígitos individualmente. Problema 6: Dado un número real mostrar la cantidad de dígitos de la parte entera y luego la cantidad que posee la parte decimal. Problema 7: Dado un número NUM que se encuentra en base B con 1<B<10, mostrar todos los enteros entre 0 y NUM en base B. Ejemplo: NUM=10 B=2 Mostrar: 0 1 10 NUM=22 B=3 Mostrar: 0 1 2 10 11 12 20 21 22 Problema 8: Desarrollar un algoritmo para generar los primeros K primeros números primos de la serie Fibonacci. Ejemplo: K=6 1 2 3 5 13 89 Problema 9: Diseñar un diagrama que dado un número lo descomponga en sus factores primos, informando la cantidad de veces que dicho factor primo integra el número. La idea es ir resolviendo los problemas de a poco en distintos lenguajes. Se permitirán diagramas y pseudocódigo.
|
|
|
39
|
Programación / Ejercicios / Ejercicios con arrays
|
en: 5 Junio 2009, 00:38 am
|
Ejercicio: Se posee un mazo de cartas españolas sin comodines, de dicho mazo sacar 1 carta a la vez, hasta obtener 3 números iguales sin importar el palo, indicar la secuencia de cartas obtenidas y la cantidad de cartas ingresadas sobre el proceso.#include <iostream> using namespace std; int mi_mazo[100],secuencia[100]; int main() { bool e=0; int i=0; int j,k,AUX,n; while(!e) { i++; cout<<"Ingrese carta: "<<endl; cin>>mi_mazo[i]; secuencia[i]=mi_mazo[i]; n=i; for(j=2;j<=n;j++) { AUX=mi_mazo[j]; mi_mazo[0]=AUX; k=j-1; while(AUX<mi_mazo[k]) { mi_mazo[k+1]=mi_mazo[k]; k--; } mi_mazo[k+1]=AUX; } for(j=1;j<=n;j++) { if((mi_mazo[j]==mi_mazo[j+1])&&(mi_mazo[j]==mi_mazo[j+2])) { e=1; } } } cout<<"Cantidad de cartas"<<endl; cout<<"Secuencia"<<endl; for(i=1;i<=n;i++) { cout<<secuencia[i]<<","; } system("PAUSE"); return 1; }
|
|
|
40
|
Programación / Programación Visual Basic / Problema eliminacion elementos
|
en: 31 Mayo 2009, 00:48 am
|
Aver si por aqui me pueden ayudar: El enunciado consiste en borra los numeros de una lista que posean mayor cantidad de digitos pares que impares. El problema que tengo es el siguiente: N=4 array={1,2,3,4} array con eliminaciones={1,3} N=10 array={1,2,3,4,5,6,7,8,9,10} array con eliminaciones={1,3,4,6,7,9} cuando tendria que ser: array con eliminaciones={1,3,5,7,9,10}Y otro error: array={2,2,5} array con eliminaciones={2,5} Es decir cuando existen posiciones iniciales consecutivas, no asi en array={5,2,2} array con eliminaciones={5} Private Sub Form_Load() cnt_p = 0 cnt_i = 0 Dim lista(100) As Integer Dim elim(100) As Integer Label1.Caption = "" 'Array Label2.Caption = "" 'Array con eliminaciones Label3.Caption = "" 'Posiciones a eliminar MsgBox "Inicializacion", vbOKOnly k = 0 cant = InputBox("Cantidad: ") N = Val(cant) For i = 1 To N entero = InputBox("Numero: ") num = Val(entero) lista(i) = num Next For i = 1 To N Label1.Caption = Label1.Caption & lista(i) & "," Next For i = 1 To N d_num = lista(i) 'Separo los digitos While d_num <> 0 dig = d_num Mod 10 If dig Mod 2 = 0 Then 'Compruebo si son multiplos pares cnt_p = cnt_p + 1 End If If dig Mod 2 <> 0 Then cnt_i = cnt_i + 1 End If d_num = d_num \ 10 Wend If cnt_p > cnt_i Then 'Si la cantidad de digitos pares es mayor a las impares k = k + 1 elim(k) = i 'Array que contiene las posiciones End If cnt_p = 0 cnt_i = 0 Next For i = 1 To k Label3.Caption = Label3.Caption & elim(i) & "," Next For i = 1 To k pos = elim(i) For j = pos To (N - 1) lista(j) = lista(j + 1) Next N = N - 1 Next For i = 1 To N Label2.Caption = Label2.Caption & lista(i) & "," Next End Sub
|
|
|
|
|
|
|