Non si può compilare uno spezzone di codice , che aveva solo lo scopo di essere un esempio !


come ti hanno detto nell'ultimo messaggio da persone esperte , la soluzione corretta non
è quella che ti ho proposto io !

Ma solo per fare vedere che era una soluzione , NON la migliore , sicuramente .

posto come saprei risolverlo io , visto che gli operatori su bit non so usarli !

Codice testato e funzionante



codice:
#include <stdio.h>
#include <stdlib.h>
void convertibinariodecimale(char output[],char temp[],int posizione);
char *get_array(char n) ;
int main(int argc, char *argv[])
{
  int i;  
  char *risultato;
  risultato=get_array('a');
  for(i=6;i>=0;i--)
      printf("lettera %c  codice ascii %d \n",risultato[i],risultato[i]);
  system("PAUSE");	
  return 0;
}


char *get_array(char n) 
{
  int i, k;
  char *output=(char*)malloc(sizeof(char)*8);
  char temp[8];
  char buffer[8];
  itoa(n,buffer,2);
  printf("codice binario di partenza   -->  ");
  puts(buffer);
  puts("******");
  puts("codici binari risultanti");
 for(i=6;i>=0;i--)// ciclo per ogni elemento dell'arrey di uscita 
 {
        for(k=6;k>=0;k--)//ciclo per ogni elemento binario di buffer
           {
               temp[k]=buffer[k];
                if(k==i)//modifico di volta in volta un solo bit
                 {
                    if(temp[k]=='0')
                          temp[k]='1'; 
                     else
                           temp[k]='0' ;  
                 } 

           }
           puts(temp);
          convertibinariodecimale(output,temp,i);
 }
 
  puts("*****************************");
   return output;
} 



void convertibinariodecimale(char output[],char temp[],int posizione)
{
    
    int i=0;
    int valore_cifra_binaria=1;
    int numero_convertito=0;
    int bit=0;
    for(i=6;i>=0;i--)
        {
           if(temp[i]=='1')
              bit=1;
           else 
              bit=0;    
           numero_convertito +=valore_cifra_binaria*bit;
           valore_cifra_binaria*=2;//passo al valore decimale del prossimo bit
            
        }    
    
    
       output[posizione]=numero_convertito;
    
    
    }