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)
|
//D<>finition d'une constante N de valeur 10 (2 pts)
|
||||||
#define N 10
|
#define N 10
|
||||||
|
#define __DEBUG__
|
||||||
|
|
||||||
//Prototypes des fonctions d<>finies par apr<70>s (7 pts)
|
//Prototypes des fonctions d<>finies par apr<70>s (7 pts)
|
||||||
FILE* OuvrirFichier ();
|
FILE* OuvrirFichier ();
|
||||||
|
@ -129,7 +130,7 @@ char ChaineVersOctet(char chaine[9])
|
||||||
char masque = 1;
|
char masque = 1;
|
||||||
//Boucle pour parcourir tous les <20>l<EFBFBD>ments de l<>octet, du bit de poids faible au
|
//Boucle pour parcourir tous les <20>l<EFBFBD>ments de l<>octet, du bit de poids faible au
|
||||||
//bit de poids fort (3 pts)
|
//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
|
//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)
|
//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
|
//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
|
//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)
|
//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[N])
|
void LireDonnees (FILE *fichier, char *tab)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
char donnee[9];
|
char donnee[9];
|
||||||
|
char *p;
|
||||||
for(i=0; i<N; i++)
|
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
|
//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
|
//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)
|
//0 ou 1 repr<70>sentant des octets binaires. (2 pts)
|
||||||
fflush (stdin);
|
fgets(donnee, sizeof(donnee), fichier);
|
||||||
fscanf (fichier, "%s", donnee);
|
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
|
//Assignation <20> l<><6C>l<EFBFBD>ment i de tab de la valeur convertie en octet de la donnee
|
||||||
//lue (2 pts)
|
//lue (2 pts)
|
||||||
|
#ifdef __DEBUG__
|
||||||
|
printf("DEBUG %d: DONNE LUE : %s\n",i, donnee);
|
||||||
|
#endif
|
||||||
tab[i] = ChaineVersOctet(donnee);
|
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[])
|
void AfficherDonnees(char tab[])
|
||||||
{//D<>claration et <20>ventuellement initialisation des variables locales (3 pts)
|
{//D<>claration et <20>ventuellement initialisation des variables locales (3 pts)
|
||||||
int i, j, m = 1;
|
int i, j, m = 1;
|
||||||
char b[10];
|
char b[8]; //8 bit + \0 = 9
|
||||||
for(i=0; i<N; i++)
|
for(i=0; i<N; i++) //parcour tab d'octet
|
||||||
{
|
{
|
||||||
|
m = 1;
|
||||||
printf("\n%2d) ",i+1);
|
printf("\n%2d) ",i+1);
|
||||||
//Affichage en binaire de l<><6C>l<EFBFBD>ment i de tab (6 pts)
|
//Affichage en binaire de l<><6C>l<EFBFBD>ment i de tab (6 pts)
|
||||||
for (j=8; j>=0; j--)
|
for (j=8; j>=0; j--)
|
||||||
{
|
{
|
||||||
if (tab[i] & m)
|
if (tab[i-1] & m)
|
||||||
b[j]='1';
|
{
|
||||||
else b[j]='0';
|
#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;
|
m<<=1;
|
||||||
}
|
}
|
||||||
b[9]='\0';
|
b[8]='\0';
|
||||||
printf ("%s", b);
|
printf ("%s %c %c", b, b[0],b[7]);
|
||||||
printf("\n");
|
printf("\n");
|
||||||
}
|
}
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
@ -220,7 +250,7 @@ int ParitePaire (char octet)
|
||||||
masque <<= 1;
|
masque <<= 1;
|
||||||
}
|
}
|
||||||
//Si compteur est impair retourner "faux", sinon retourner "vrai" (2 pts)
|
//Si compteur est impair retourner "faux", sinon retourner "vrai" (2 pts)
|
||||||
if (compteur %2 == 1)
|
if (compteur%2)
|
||||||
return 0;
|
return 0;
|
||||||
else
|
else
|
||||||
return 1;
|
return 1;
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
01100001
|
||||||
|
01100010
|
||||||
|
01100011
|
||||||
|
01100100
|
||||||
|
01100101
|
||||||
|
01100110
|
||||||
|
01100111
|
||||||
|
01101000
|
||||||
|
01101001
|
||||||
|
01101011
|
||||||
|
01101100
|
Loading…
Reference in New Issue