correction en cours prbl lecture 1 sur 2
This commit is contained in:
parent
9fd3a271ef
commit
a5777da258
56
colin22.c
56
colin22.c
|
@ -5,6 +5,7 @@
|
|||
|
||||
//D<>finition d'une constante N de valeur 10 (2 pts)
|
||||
#define N 10
|
||||
#define __DEBUG__
|
||||
|
||||
//Prototypes des fonctions d<>finies par apr<70>s (7 pts)
|
||||
FILE* OuvrirFichier ();
|
||||
|
@ -129,7 +130,7 @@ char ChaineVersOctet(char chaine[9])
|
|||
char masque = 1;
|
||||
//Boucle pour parcourir tous les <20>l<EFBFBD>ments de l<>octet, du bit de poids faible au
|
||||
//bit de poids fort (3 pts)
|
||||
for (i=8; i>=0; i--)
|
||||
for (i=7; i>=0; i--)
|
||||
{
|
||||
//Si l<><6C>l<EFBFBD>ment i de chaine est le caract<63>re 1, positionner le bit
|
||||
//correspondant de la variable octet <20> 1, sinon le laisser <20> 0. (4 pts)
|
||||
|
@ -144,21 +145,37 @@ char ChaineVersOctet(char chaine[9])
|
|||
|
||||
//La fonction LireDonnees re<72>oit en arguments un pointeur fichier permettant
|
||||
//de manipuler un fichier et un tableau tab dont chaque <20>l<EFBFBD>ment est une donn<6E>e
|
||||
//cod<6F>e sur 8 bits. Elle ne retourne aucune valeur. (3 pts)
|
||||
void LireDonnees (FILE*fichier, char tab[N])
|
||||
//cod<6F>e sur 8 bits. Elle ne retourne aucune valeur. (3 pts) G:\PROJET_FINAL_HTML\progra\colin22.txt
|
||||
void LireDonnees (FILE *fichier, char *tab)
|
||||
{
|
||||
int i;
|
||||
char donnee[9];
|
||||
char *p;
|
||||
for(i=0; i<N; i++)
|
||||
{
|
||||
#ifdef __DEBUG__
|
||||
printf("DEBUG : I : %d\n",i);
|
||||
#endif
|
||||
//Lecture d<>une cha<68>ne de caract<63>res dans le fichier et enregistrement
|
||||
//dans donnee. On suppose que le fichier ne comporte que des mots de 8 caract<63>res
|
||||
//0 ou 1 repr<70>sentant des octets binaires. (2 pts)
|
||||
fflush (stdin);
|
||||
fscanf (fichier, "%s", donnee);
|
||||
fgets(donnee, sizeof(donnee), fichier);
|
||||
p = strchr(donnee, '\n');
|
||||
if(p)
|
||||
*p=0;
|
||||
|
||||
#ifdef __DEBUG__
|
||||
printf("DEBUG : I : %d\n",i);
|
||||
#endif
|
||||
//Assignation <20> l<><6C>l<EFBFBD>ment i de tab de la valeur convertie en octet de la donnee
|
||||
//lue (2 pts)
|
||||
#ifdef __DEBUG__
|
||||
printf("DEBUG %d: DONNE LUE : %s\n",i, donnee);
|
||||
#endif
|
||||
tab[i] = ChaineVersOctet(donnee);
|
||||
#ifdef __DEBUG__
|
||||
printf("DEBUG %d: DONNE LUE CONVERTIE EN OCTECT: %c\n",i, tab[i]);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -171,20 +188,33 @@ void LireDonnees (FILE*fichier, char tab[N])
|
|||
void AfficherDonnees(char tab[])
|
||||
{//D<>claration et <20>ventuellement initialisation des variables locales (3 pts)
|
||||
int i, j, m = 1;
|
||||
char b[10];
|
||||
for(i=0; i<N; i++)
|
||||
char b[8]; //8 bit + \0 = 9
|
||||
for(i=0; i<N; i++) //parcour tab d'octet
|
||||
{
|
||||
m = 1;
|
||||
printf("\n%2d) ",i+1);
|
||||
//Affichage en binaire de l<><6C>l<EFBFBD>ment i de tab (6 pts)
|
||||
for (j=8; j>=0; j--)
|
||||
{
|
||||
if (tab[i] & m)
|
||||
b[j]='1';
|
||||
else b[j]='0';
|
||||
if (tab[i-1] & m)
|
||||
{
|
||||
#ifdef __DEBUG__
|
||||
printf("DEBUG i%d j%d: DONNE tab[i] %c avec masque %x\n",i,j,tab[i], tab[i]&0xff&m);
|
||||
#endif
|
||||
b[j-1]='1';
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
#ifdef __DEBUG__
|
||||
printf("DEBUG i%d j%d: DONNE tab[i] %c avec masque %x\n",i,j,tab[i], tab[i]&0xff&m);
|
||||
#endif
|
||||
b[j-1]='0';
|
||||
}
|
||||
m<<=1;
|
||||
}
|
||||
b[9]='\0';
|
||||
printf ("%s", b);
|
||||
b[8]='\0';
|
||||
printf ("%s %c %c", b, b[0],b[7]);
|
||||
printf("\n");
|
||||
}
|
||||
printf("\n");
|
||||
|
@ -220,7 +250,7 @@ int ParitePaire (char octet)
|
|||
masque <<= 1;
|
||||
}
|
||||
//Si compteur est impair retourner "faux", sinon retourner "vrai" (2 pts)
|
||||
if (compteur %2 == 1)
|
||||
if (compteur%2)
|
||||
return 0;
|
||||
else
|
||||
return 1;
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
01100001
|
||||
01100010
|
||||
01100011
|
||||
01100100
|
||||
01100101
|
||||
01100110
|
||||
01100111
|
||||
01101000
|
||||
01101001
|
||||
01101011
|
||||
01101100
|
Loading…
Reference in New Issue