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
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;
}
si creo que si. ahora lo probare y te aviso.
EDITO: pero tiene que ser BOOL o podria ser por ejemplo un int ?.
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){
printf("\n%d", valor);
}
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...
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.
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
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.
ok gracias
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.
Ya me di cuenta de que no se puede, tendre que buscar otro metodo.
gracias. saludos
azla bit a bit, con un solo &
No entendí muy bien... Qué es lo que necesita?
Cita de: dr.~ en 15 Mayo 2010, 01:11 AM
No entendí muy bien... Qué es lo que necesita?
Yo deduzco que con f(a&&b) quería conseguir f(a) && f(b) ?
NO.
por ejemplo inserto 3 variables en el parametro y en la funcion hay un if, si algun de las 3 variables insertada en el parametro...
Pero entonces ¿por qué razón no creas una función con 3 parámetros? :huh:
Pienso que lo que escribio biribau es lo que necesitas ... ::)
Cita de: dr.~ en 15 Mayo 2010, 13:20 PM
Pero entonces ¿por qué razón no creas una función con 3 parámetros? :huh:
pues por que tendria que hacer 1 if para cada parametro.
Cita de: Didacso en 15 Mayo 2010, 13:20 PM
Pienso que lo que escribio biribau es lo que necesitas ... ::)
Si creo que tambien lo probare .
Gracias por ayudarme tanto, saludos.
Me parece que lo que querés es operaciones con bits, ¿ no ? para empezar no es avanzado ....
el tema es .. cuantos flags querés on y off (mientras menos, mejor), y en base a eso elegís un tipo de dato que logre acaparar esa cantidad de bits, la cantidad de bits es igual o lo más próximo (contando desde arriba) a la cantidad de opciones
#include <stdio.h>
#include <stdlib.h>
/* que sería en binario -> 0000 0000 0000 0000 0000 0000 0000 0001 */
#define BIT_HI 0x1
/* que sería en binario -> 0000 0000 0000 0000 0000 0000 0000 0010 */
#define BIT_WORLD 0x2
/* que sería en binario -> 0000 0000 0000 0000 0000 0000 0000 0100 */
#define BIT_ELHACKER 0x4
/* los 1 no deben superponerse*/
int bitCheck(int Flags,int Bit){return ((Flags & Bit)== Bit);}
void bitAdd(int Flags,int Bit){Flags|=Bit;}
void bitToggle(int Flags,int Bit){Flags^=Bit;}
void bitUnset(int Flags,int Bit){Flags &= ~Bit;}
void mFuncion(int mMask)
{
if (bitCheck(mMask,BIT_HI)) printf(" Hola");
if (bitCheck(mMask,BIT_WORLD)) printf(" Mundo");
if (bitCheck(mMask,BIT_ELHACKER)) printf(" de elhacker.net");
}
int main()
{
printf("\r\nUsando BIT_HI y BIT_WORLD : ");
mFuncion(BIT_HI|BIT_WORLD);
printf("\r\nUsando BIT_HI, BIT_WORLD y BIT_ELHACKER: ");
mFuncion(BIT_HI|BIT_WORLD|BIT_ELHACKER);
return 0;
}
para este ejemplo elegí un tipo de dato muy grande, con un byte o char alcanzaba tranquilamente (8 bits), pero bueh, para ilustrar... también hay funciones que no se usan ahí, pero también las dejé para ilustrar y para no las usé para no liar mucho el ejemplo ...
¿es eso ?
Saludos.
NO lo que queria era meter 3 variables en 1 parametro y si alguna de esas es por ejemplo if(x==1)...
Entonces por qué no un array?
ya tendria que haber un bucle. pero si es lo mejor creo.