Algoritmia - necesito ayuda para resolver

   
Vista:

necesito ayuda para resolver

Publicado por alejandro (2 intervenciones) el 06/10/2009 19:45:12
hacer un programa en dfd que, a partir de un numero natural base 10 dado por el usuario lo convierta a su equivalente binario...
y debo mostrar el numero convertido en en vector(es el numero que el usuario debe ver)
Espero que me ayudeis... Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:necesito ayuda para resolver

Publicado por eduardo (55 intervenciones) el 14/10/2009 01:51:27
Hola, hay varias formas de hacerlo.
Aqui tienes una forma que usa vector.

#include <stdio.h> /* para printf(), scanf(), fflush() */
#include <stdlib.h> /* para system() */
#include <dos.h> /* para sleep() */
#include <string.h> /* para strchr() */
#include <ctype.h> /* para toupper() */
#include <limits.h> /* para la macro LONG_MAX */
#include <conio.h> /* para getch() */

#define MAX_LON_BIN 31 /* longitud maxima para long en binario */

/* prototipos */
int convertidor( long decimal, int *binario );
void mostrar_binario( const int *binario, int dig );

/* La funcion main() comienza la ejecucion del programa */
int main( void )
{
long decimal;
int binario[ MAX_LON_BIN ];
int dig;
int error;
char continuar = 'S'; /* bandera de continuación */

/* ciclo de control del programa */
while ( continuar != 'N' ) {

/* inicia el primer elemento a cero */
binario[ 0 ] = 0;

do {
system( "cls" );
printf( "\n BINARIO: Este programa muestra un numero decimal ingresado por teclado en su"
"\n ======= representacion binaria. El decimal ingresado debe estar en el rango:\n"
"\n \t\t 0 <= decimal <= %ld\n\n", LONG_MAX );

error = 0;

fflush( stdin );
printf( " Ingrese decimal: " );
scanf( "%ld", &decimal );

printf( "\n\t" );

/* si el decimal es diferente de cero */
if ( decimal != 0 ) {

/* si (se detecta error de rango [desborde o negativos]) */
if ( INT_MAX / decimal < 1 ) {
printf( " Error de rango\n" );
error = 1;
printf( "\t Pulse una tecla para continuar..." );
getch();
}
}

} while( error );

printf( "\n %d = ", decimal );

/* convierte a binario y obtiene el numero de digitos */
dig = convertidor( decimal, binario );

/* muestra el binario */
mostrar_binario( binario, dig );

printf( "\n\n\n" );
printf( "\t\t Otro decimal? S/N: " );
while ( continuar = (char)toupper( getch() ), !strchr("SN", continuar) );
}

return 0; /* retorna al S.O */
}

/* convierte al binario respectivo y retorna su numero de digitos */
int convertidor( long decimal, int *binario ) {
register int i;

if ( decimal ) {
for ( i = 0; decimal > 0; ++i ) {
binario[i] = decimal % 2;
decimal = decimal / 2;
}
return i;
}

return 1;
}

/* muestra el vector */
void mostrar_binario( const int *binario, int dig ) {
register int i;

for ( i = dig - 1; i >= 0; --i )
printf( "%d", binario[i] );
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar