The Jair has you
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.

Transformación integer decimal a string binario

4 participantes

Ir abajo

Transformación integer decimal a string binario Empty Transformación integer decimal a string binario

Mensaje por Miggonz Mar 16 Oct 2007, 22:02

A ver si alguno de los maestros de C puede decirme por qué no me rula este engendro (que creo que es una de las claves para hacer la práctica 1):

Código:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

main ()
{
        long numerito=0;

        printf("Introduce un número: "); //leer el numero
        scanf("%d", &numerito);

        printf("Decimal: %d\nHexadecimal: %X\nOctal: %o\nBinario: %s\n", numerito, numerito, numerito, a_binario(numerito)); //imprimir los resultados convertidos, el único problema es el binario, que no tiene conversión automática
}

char *a_binario(decimal) //función que devuelve un puntero al caracter de inicio de una cadena de caracteres
int decimal;
{
        int i;
        char *resultado;

        *resultado='\0';

        for (i=0; decimal>1; i++ ){ //esta es la conversion propiamente dicha
                *(resultado+i)=((decimal%2)+'0');
                decimal = decimal/2;
        }

        *(resultado+i)=((decimal%2)+'0'); //añadimos el ultimo digito
        *(resultado+(++i))='\0';        //y cerramos la cadena
        return(resultado); //devolvemos el puntero
}

Cuando intento compilarlo me salta el siguiente error:

Código:
practica1.c:16: error: tipos en conflicto para ‘a_binario’
practica1.c:12: error: la declaración implícita previa de ‘a_binario’ estaba aquí

¿Alguna idea?
Miggonz
Miggonz
Amo del foro
Amo del foro

Cantidad de envíos : 427
Fecha de inscripción : 14/10/2007

Volver arriba Ir abajo

Transformación integer decimal a string binario Empty Re: Transformación integer decimal a string binario

Mensaje por djcloud Mar 16 Oct 2007, 22:07

Nuse que quieres hacer en ese codigo, epro como recomendacion yo siempre opngo las declaraciones de funciones entre los #defines y el main. Alli toda la declaracion de mis funciones y lugeo ya las implementare.

Weno esa recomendacion la dejo, epro el error es que enterito en el main es long y el parametro de a_binario es int. Tipos distintos
djcloud
djcloud
Amo del foro
Amo del foro

Cantidad de envíos : 389
Edad : 39
Fecha de inscripción : 11/10/2007

Volver arriba Ir abajo

Transformación integer decimal a string binario Empty Re: Transformación integer decimal a string binario

Mensaje por Miggonz Mar 16 Oct 2007, 22:50

He cambiado los tipos y he puesto la función "a_binario" delante del main y ya compila, pero ahora me da problemas como que la cadena tiene caracteres raros y mierdas de esas, yo me cago en la madre que parió a los punteros...
Miggonz
Miggonz
Amo del foro
Amo del foro

Cantidad de envíos : 427
Fecha de inscripción : 14/10/2007

Volver arriba Ir abajo

Transformación integer decimal a string binario Empty Re: Transformación integer decimal a string binario

Mensaje por djcloud Mar 16 Oct 2007, 23:06

Miggonz escribió:He cambiado los tipos y he puesto la función "a_binario" delante del main y ya compila, pero ahora me da problemas como que la cadena tiene caracteres raros y mierdas de esas, yo me cago en la madre que parió a los punteros...


A ver es que no creo que haga falta usar punteros o no muxo, de todas maneras no le veo utiliddad a tu prograa, ya que lees el numero como entero (aunque sea long) y claro eso te da hasta 32000 o 64000 depende del sistema, pero es que tienes que leer 80 cifras osea: 12345678901234567890123456789012345678901234567890123456789012345678901234567890

ese numero te lo podrian meter, a ver como metes eso en un entero o en cunalquier dato decente. La cosa es leerlo como cadena y operar... Operar ni se XD
djcloud
djcloud
Amo del foro
Amo del foro

Cantidad de envíos : 389
Edad : 39
Fecha de inscripción : 11/10/2007

Volver arriba Ir abajo

Transformación integer decimal a string binario Empty Re: Transformación integer decimal a string binario

Mensaje por polly Vie 19 Oct 2007, 16:36

en C standar no se puede operar (ni representar como numero ) el numero

12345678901234567890123456789012345678901234567890123456789012345678901234567890

por ejemplo.



puede que haya librerias para eso pero no seran las estandar, desde mi
punto de vista el objetivo de la practica es solo las funciones de
conversion de numeros .

para pasar una cadena string a integer se puede utilizar la funcion atoi(cadena) , pero claro solo se puede representar hasta 2147483647 (10 cifras )

polly

Cantidad de envíos : 3
Fecha de inscripción : 16/10/2007

Volver arriba Ir abajo

Transformación integer decimal a string binario Empty Re: Transformación integer decimal a string binario

Mensaje por Miggonz Sáb 20 Oct 2007, 13:49

Ya, ya sé que no sirve de mucho esto, pero me puse a hacerlo como preparación xD
Miggonz
Miggonz
Amo del foro
Amo del foro

Cantidad de envíos : 427
Fecha de inscripción : 14/10/2007

Volver arriba Ir abajo

Transformación integer decimal a string binario Empty Re: Transformación integer decimal a string binario

Mensaje por Elía Sáb 20 Oct 2007, 14:32

He encontrado este programa que te cambia de hexadecimal a binario pasando primero a codigo decimal.
Pero la verdad es que no lo entiendo bien, principalmente porque no conzco la mayoría de funciones predefinidas que utiliza.
Código:

#include
#include
#include
#include
#include

int Search(char ch)
{
    int i;
    char *Cad="0123456789abcdefghijklmnopqrstuvwzyz";

    for(i=0;i<36;i++){
        if(Cad[i] == ch)
        break;
    }
    return i;
}

int Converter(char *strNum,int iBase)
{
    int i,iLenght,iTemp;
    int iRes=0;

    iTemp=iLenght=strlen(strNum);
    iLenght--;

    for(i=0;i<iTemp;i++,iLenght--)

        iRes+=(int)(Search(strNum[i])*pow(iBase,iLenght));
    return iRes;
}

int main(int argc,char *argv[])
{
    char *strNum,*Out;
    int iRes;

    strNum=new char[20];
    assert(strNum!=0);
    Out=new char[20];
    assert(Out!=0);

    cout << "Introduza un numero: ";
    cin.getline(strNum,20);
    iRes=Converter(strNum,16);
    cout << "el numero " << strNum << " en decimal es " << iRes << endl;
    itoa(iRes,Out,2);
    cout << "y en binario es: " << Out << endl;
    system("pause");
    delete [] strNum;
    delete [] Out;

    return 0;
}

Si os sirve, pues bien, si no, pues ya tengo un mensaje más XD
Elía
Elía
Amo del foro
Amo del foro

Cantidad de envíos : 325
Fecha de inscripción : 14/10/2007

Volver arriba Ir abajo

Transformación integer decimal a string binario Empty Re: Transformación integer decimal a string binario

Mensaje por djcloud Sáb 20 Oct 2007, 17:15

Elía escribió:He encontrado este programa que te cambia de hexadecimal a binario pasando primero a codigo decimal.
Pero la verdad es que no lo entiendo bien, principalmente porque no conzco la mayoría de funciones predefinidas que utiliza.
Código:

#include
#include
#include
#include
#include

int Search(char ch)
{
    int i;
    char *Cad="0123456789abcdefghijklmnopqrstuvwzyz";

    for(i=0;i<36;i++){
        if(Cad[i] == ch)
        break;
    }
    return i;
}

int Converter(char *strNum,int iBase)
{
    int i,iLenght,iTemp;
    int iRes=0;

    iTemp=iLenght=strlen(strNum);
    iLenght--;

    for(i=0;i

        iRes+=(int)(Search(strNum[i])*pow(iBase,iLenght));
    return iRes;
}

int main(int argc,char *argv[])
{
    char *strNum,*Out;
    int iRes;

    strNum=new char[20];
    assert(strNum!=0);
    Out=new char[20];
    assert(Out!=0);

    cout << "Introduza un numero: ";
    cin.getline(strNum,20);
    iRes=Converter(strNum,16);
    cout << "el numero " << strNum << " en decimal es " << iRes << endl;
    itoa(iRes,Out,2);
    cout << "y en binario es: " << Out << endl;
    system("pause");
    delete [] strNum;
    delete [] Out;

    return 0;
}

Si os sirve, pues bien, si no, pues ya tengo un mensaje más XD

ese codigo juraria que es de c++, ya que la salida de datos la hace con streams de entrada salida cuando hace cout y usa simbolos << es parecido al printf. Pero weno digo yo que el codigo de transformacion funcionara (auqnue no me acuerdo para que vale assert ni si c la tiene esa funcion)
djcloud
djcloud
Amo del foro
Amo del foro

Cantidad de envíos : 389
Edad : 39
Fecha de inscripción : 11/10/2007

Volver arriba Ir abajo

Transformación integer decimal a string binario Empty Re: Transformación integer decimal a string binario

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.