Se connecter / S'enregistrer
Votre question

programme en C

Tags :
  • Langage C
Dernière réponse : dans Programmation
18 Octobre 2013 22:02:52

Bonsoir à tous
Je cherche une solution pour cet exercice en Langage C
Enoncé :

On saisie manuellement 3 Bit-strings de longueur 40 chiffres binaires (10 caractères en hexa) représentés en hexadécimal : S1, S2, S3
exemple : S1 = FFFFFF4444
S2 = 2220FFFF11
S3 = AABBCCDDEE
Ces 3 valeurs doivent etre affichés en séparant chaque valeur à l'autre par une virgule et un espace
exemple : FFFFFF4444, 2220FFFF11, AABBCCDDEE
Pour chaque cas de valeurs, on effectue les opérations suivantes qui doivent etre affichés comme l'exemple ci-dessous :

CAS 1:
Operation 1 = S1 AND S2
Operation 2 = S2 OR S3
Operation 3 = S1 AND (S2 OR S3)
Operation 4 = S1 NAND S2 NOR S3
Operation 5 = (S1 NOR S2) XNOR (S2 NOR S3)
Le programme vérifie si l'utilisateur va saisir un autre cas ou pas.

..........................
.....................................

J'ai essayé ,mais je ne suis pas bon en programmation :

#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
int r,i;
char b1[11];
char b2[11];
char b3[11];
char s1[11];
char s2[11];
char s3[11];
char hex[16]="0123456789ABCDEF";
int verif(char* ch)
{
if(strlen(ch)!=10)
return 1 ;
else
{ i=0;
while(strchr(hex,ch)>0&& i<10)
{
i++;
}
if(i<10)
return 1 ;
else
return 0;
}
}
void saisie(char* &ch,int i)
{
do
{ printf("donner le nbre %d (10 caractères en hexadécimal : ",i) ;
gets(ch);
} while( verif(ch));
}
char* convbin(char* ch)
{char chb[41]="";
for(i=0;i<10;i++)
{
if(ch=='0')
strcat(chb,"0000");
if(ch=='1')
strcat(chb,"0001");
if(ch=='2')
strcat(chb,"0010");
if(ch=='3')
strcat(chb,"0011");
if(ch=='4')
strcat(chb,"0100");
if(ch=='5')
strcat(chb,"0101");
if(ch=='6')
strcat(chb,"0110");
if(ch=='7')
strcat(chb,"0111");
if(ch=='8')
strcat(chb,"1000");
if(ch=='9')
strcat(chb,"1001");
if(ch=='A')
strcat(chb,"1010");
if(ch=='B')
strcat(chb,"1011");
if(ch=='C')
strcat(chb,"1100");
if(ch=='D')
strcat(chb,"1101");
if(ch=='E')
strcat(chb,"1110");
if(ch=='F')
strcat(chb,"111");
}
printf("%s",chb);
return("1452364") ;
}
char* fonctNon(char* ch)
{ char res[41];
for (int i=39;i>=0;i--)
{
if(ch=='1')
res='0';
else
res='1';
}
return res;
}
char* fonctOr(char* ch1,char* ch2)
{ char res[41];
for (int i=39;i>=0;i--)
{
if(ch1=='1' || ch2=='1')
res=1;
}
return res;
}
char* fonctAnd(char* ch1,char* ch2)
{ char res[41];
for (int i=39;i>=0;i--)
{
if(ch1=='1' && ch2=='1')
res=1;
}
return res;
}
char* fonctNor(char* ch1,char* ch2)
{
return ( fonctNon(fonctOr(ch1,ch2)) );
}
char* fonctNand(char* ch1,char* ch2)
{
return ( fonctNon(fonctAnd(ch1,ch2)) );
}
char* fonctXnor(char* ch1,char* ch2)
{
return ( fonctNon(fonctNor(ch1,ch2)) );;
}
void affiche(char* s1,char* s2,char* s3,char* b1,char* b2,char* b3)
{
printf("\n_____________________________________________________\n") ;
printf("(s1=( %s )hex = ( %s )bin\n",s1,b1) ;
printf("(s2=( %s )hex = ( %s )bin\n",s2,b2) ;
printf("(s3=( %s )hex = ( %s )bin\n",s3,b3) ;
printf("\n_____________________________________________________\n") ;
}
void main()
{
do
{
saisie(s1,1);
saisie(s2,2);
saisie(s3,3);
affiche(s1,s2,s3,convbin(s1),convbin(s2),convbin(s3));
printf( "Operation 1 : %s AND %s = %s\n", s1,s2,fonctAnd(convbin(s1),convbin(s2)));
printf( "Operation 2 : %s OR %s = %s\n", s1,s2,fonctOr(convbin(s1),convbin(s2)));
printf( "Operation 3 : %s AND ( %s OR %s) = %s\n" ,s1,s2,s3,fonctAnd(convbin(s1),fonctOr(convbin(s2),convbin(s3))));
printf( "Operation 4 : %s NAND %s NOR %s = %s\n" ,s1,s2,s3,fonctNor(fonctNand(convbin(s1),convbin(s2)),convbin(s3)));
printf( "Operation 5 : (%s NOR %s) XNOR (%s NOR %s) = %s\n" ,s1,s2,s2,s3,fonctXnor(fonctNor(convbin(s1),convbin(s2)),fonctNor(convbin(s2),convbin(s3))));
do
{
printf( "voulez vous quittez ?(0/1)");
scanf("%d", &r);
} while(r!= 0 && r!= 1);
}while(r!=1);
getch();
}

................
........................
Merci d'avance .

Autres pages sur : programme

20 Octobre 2013 19:00:32

Bonjour,

Place ton code entre les balises [ CODE][/CODE] et dit nous ou tu bloque exactement !
21 Octobre 2013 09:56:29

moi je suis pas bon en lecture dans les boule de cristal !!
tu ne fais aucun effort pour expliquer ton problèmes, personne ne vas en faire pour te répondre !
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS