Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - EAX_

#1
Cita de: ecfisa en 15 Junio 2013, 06:52 AM
Hola EAX_.

Me parece mas natural organizar los datos de las personas en una estructura y crear un arreglo de estructuras para almacenar la totalidad de personas.

Un ejemplo muy simplificado:

...
typedef struct {
 char nombre[30];
 char direccion[30];
 char telefono[15];
 float sueldo;
 ...
} Cpersona;

...

int main()
{
 Cpersona p[1000];
 int inx = 4;
 ...
 /* Ejemplo, referirse a un dato especifico de la
    persona almacenada en la quinta posicion del arreglo: */
  printf("%s", p[inx].telefono);
 ...


Saludos.  :)


Muchas gracias, voy a revisar sobre estructuras en C y luego edito.

Cita de: amchacon en 15 Junio 2013, 12:48 PM
¿C o C++?

En C++ tienes la clase vector que te permite eliminar elementos de un array:
http://www.cplusplus.com/reference/vector/vector/

Gracias por responder, como puse en el título es lenguaje C, de igual forma lo revisaré.
#2
Hola,

Estoy intentando hacer una especie de manejador de usuarios, la idea es guardar datos de personas en un array y ese array guardarlo en otro array que contenga a todas las personas. Estos arrays deben ser modificables y tengo que tener la posibilidad de eliminar o modificar un elemento del array.

Todo esto es para ayudar a una persona, no conozco el lenguaje C y se me ha hecho complicado a pesar de que he buscado material en internet.

De antemano, gracias.

EDITO:

Esta es la idea, pero con strings:
http://rapidpurple.com/blog/tutorials/c-tutorials/programming-in-c-array-of-arrays/
#3
Agradezco tu respuesta, gracias a eso pude llegar a algo más acercado a mi realidad. Encontré algo interesante que es la función RegisterHotKey, con eso logré definir un atajo de teclado que fuera de la aplicación aun es posible ejecutarlo y, con eso, puedo hacer alguna acción (como enviar el texto que necesito) Ahora el único problema es que me gustaría que el HotKey fuese una sola tecla.

Si alguien sabe por favor responder.

Saludos

Código (vbnet) [Seleccionar]

Imports System.Runtime.InteropServices

Public Class Form1
   Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
       If m.Msg = WM_HOTKEY Then
           Dim id As IntPtr = m.WParam
           Select Case (id.ToString)
               Case "100"
                   SendKeys.Send("KEYS TO SEND")
           End Select
       End If
       MyBase.WndProc(m)
   End Sub

 
   Public Const WM_HOTKEY As Integer = &H312


   <DllImport("User32.dll")> _
 Public Shared Function RegisterHotKey(ByVal hwnd As IntPtr, _
                     ByVal id As Integer, ByVal fsModifiers As Integer, _
                     ByVal vk As Integer) As Integer
   End Function

   <DllImport("User32.dll")> _
   Public Shared Function UnregisterHotKey(ByVal hwnd As IntPtr, _
                       ByVal id As Integer) As Integer
   End Function

   Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
       UnregisterHotKey(Me.Handle, 100)
   End Sub

   Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
       RegisterHotKey(Me.Handle, 100, MOD_ALT, Keys.G)
   End Sub
End Class
#4
Hola, gracias por responder. Tengo una duda. Con esa clase que me das se supone que envías mensajes a una ventana en especifico cierto?

Sabes si hay una forma de que (mientras la ventana no esté activa) siga monitoreando mis teclas y pueda activar un evento?

Me gustaría aprovechar el evento OnKeyPress del formulario para lograr enviar algun texto a nivel PC asi como un CTRL + V mientras mi formulario no está activo.

Con respecto a la clase, estuve tratando de entenderla y no lo logré.

Saludos
#5
Hola comunidad,
   He estado investigando sobre este tema en particular hace unos días y no he encontrado lo que necesito. Lo que quiero hacer es que mi programa envíe la instrucción de pegar (CTRL + V) en otra ventana al momento de que yo utilice un atajo de teclado.

Estuve buscando eventos que podrían ayudarme y al final me encontré con una función que me permitió bindear una tecla y pude enviar por teclado lo que quería pegar.

Código (vbnet) [Seleccionar]

   Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message, ByVal keyData As System.Windows.Forms.Keys) As Boolean
       If msg.WParam.ToInt32 = CInt(Keys.F1) Then
           MsgBox("Tecla F1 pulsada")
       End If
      Return MyBase.ProcessCmdKey(msg, keyData)
    End Function


Enviaba la cadena que quiero pegar con Sendkeys.Send() pero el problema es que si no tengo activa la ventana de mi aplicación la tecla no es procesada por el programa.

Confío que alguien me podrá dar una ayudadita

Gracias de antemano y saludos
#6
Solucionado después de un reboot.

Gracias por responder.
#7
GNU/Linux / Re: CAMBIAR DE VERSION
29 Enero 2012, 14:51 PM
Hola,
    Mira lo único que encontré para linux está en el ftp oficial de mozilla
pero es la versión 3.6, mira este link.

http://releases.mozilla.org/pub/mozilla.org/firefox/releases/latest-3.6/linux-i686/

Saludos.
#8
Hola,
   He estado jugando un poco con los adaptadores de red para intentar darle una IP del modelo 192.168.0.X a mi Windows XP en virtualbox y no pude. Como consecuencia mi adaptador de red wlan0 pareciera que no puede conectarse a internet mediante WICD.

¿Hay alguna forma de "restaurarlo" por defecto? O bueno, si alguien se le ocurre donde puede estar el error les dejo mis datos.

iwconfig

lo        no wireless extensions.

eth0      no wireless extensions.

wlan0     IEEE 802.11bgn  ESSID:off/any 
          Mode:Managed  Frequency:2.437 GHz  Access Point: Not-Associated   
          Tx-Power=15 dBm   
          Retry  long limit:7   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:on
         
pan0      no wireless extensions.

wlan2     IEEE 802.11bgn  ESSID:"tty9" 
          Mode:Managed  Frequency:2.437 GHz  Access Point: 00:15:E9:05:81:84   
          Bit Rate=54 Mb/s   Tx-Power=20 dBm   
          Retry  long limit:7   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:off
          Link Quality=63/70  Signal level=-47 dBm 
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:173   Missed beacon:0


ifconfig -a
eth0      Link encap:Ethernet  HWaddr e8:11:32:12:dc:9b 
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Interrupt:16

lo        Link encap:Local Loopback 
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:14174 errors:0 dropped:0 overruns:0 frame:0
          TX packets:14174 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:6298300 (6.0 MiB)  TX bytes:6298300 (6.0 MiB)

pan0      Link encap:Ethernet  HWaddr b2:53:61:b4:b9:62 
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

wlan0     Link encap:Ethernet  HWaddr 4c:ed:de:ec:3b:c3 
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:387691 errors:0 dropped:0 overruns:0 frame:0
          TX packets:285466 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:484055345 (461.6 MiB)  TX bytes:43696143 (41.6 MiB)

wlan2     Link encap:Ethernet  HWaddr d8:5d:4c:8e:56:fc 
          inet addr:192.168.0.199  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::da5d:4cff:fe8e:56fc/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:73731 errors:0 dropped:0 overruns:0 frame:0
          TX packets:46272 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:100444476 (95.7 MiB)  TX bytes:5875320 (5.6 MiB)


lsmod | grep -i ath
lsmod | grep -i ath
ath9k_htc              41720  0
compat_firmware_class     4441  1 ath9k_htc
ath9k                  62974  0
mac80211              183116  2 ath9k_htc,ath9k
ath9k_common            1399  2 ath9k_htc,ath9k
ath9k_hw              307380  3 ath9k_htc,ath9k,ath9k_common
ath                    11186  4 ath9k_htc,ath9k,ath9k_common,ath9k_hw
cfg80211              121811  4 ath9k_htc,ath9k,mac80211,ath
compat                 13272  4 ath9k_htc,ath9k,mac80211,cfg80211
led_class               1757  3 ath9k_htc,ath9k,compat
usbcore                99329  7 ath9k_htc,uvcvideo,compat,usbhid,uhci_hcd,ehci_hcd


Cabe destacar que ahora estoy conectado con mi tarjeta wireless USB.

lsusb | grep -i ath
Bus 001 Device 004: ID 0cf3:9271 Atheros Communications, Inc. AR9271 802.11n

Esta es wlan0:
05:00.0 Network controller: Atheros Communications Inc. AR9285 Wireless Network Adapter (PCI-Express) (rev 01)


Saludos y gracias de antemano!
#9
Ooops, tienes razón. Entonces, estaría correcto ponerlo justo debajo de

Código (cpp) [Seleccionar]
cout << "f = ";
cin >> f;


Y no habría problema.

Gracias denuevo (:
#10
Una vez más gracias por sus respuestas. Imaginé que iba a ser algo tan simple como el resto de la división (Acostumbraba llamarlo "lo que sobra").

Bien, creo haber entendido. Por último les dejo nuevamente el código para que lo vean y agradecería que me dijeran si el orden está correcto.

Código (cpp) [Seleccionar]
#include<cstdlib>
#include<ctime>
#include<iostream>
#include<iomanip>
using namespace std;

int f;
int* num = new int[f];

bool checkrep(int n, int num[])
{
    for(int i = 0; i < f; i++)
        if(n == num[i])
            return true;
    return false;
}

int main()
{

cout << "f = ";
cin >> f;

    srand(time(NULL));
    int n, i;
    for(i = 0; i < f; i++)
    {
       do 
        n = 1 + rand() % f;
        while(checkrep(n, num));
        num[i] = n;
        cout << num[i] << " - ";
}

float prom, sum = 0;
int nmayor = num[0];

for(i = 0; i < f; i++) {
  sum = sum + num[i];
  if(nmayor < num[i])
  nmayor = num[i];
}

prom = sum/f;

        cout << endl << "El mayor de los numeros es: " << nmayor << endl;
        cout << "La suma de los numeros es: " << sum << endl;
cout << "El promedio de los numeros es: " << setprecision(3) << prom << endl;

}


Ahora intentaré validar "f" para que solo se puedan introducir números y en un rango determinado.

Saludos.