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!! :-(
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
Si eso lo entiendo, pero no entiendo como plantear ese ejercicio que puse ahi
El char sabemos que tiene 8 bits, la forma más simple es cuando & y >> para ir leyendo bit a bit en un for
Sigo sin entender como comenzarlo, :-(
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
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......
sabes convertir un char a binario? (obtener los bits)
que no sabes exactamente?
No entiendo como hacer el ejercicio en si. >:(
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? :(
No se están imprimiendo los bits en 1... se están imprimiendo los char que contienen el número 1
Si por ejemplo le pasas 'A' debería retornar 1, ya que esa letra en ascii es 64 (01000000) , los char pueden ser tratados como números , por eso todo lo que te dije de las operaciones binarias
entonces como debo hacerlo, porque la verdad es que se me ocurrio eso solo.
Cita de: engel lex en 2 Noviembre 2016, 20:31 PM
El char sabemos que tiene 8 bits, la forma más simple es usando & y >> para ir leyendo bit a bit en un for
pero no se como plantear eso en el programa
un ejemplo de conversión a binario
#include <stdio.h>
void PrintInBinary( unsigned int decNum )
{
unsigned int bit;
for( bit = 0; bit < 8; bit ++) {
printf( "%c", decNum & bit ? '1' : '0' );
decNum >> 1;
}
printf("\n");
}
int main(void) {
PrintInBinary(126);
return 0;
}
Pero ahi me pide que indique la cantidad de unos que hay
ya te mostré como convertir a binario... piensa que hay que cambiar y has tu funcion
Cita de: gold oscar en 3 Noviembre 2016, 01:37 AM
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......
me indicas que sabes todo de operadores de bit... es simple