correction en cours prbl lecture 1 sur 2

This commit is contained in:
Adrien Van 2017-02-04 13:25:43 +01:00
parent 9fd3a271ef
commit a5777da258
2 changed files with 54 additions and 13 deletions

View File

@ -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;

11
colin22.txt Normal file
View File

@ -0,0 +1,11 @@
01100001
01100010
01100011
01100100
01100101
01100110
01100111
01101000
01101001
01101011
01101100