Conversor a binario
/*
Bienvenidos a todos. Este es un programa muy curioso. Empecemos. La funcion de este programa es ver si sabes binario al fin y al cabo. Lo que hace es generar un numero entre el 1 y el 10.000, el cual debereis escribirlo vosotros en binario. El programa comprobara si el resultado que habeis escrito es correcto o no; en caso de que no lo sea, os mostrara la solucion para que la compareis con lo que habiais escrito. Espero que os guste, y estudiad mucho antes de usarlo XDXDXD (es broma ;) tampoco es para tanto)
*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#include <windows.h>
#include <conio.h>
#include <time.h>
int main()
{
long resp;
int i, j ,k;
printf(" ** EXAMEN DE BINARIO **\n\n");
printf(" Se va a generar un numero aleatorio entre el 1 y el 10.000, y deberas pasarlo a binario.");
printf("\n Presiona ENTER cuando estes listo.");
char ENTER;
ENTER = getchar();
i = time(NULL);
srand(i);
for(j=0;j<1;)
{
k = rand()%10000;
j++;
if(k<1 || k>10000)
{
j = 0;
}
else if(k>=1 || k<=10000)
{
printf("\n El numero es %d", k);
}
}
printf("\n Tu respuesta es: ");
scanf(" %ld", &resp);
long binario_ale_reves[50];
int a, b, c, cont=0;
for(a=0;a<binario_ale_reves;a++)
{
binario_ale_reves[a] = k%2;
cont++;
k = k/2;
if(k==1)
{
binario_ale_reves[a+1] = 1;
cont++;
break;
}
}
long binario_ale[cont-1];
for(b=0;b<cont;b++)
{
binario_ale[b] = binario_ale_reves[cont-b-1];
}
printf("\n\n La respuesta correcta es: ");
for(c=0;c<cont;c++)
{
printf("%d", binario_ale[c]);
}
int divisor_10_inicial = 1;
int x, y, z;
for(x=0;x<cont;x++)
{
divisor_10_inicial = divisor_10_inicial * 10;
}
long resp_bin[cont-1];
for(y=0;y<cont;y++)
{
resp_bin[y] = resp / divisor_10_inicial;
resp = resp / divisor_10_inicial;
resp = resp - resp_bin[y];
resp = resp * divisor_10_inicial;
}
if(resp_bin[cont-1] == binario_ale[cont-1])
{
printf("\n\n Acertastes!!");
}
else
{
printf("\n\n La proxima vez sera!!");
}
return 0;
}