SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: cybergatita en Miércoles 20 de Septiembre de 2006, 02:10

Título: Operaciones Logicas
Publicado por: cybergatita en Miércoles 20 de Septiembre de 2006, 02:10
Los operadores, &, !, ,|, ^, tambien ~, son los de operaciones y/0 manejo a nivel de bits, junto con los de desplazamiento >> ,<<. pero buscaba algo como esto:

e= !a - b^c + b & d

Buscaba si existiera alguna funcion para implementar este tipo de operaciones en C, pero hasta ahorita solo eh encontrado lo habitual.

Alguien ah necesitado algo al respecto o existira alguna funcion pre-definida?
Título: Re: Operaciones Logicas
Publicado por: JuanK en Miércoles 20 de Septiembre de 2006, 04:26
la verdad no te entiendo que es lo que quieres.
Título: Re: Operaciones Logicas
Publicado por: chimps en Miércoles 20 de Septiembre de 2006, 14:15
no se si entendi bien pero creo que te referis a los operadores logicos como:
AND: &&
OR: ||
NOT: !

ej. lo usarias de la forma: "bool a = b ?? c" (o int en C), y eso te daria el tipico resultado (V si ambos V, F de lo contrario)
Título: Re: Operaciones Logicas
Publicado por: Bicholey en Miércoles 20 de Septiembre de 2006, 18:30
:P  :P  :P

tambien te podria servir sqrt();
Título: Re: Operaciones Logicas
Publicado por: Eternal Idol en Miércoles 20 de Septiembre de 2006, 18:46
Cita de: "Bicholey"
:P  :P  :P

tambien te podria servir sqrt();
¿Que? ¿La raiz cuadrada?
Título: Re: Operaciones Logicas
Publicado por: JuanK en Miércoles 20 de Septiembre de 2006, 18:50
Cita de: "Eternal Idol"
Cita de: "Bicholey"
:P  :P  :P

tambien te podria servir sqrt();
¿Que? ¿La raiz cuadrada?
Me imagino que lo dice por el operador ^ que usualmente en psudocodigo y puede que en otros lenguajes se use para hacer potenciacion, en cuyo caso no seria sqrt() sino pow() .
Título: Re: Operaciones Logicas
Publicado por: Bicholey en Miércoles 20 de Septiembre de 2006, 19:02
:P  :P  :P  :P


podes usarla asi 1/2  raiz de 2  == 4  como si fuera potencia espero me de a entender  como sabes la raiz es el inverso de la potencia , pero poder sacar potencias con raices e inverso   por ejemplo 4 ^ 1/2  = 2.
Título: Re: Operaciones Logicas
Publicado por: Eternal Idol en Miércoles 20 de Septiembre de 2006, 19:15
Ni pow ni sqrt son operadores logicos sino funciones.
Título: Re: Operaciones Logicas
Publicado por: JuanK en Miércoles 20 de Septiembre de 2006, 19:22
Cita de: "YO"
usualmente en pseudodigoy puede que en otros lenguajes se use para hacer potenciacion, en cuyo caso no seria sqrt() sino pow()

En psudocodigo y algunos lenguajes (que no recuerdo)

<!--xc1--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>XCODE </td></tr><tr><td id='XCODE'><!--exc1-->a = b^2; //b elevado al cuadrado
a = b^3; //b elevado al cubo
a = b^n; //b elevado a la nsima potencia<!--xc2--></td></tr></table><div class='postcolor'><!--exc2-->

Alli si se considera ^ como operador logico al igual que + , -, *, /

Si mal no recuerdo en otros lenguajes ^ lo usan como XOR y ~^ como EXOR .
Título: Re: Operaciones Logicas
Publicado por: Bicholey en Miércoles 20 de Septiembre de 2006, 19:32
:lol:  :lol:  :lol:


podran o no ser operadores logicos pero la gatita buscaba estas operaciones:

Cita de: "cybergatita"
pero buscaba algo como esto:

e= !a - b^c + b & d

Buscaba si existiera alguna funcion para implementar este tipo de operaciones en C, pero hasta ahorita solo eh encontrado lo habitual.

Alguien ah necesitado algo al respecto o existira alguna funcion pre-definida?
Título: Re: Operaciones Logicas
Publicado por: JuanK en Miércoles 20 de Septiembre de 2006, 19:34
la verdad no te entiendo que es lo que quiere
Título: Re: Operaciones Logicas
Publicado por: Bicholey en Miércoles 20 de Septiembre de 2006, 19:37
B)  B)  B)

Ami parecer te has vuelto muy tècnico y ya no recuerdas las tipicas preguntas de la escuela o la de tus compañeros...
pues deberiamos de esperar a ver si ella misma nos da algun indicador de que aun existe...
Título: Re: Operaciones Logicas
Publicado por: Eternal Idol en Miércoles 20 de Septiembre de 2006, 19:40
Cita de: "Bicholey"
B)  B)  B)

Ami parecer te has vuelto muy tècnico y ya no recuerdas las tipicas preguntas de la escuela o la de tus compañeros...
pues deberiamos de esperar a ver si ella misma nos da algun indicador de que aun existe...
Y a mi me parece que vos respondes cualquier cosa MUCHAS veces.
Título: Re: Operaciones Logicas
Publicado por: cybergatita en Miércoles 20 de Septiembre de 2006, 19:48
Disculpen por no responder  mucho antes:

por ejemplo  que el usuario tecleara alguna operacion similar a esto:

8&5-15^4 + !4 |10

&= OPERADOR AND
^= OPERADOR XOR
|= OPERADOR OR
! O bien  ~ = OPERADOR NOT

A eso me referia con esos operadores, a nivel de bits.

Eh tratado de buscar como leer algo asi para que me de el resultado, pero no eh encontrado algo con exito.
Por cierto el resultado de esa operacion seria 34, si mis calculos no me fallan.
Tambien estoy buscando en java si habra algo al respecto.
Título: Re: Operaciones Logicas
Publicado por: Eternal Idol en Miércoles 20 de Septiembre de 2006, 19:49
En fin que lo que quiere es interpretar una cadena con LOS OPERADORES LOGICOS de C ... nada de funciones.
Título: Re: Operaciones Logicas
Publicado por: Bicholey en Miércoles 20 de Septiembre de 2006, 20:18
:lol:  :lol:  :lol:

quereis interpretar cadenas y nosotros discutiendo otras cosas , porque no lees toda la cadena y vas separando operadores y jerarquizando las operaciones a realizar o si no es esto por favor se mas clara en lo que pides...
Título: Re: Operaciones Logicas
Publicado por: cybergatita en Miércoles 20 de Septiembre de 2006, 21:00
bicholey:

quereis interpretar cadenas y nosotros discutiendo otras cosas , porque no lees toda la cadena y vas separando operadores y jerarquizando las operaciones a realizar o si no es esto por favor se mas clara en lo que pides


Asi es bicholey podria ser una cadena esta operacion
8&5-15^4 + !4 |10

El problema que me eh visto es la forma en que la debo leer o tomar la cadena para que haga las operaciones deseadas

por ejemplo de dos valores los tomaria asi

printf("teclea primer valor\n")
scanf("%d",&a);
printf("teclea sergundo valor \n");
scanf("%d",&b);

c=15&8;
printf("El valor es:%d\n", 8);




Gracias a todos por sus respuestas y el intereses a mi duda  de una principiante!!
espero ya ser mas claro con esto.-
Título: Re: Operaciones Logicas
Publicado por: JuanK en Miércoles 20 de Septiembre de 2006, 21:09
lo primero es que no puedes seguirlo usando asi.

si vas a analizar toda la cadena captura todo de nua vez en una variable string y una vez tengas la cadena alli inicias la busqueda de operadores y de valores, ya con esto debes ir creando un arbol binario donde unos nodos son los operadores y otros los valores... bueno es algo grande de explicar...

por si acaso averiguate de notacion infijo y postfijo. o si alguien tiene mas tiempo para que te ayude mas detalladamente que lo haga.
Título: Re: Operaciones Logicas
Publicado por: Bicholey en Miércoles 20 de Septiembre de 2006, 21:10
:D  :D

podei hacer esto :


char cadena[30];

printf("teclea la operacion completa\n")
fflush(stdin);
gets(cadena);

/* aqui capturaste toda la cadena */


ya despues podeis procearla mediante ciclos por ejemplo while(car!='!'&&car!='^')
entonces hacer la operacion o como tu creas mas conveniente...
Espero te haya sido de ayuda...
Título: Re: Operaciones Logicas
Publicado por: Bicholey en Miércoles 20 de Septiembre de 2006, 21:15
:whistling:

lo de los arboles se ha tratado mucho en el foro si buscas seguro encuentras algo...
Título: Re: Operaciones Logicas
Publicado por: Eternal Idol en Miércoles 20 de Septiembre de 2006, 21:27
Cita de: "Bicholey"
char cadena[30];

printf("teclea la operacion completa\n")
fflush(stdin);
gets(cadena);

/* aqui capturaste toda la cadena */
Que podriamos titular: Como hacer codigo inseguro ... ahi capturaste todo lo que escriban en consola pero tu variable local no inicializada se puede reventar ...
Título: Re: Operaciones Logicas
Publicado por: cybergatita en Miércoles 20 de Septiembre de 2006, 21:33
Gracias


.. ya me quedo mas amplio para resolver esto.