Programma conversione decimale a binario

di il
12 risposte

Programma conversione decimale a binario

Il programma deve banalmente riconoscere i primi n numeri e a fianco scrivere una stringa di x bit con il codice in binario ma qualcosa non funziona! me lo fa compilare ma quando lo esegue si impalla
es
posizione 1 00001
posizione 2 00010
.
.
posizione 10 01010

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>

int main()
{
int bitdati,bitot,n,i,bit,j;
int* vet=new int[bitot]; // Vettore che conterra' l'immagine binaria
printf ("Inserisci numero bit dati = ");
scanf("%d", &bitdati);
n=1;
while (pow(2,n)<bitdati)
{
n=n+1;
}
printf ("Bit di controllo = %d", n);
bitot = bitdati+n;
printf ("\nBit totali = %d", bitot);
for (i=1;i<=bitot;++i)
{
for(bit=0;bit<=n;i=i/2);
{
if((i%2)==0) // Se il resto e' 0
{
vet[bitot-1-i]=0; // metto 0 nell'elemento del vettore
}
else
{
vet[bitot-1-i]=1; // se no, metto 1
}
}
}
for(j=0;j<bitot;j++)
{
printf ("\nPosizione numero %d = \t", j );
printf("%d ",vet[j]);
}

12 Risposte

  • Re: Programma conversione decimale a binario

    Problema n.1
    int* vet=new int[bitot];	// Vettore che conterra' l'immagine binaria
    nn hai ancora assegnato un valore a bitot
  • Re: Programma conversione decimale a binario

    Poi
    bitot = bitdati+n;
    a cosa serve?
  • Re: Programma conversione decimale a binario

    Do in in input bitdati, calcolo n e i bitot sono la somma dei due precedenti.
  • Re: Programma conversione decimale a binario

    Ottimo e bello. si vede che hai esperienza.
    io mi sto imparando ma avendo un professore di informatica schifoso e io volendo diventare qualcuno di "figo" mi tocca fare l'autodidatta! grazie ancora a buon rendere
  • Re: Programma conversione decimale a binario

    Ok, riutilizzando i tuoi codici ho scritto questo
    
    #include <stdio.h>
    #include <math.h>
    #include <stdlib.h>
    #include <string.h>
    
    int main()
    {
    int bitdati,n,i,j,num;
    
    printf ("Inserisci numero bit dati = ");
    scanf("%d", &bitdati);
    
    n=1;
    while (pow(2,n)<bitdati)
    {
        n++;
    }
    
    printf ("Bit di controllo = %d", n);
    
    bool* vet=new bool[n];	// Vettore che conterra' l'immagine binaria
    
    for(i=0;i<=bitdati;i++){                        //per ogni numero <= a quello inserito...
        printf("\nPosizione numero %d = \t", i);        //stampo posizione
    
        num = i;                                     //setta array
        for (j = n; j > 0; j--) {
            vet[j - 1] = num % 2;
            num /= 2;
        }
    
        for(j=0;j<n;j++)                            //stampo l'array
        {
            printf("%d",vet[j]);
        }
    }
    
    free(vet);                              //dealloca vet
    
    }
    
    Così a me funzia, se nn capisci qualcosa dimmi.

    ps: dealloca la memoria alla fine del programma
  • Re: Programma conversione decimale a binario

    Si, ma lui vuole convertire solo in binario.

    altrimenti dovrebbe implementare una funzione che prende in input la base, e poi eseguire il ciclo in cui setta l'array con la variabile "base"
  • Re: Programma conversione decimale a binario

    /*
    posizione 1 00001
    posizione 2 00010
    
    
    posizione 10 01010
    */
    
    #include <stdio.h>
    #include <math.h>
    #include <stdlib.h>
    #include <string.h>
    
    int main()
    {
    int bitdati,n,i,j,num,base;
    
    printf ("Inserisci numero bit dati = ");
    scanf("%d", &bitdati);
    
    printf("\n Inserisci la base = ");
    scanf("%d",&base);
    
    n=1;
    while (pow(base,n)<bitdati)
    {
        n++;
    }
    
    printf ("Bit di controllo = %d", n);
    
    char* vet=new char[n];	// Vettore che conterra' l'immagine binaria
    
    for(i=0;i<=bitdati;i++){                        //per ogni numero <= a quello inserito...
        printf("\nPosizione numero %d = \t", i);        //stampo posizione
    
        num = i;
        for (j = n; j > 0; j--) {
            vet[j - 1] = num % base;
            num /= base;
    
            if(vet[j-1]<10)     vet[j-1]+='0';
            else                vet[j-1]+='a'-10;
        }
    
        for(j=0;j<n;j++)                            //stampo l'array
        {
            printf("%c",vet[j]);
        }
    }
    
    free(vet);                              //dealloca vet
    
    }
    
  • Re: Programma conversione decimale a binario

    Così dovrebbe funzionare con basi<37
  • Re: Programma conversione decimale a binario

    Grazie ancora a entrambi. buon lavoro
  • Re: Programma conversione decimale a binario

    non hai afferrato pienamente il concetto.
    il fatto che un programma possieda dei parametri non significa che l'utente debba cambiarli.
    es. in un motore di un'auto ci sono varie componenti che devono essere regolate.
    ma ad ogni accensione non ci viene chiesto.
    okok fammi capire...

    io cosa avrei sbagliato?

    cioè... devo creare un programma per poter risolvere più problemi simili (ad esempio una libreria) ma devo lasciare costanti i risultati?

    intendi questo o ho capito male io?
    il mio funziona correttamente con basi < 10.
    per utilizzare basi maggiori, bisognerebbe estendere i simboli.
    infondo l'unica modifica significativa che ho fatto e'
    
    if(vet[j-1]<10)     vet[j-1]+='0';
    else                vet[j-1]+='a'-10;
    
    basta usare un ragionamento simile per aggiungere quanti simboli vuoi



    Quindi, secondo te sarebbe giusto se facessi una classe con le funzioni per settare e stampare l'array, e metodi setters per modificare eventuali parametri (se il programma richiesto lo richiede)?


    ultima cosa: sei professore/programmatore di professione?
  • Re: Programma conversione decimale a binario

    Grazie ancora a entrambi. buon lavoro
    prego
  • Re: Programma conversione decimale a binario

    Ok capito.

    Non sei nessuno? Comunque mi sembri molto bravo e competente

    Io ho 14 anni e programmo da quest'estate. Quindi ti ringrazio per la pazienza che avrai nel spiegarmi le cose

    Una classe nn volevo crearla perché nn credo che lui le conosca ( altrimenti credo le avrebbe usate no?)

    Ciao e grazie
    Ora a nanna!
Devi accedere o registrarti per scrivere nel forum
12 risposte