Autor
|
Tema: [AYUDA]Funcion avanzada (Leído 8,349 veces)
|
anonimo12121
|
hola necesito ayuda por que no se si seria posible de alguna forma pasarle a 1 parametro de funcion algo como esto int a,b; int func(int parametro){ }
func(a || b);
o
fun (a && b);
saludos
|
|
|
En línea
|
|
|
|
h0oke
Desconectado
Mensajes: 2.059
Coder ~
|
Supongo que podrías hacerlo, pero en el parámetro deberías indicar un tipo booleano, ya que "a&&b" o "a || b" devuelven un tipo de dato booleano. (Ahora lo intento) EDITADO Espero que te refieras a esto: #include <iostream> #define TRUE 1 #define FALSE 0 int funcion(bool z) { if(z) return 4; else return 0; } int main() { int a; bool b = TRUE; bool c = FALSE; a = funcion(b && c); std::cout<<"Valor funcion: "<<a<<std::endl; return 0; }
|
|
« Última modificación: 14 Mayo 2010, 13:31 pm por dr.~ »
|
En línea
|
|
|
|
anonimo12121
|
si creo que si. ahora lo probare y te aviso.
EDITO: pero tiene que ser BOOL o podria ser por ejemplo un int ?.
|
|
|
En línea
|
|
|
|
Gallu
Desconectado
Mensajes: 247
|
Puede ser perfectamente un int , solo recuerda que en C y C++ 0 es false y cualquier valor distinto de 0 es true prueba esto ... #include <stdio.h> void my_funci(int valor); int main(){ int a = 1 , b = 0; my_funci(a&&b); my_funci(a||b); my_funci(a&b); my_funci(a|b); } void my_funci(int valor){ }
|
|
|
En línea
|
Nadie alcanza la meta con un solo intento, ni perfecciona la vida con una sola rectificación, ni alcanza altura con un solo vuelo.
|
|
|
h0oke
Desconectado
Mensajes: 2.059
Coder ~
|
Puede ser un int, ya que teóricamente en C/C++ el TRUE y FALSE, corresponden a un 1 lógico y un 0 lógico.
(EDIT: Me ganaron la respuesta)
EDIT2:
Creo que lo más conveniente, es declarar un tipo bool ya que precisamente se está evaluando una operación booleana, que en el fondo debería devolver un "tipo boolean", sólo es cuestión de gustos en esta parte... yo eligiría el bool pero no sabría fundamentar BIEN por qué razón...
|
|
« Última modificación: 14 Mayo 2010, 13:41 pm por dr.~ »
|
En línea
|
|
|
|
anonimo12121
|
Hola miren esto es lo que quiero, pero no me sale. si algun de las 2 variables puesta en el parametro x es = x devuelve x valor. #include <iostream> using namespace std; int a1=6; int a2=5; int a3; int funcion(int v1){ if(v1==6)return 1; } int main(int argc,char *argv[]){ a3=funcion(a1 && a2); cout << a3; cin.get(); }
pero me devuelve 16364.
|
|
|
En línea
|
|
|
|
Gallu
Desconectado
Mensajes: 247
|
Hombre , al hacer esto a3=funcion(a1 && a2); dentro de la función v1 = 1 y no a 6 , el valor 16364. es basura simplemente
|
|
|
En línea
|
Nadie alcanza la meta con un solo intento, ni perfecciona la vida con una sola rectificación, ni alcanza altura con un solo vuelo.
|
|
|
h0oke
Desconectado
Mensajes: 2.059
Coder ~
|
v1 = 6 &&5 /*Esto es 1, no 0*/
Nunca podrá ser un valor distinto de 0 o 1 ya que la operación regresa esos 2 valores.
|
|
|
En línea
|
|
|
|
|
biribau
Desconectado
Mensajes: 181
|
Tu quieres una especie de función superescalar o vectorial(creo que no es lo mismo), eso en C no se puede, habrás de pasarle un array de enteros y procesarlos con un bucle, también te hará falta un límite para el array. int funcion(int *valores, int numero_de_valores) { for(int i =0; i < numero_de_valores; i++) if(valores[i] == 6) return 1; return 0; }
Y para aprovechar las instrcciones SIMD del procesador pues ya no sé, con funciones de alguna librería.
|
|
|
En línea
|
|
|
|
|
|