Ayuda con esta funcion

Iniciado por gold oscar, 2 Noviembre 2016, 18:49 PM

0 Miembros y 1 Visitante están viendo este tema.

gold oscar

Hola gente, soy muy nuevo en programar y necesito que me ayuden para poder entender esta parte de la materia. Si bien hasta ahora entendí todo lo visto en la materia, esto de funciones me esta dando trabajo, mas específicamente en el pasaje por valor y parámetros. Mi duda es sobre un ejercicio, que no puedo interpretar y no se como hacer, y creo que si puedo entender como se hace este, puedo sacar los demás también.

El ejercicio en cuestión es este:
Implementar una función que devuelva la cantidad de bits en 1 que tiene un char que se le pasa como parámetro por valor y por referencia. Invocarla desde el main y verificar imprimiendo varios casos(hexadecimal y al lado cant de unos).

Alguien podría darme una mano! Es que si bien entiendo la "lógica" del pasaje de parámetros, no se como hacerlo en el programa.

Saludos y disculpen mi ignorancia!!  :-(

engel lex

las funciones tienden a ser en general bastante simples

ejemplo de una función cualquiera...

int nombreDeLaFuncion(int parametro){
    //contenido
    return algo;
}


en general son

tipoRetorno nombreFuncion(tipoParametro nombreParametro){
    //contenido
    return variableDeTipoRetorno;
}


el tipo tanto de funcion como de parametros son int,char, etc...
el return debe ser un valor del mismo tipo que la función

así que si haces por ejemplo una funcion de división que acepte enteros pero retorne float

float division(int dividendo, int divisor){
    float resultado = (float)dividendo/(float)divisor;
    return resultado;
}


(los float entre parentesis es para obligar a que se comporten como y que retornen decimales)

espero resuelva tu duda, si no, explica con más detalle cual fue
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

gold oscar

Si eso lo entiendo, pero no entiendo como plantear ese ejercicio que puse ahi

engel lex

El char sabemos que tiene 8 bits, la forma más simple es cuando & y >> para ir leyendo bit a bit en un for
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

gold oscar

Sigo sin entender como comenzarlo, :-(

engel lex

Recomiendo e estudiar operadores de bits

Es algo básico de c que te puede ayudar mucho más adelante

Aquí hay información básica
http://www.zator.com/Cpp/E4_9_3.htm
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

gold oscar

Ya se todo lo de operadores de bits, lo que no se es como hacer el ejercicio que postee, si alguien aunque sea me ayuda a comenzarlo......

engel lex

sabes convertir un char a binario? (obtener los bits)

que no sabes exactamente?
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

gold oscar

No entiendo como hacer el ejercicio en si. >:(

gold oscar

#9
Hola, disculpen que sea tan pesado, pero esto es lo que se me ocurrio hasta ahora

int cant(char a[30])
       {
           int i=0;

           while(a[i]!=0)
           {
               if(a[i]>='0' && a[i]<='2')
               {
                   i++;
               }
           }
           return(i);
       }


int main()
       {
          char a[30]="11111";
          int j;
          j=cant(a);


           printf("cantidad de bits en 1=%d",j);

           return(0);
       }




se imprime: la cantidad de bits en 1 es=5


estara bien eso?  :(