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

#21
Programación C/C++ / Notación Polaca Inversa
15 Septiembre 2010, 07:37 AM
Buenas! he estado trabajando en este programa que convierte una cadena en notación Infija a notación postfija pero me dá problemas el PUSH!, en linux medice VIOLACIÓN DE SEGMENTO y en windows solo se cuelga el programa

se que son los push, xq si pongo solo números me lo dá (tmb si comento los PUSH)

alguna idea?, que estóy haciendo mal gracias :D
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int push(char *pila, char **tope, int n, char dato)
{
if(pila+n==*tope)
return 1;
else
{
**tope = dato;
(*tope)++;
return 0;
}
}

int pop(char *pila, char **tope, char *dato)
{
if(pila==*tope)
return 1;
else
{
(*tope)--;
*dato= **tope;
return 0;
}
}

int tipoparentesis(char valor)
{
switch (valor)
{
case '(' : return 1;
case ')' : return 1;
case '[' : return 2;
case ']' : return 2;
case '{' : return 3;
case '}' : return 3;
default: return 0;
}
}
int presedencia(char dato, char valor)
{
int x, y, as;
switch (dato)
{
case '+' : x=4; as=1; break;
case '-' : x=4; as=1; break;
case '*' : x=3; as=1; break;
case '/' : x=3; as=1; break;
case '^' : x=2; as=2; break;
default: x=0;
}
switch (valor)
{
case '+' : y=4; break;
case '-' : y=4; break;
case '*' : y=3; break;
case '/' : y=3; break;
case '^' : y=2; break;
}
if( (x <= y && as==1) || (x >= y && as==2) )
{
return 1;
} else {
return 0;
}

}


main()
{
char entrada[50], salida[50],temporal[2];
char *pila, *tope, *dato, val;
int i, tam, tam1;
pila = (char *)malloc(sizeof(char)*50);
tope = pila;
printf("Dame tu cadena en infija\n");
scanf("%s",entrada);
tam = strlen(entrada);
for(i=0; i<tam; i++)
{
val = entrada[i];
if (val == '+' || val == '-' || val == '*' || val == '/' || val == '^')
{
nuevo:
if((pop(pila,&tope,dato))== 0)
{
            if (presedencia(*dato,val) == 1)
{
temporal[0]=*dato;
strcat(salida,temporal);
goto nuevo;
} else {
push(pila,&tope,12,*dato);
push(pila,&tope,12,val);
}
} else {
push(pila,&tope,12,val);
}

} else if(val == '(' || val == '[' || val == '{')
{
push(pila,&tope,tam,val);
}

else if ((val == ')') || (val == ']') || (val == '}'))
{
again:
if(tipoparentesis(val) != tipoparentesis(*dato))
goto error;

if((pop(pila,&tope,dato)) != 0)
goto error;

if( (*dato == '(' && val == ')') || (*dato == '[' && val == ']') || (*dato == '{' && val == '}') )
{
} else {
temporal[0]=val;
strcat(salida,temporal);
goto again;
}
} else {
temporal[0]= val;
strcat(salida,temporal);
}
}
while(*tope != *pila)
{
if((pop(pila,&tope,dato)) == 0)
{
if( *dato == '(' || *dato == '[' || *dato == '{')
goto error;

temporal[0]=*dato;
strcat(salida,temporal);
}
}
printf("Tu cadena en postfija es:");
printf("%s\n",salida);
system("pause");
return 0;
error:
printf("Tu ecuación está mal formada");
return 1;
}


#22
hummm algo mas facil que se me ocurre es mandar el text asi

|Text1|VALOR DEL TEXT1

etc..

y asi cambias

y al recibirlo haces un SPLIT con |

para saber a que Text va y el valor
#23
Pues Estoy Haciendo Un Programa Cliente/Servidor

Que Envia Una Imagen Por WinSock (uso CSocketMaster)

pero el problema que tengo es que ENVIA A 8bytes por SEGUNDO!!!!!!!

alguien me puede ayudar y decirme xq?

aqui dejo el codigo, El que envia tiene un MODULO para convertir Imagen BMP a JPG
pero ese no lo adjunto el codigo, xq de ahi funciona perfecto

ya intente COPILANDOLOS y DESDE VB6,

La conexion la hago el que ENVIA desde una Maquina Virtual,

de hecho intenté en la misma maquina, es decir SIN LA VIRUTAL

y me transfiere = a 8Bytes por segundo, de hecho despues de intentarlo varias veces AHORA ME TRANSFIERE a 4bytesporsegundo

tmb lo intente TODO (enviar y recibir) desde la maquina virtual y el mismor resultado

DEMASIADO LENTO!!

alguna idea?


Recibe:
Dim WithEvents WS1 As CSocketMaster
Dim Imagen() As Byte
Dim Flag As Boolean
Dim Tamaño As Long
Dim lBytes As Long

Private Sub Command1_Click()
   
    WS1.CloseSck
    WS1.Listen
   
End Sub

Private Sub Form_Load()

    Set WS1 = New CSocketMaster
    WS1.LocalPort = 6969
    WS1.CloseSck
    WS1.Listen
   
End Sub

Private Sub Timer1_Timer()
    Label1.Caption = WS1.State
End Sub

Private Sub WS1_ConnectionRequest(ByVal requestID As Long)
   
    WS1.CloseSck
    WS1.Accept requestID
   
End Sub

Private Sub WS1_DataArrival(ByVal bytesTotal As Long)

    If Flag = False Then
        WS1.GetData datos, vbLong
        Tamaño = datos
        Open "C:\Captura.jpg" For Binary Access Write As #1
        Flag = True
    End If
   
    If Flag Then
        lBytes = lBytes + bytesTotal
        Label2.Caption = lBytes
        WS1.GetData Imagen
        Put #1, , Imagen
        If lBytes >= Tamaño Then
            Close #1
            Flag = False
            Image1.Picture = LoadPicture("C:\Captura.jpg")
            lBytes = 0
        End If
    End If
   
End Sub


Envia:
Dim WithEvents WS1 As CSocketMaster
Dim Imagen() As Byte
Private Sub Form_Load()
   
    Set WS1 = New CSocketMaster
    WS1.RemoteHost = "HACK01"
    WS1.RemotePort = 6969
    WS1.CloseSck
    WS1.Connect
   
End Sub

Private Sub Timer1_Timer()
    Label1.Caption = WS1.State
End Sub

Private Sub Timer2_Timer()
   
    Set Picture1.Picture = CaptureScreen()
    SavePicture Picture1.Picture, App.Path & "\TmpBmp.bmp"
    BMPtoJPG App.Path & "\TmpBmp.bmp", App.Path & "\TmpPic.jpg"
   
    If WS1.State = sckConnected Then
        Enviar_Imagen
    End If
   
End Sub

Private Sub WS1_CloseSck()
   
    WS1.CloseSck
    WS1.Connect
   
End Sub

Private Function Enviar_Imagen()
   
    WS1.SendData FileLen(App.Path & "\TmpPic.jpg")
    Open App.Path & "\TmpPic.jpg" For Binary Access Read As #1
    Get #1, , Imagen
    Close #1
    WS1.SendData Imagen

   
End Function
#24
Humm estuve viendo

y solo encontre un codigo que convierte TODOS los bmp a un avi

eso es todo lo que hace jeje, no graba directamente en AVI,

asi que seguire intentando :D

Gracias
#25
PSC supongo que es Planet Source Code jeje


checando y comento como me fue

GRACIAS
#26
si algo asi estuve pensando

ya que estas teclas (las del brillo)

funcionan  en el BIOS como en LINUX como en el BIOS mientras sale el logo de Xp cargando etc..

osea que es algo de la computadora

alguna idea de como poder modificar el brillo?

mi compu traia un programa que hacia eso ePower pero ahora no lo encuentro por ningun lado ni en la pagina de acer xq ya solo está para VISTA y las versiones que encuentro para XP no sirven
#27
Humm estuve buscano en el foro y no encontre lo que me dices,

me podrias dar alguna ayuda

o referencia para buscar


gracias :D
#28
Private Sub Form_Load()
If App.PrevInstance = True Then
MsgBox "ya abierto"
End
End If
End Sub



tan facil como eso
#29
humm el problema

es que lo tiene que hacer sin que el usuario se dé cuenta

si no pues que haga de TODAS las imagenes que hay

una secuencia en AVI

desde image_1 hasta image_200 por ejemplo y que las una como un GIF y la guarde en AVI

eso me ayudaria

#30
Nop tampoco funcian de este modo

    keybd_event 149, 0, 0, 0
    keybd_event 149, 0, KEYEVENTF_KEYUP, 0

Alguna otra idea?'