hola,
tengo una tranca realizando un programa en devc++ y quisiera saber si me pueden ayudar. Tengo el programa casi finalizado pero me falta una cosa, y no lo logro dar
Este es el enunciado Un número odioso es un número que, cuando se convierte a base 2, tiene un número impar de unos. Por ejemplo, son números odiosos: el 1, el 2 (10), el 4 (100), el 7 (111), el 8 (1000), el 11 (1011). Realice un programa que dado un valor entero K, devuelva la cantidad de números odiosos que hay entre 1 y K
ESTO ES LO QUE HE HECHO.. PERO ME TRANQUE..
#include<stdio.h> #include<stdlib.h> #include<math.h>
int k;
void pedirInfo() { do{ printf("\n\n-Ingrese un numero entero positivo cualquiera: "); scanf("%d",&k); if(k<=0)//validacion del dato de entrada { printf("\a\n\t\t\tERROR: Ingrese un <numero entero positivo>\n"); } }while(k<=0); }
int main() { printf("\t\t\tNUMERO ODIOSO\n"); char resp; do{ int x; pedirInfo(); char cadena[1000];//primero calculo la cadena itoa(k,cadena,2); //genero la cadena printf("\nNumero <%d> convertido a base 2: %s\n" ,k,cadena); //muestro la cadena para comprobar que el calculo ha sido correcto //... int i, cantidad_de_1=0, cantidad_de_odiosos=0; for(i=1; i<=1000; i++)//calculo la cantidad de '1' que tiene la cadena, revisando posicion por posicion { if(cadena=='1') //revisa si la cadena en la posicion "i" tiene un '1' { cantidad_de_1++; /* si la cadena tiene un "1" lo cuenta los numeros odiosos son los que tiene una cantidad impar de numeros '1' dentro de la cadena */ } } if(cantidad_de_1%2!=0) { //calcula si la cantidad de '1' dentro del vector es impar, si es asi, es un numero odioso cantidad_de_odiosos++; // si la condicion del if es verdadera, cuento la cantidad de numeros odioso printf("\nCantidad de numeros odiosos: %d\n\n",cantidad_de_odiosos); } else { printf("\nEl numero %d no es un numero odioso\n\n",k); } //... do{ printf("\n-Ingrese (s) si desea calcular otra cantidad de numeros odiosos, o (n) si desea finalizar el programa: "); scanf(" %c",&resp); if((resp!='s' && resp!='S') && (resp!='n' && resp!='N'))//validacion de los datos de entrada { printf("\a\n\t\t\tERROR: Ingrese (s) o (n)\n"); } }while((resp!='s' && resp!='S') && (resp!='n' && resp!='N')); }while(resp=='s' || resp=='S'); system("pause"); return 0; }
|