Mi pare un esercizio un po difficile per uno che è agli inizi con il linguaggio c .
A me viene in mente un modo , con cui affrontare l'esercizio , e dargli una soluzione .
ma fa uso della funzione itoa() che è una funzione non standar c ,presente in molti compilatori compreso MS Vs c++
usare questa funzione , magari per un esercizio scolastico , potrebbe essere valutato un
grosso errore
il mio approccio sarebbe questo
1 converto il codice ascii del carattere passato per argomento in un array di char
rappresentante il valore binario itoa (i,buffer,2); ottengo cosi "10101010" un array buffer di char
2 in una array di char temporaneo , tramite un ciclo for copio la sequenza binaria
cambiando un solo carattere , poi chiamo una mia funzione che converte la sequenza
di caratteri 01 in un valore decimale , e la memorizzo nell'array di uscita
codice:
int i, k;
char temp[9];
for(i=0;i<8;i++)// ciclo per ogni elemento dell'arrey di uscita
{
for(k=0;k<8;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 ;
}
}
convertibinariodecimale(arraydiuscita,temp,posizione array di uscita i);
}