Afficher les opération et les resultats dans un tableau
mast20
Messages postés
14
Statut
Membre
-
mast20 Messages postés 14 Statut Membre -
mast20 Messages postés 14 Statut Membre -
svp est ce que quelqu'un peut m'aider à modifier ce programme pour qu il soit afficher dans un tableau.voici le programme :
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 50
#define M 3
void afficher_etat_vars(char opt[N],int*p1,int*p2,int*pta,int*ptb,int*ptc)
{
char ch1[M],ch2[M];
if(p1==pta)
strcpy(ch1,"&a");
else if(p1==ptb)
strcpy(ch1,"&b");
else if(p1==ptc)
strcpy(ch1,"&c");
else
strcpy(ch1,"");
if(p2==pta)
strcpy(ch2,"&a");
else if(p2==ptb)
strcpy(ch2,"&b");
else if(p2==ptc)
strcpy(ch2,"&c");
else
strcpy(ch2,"");
printf("%10s| %3d | %3d | %3d | %s | %s \n",opt,*ptb,*pta,*ptc,ch1,ch2) ;
}
int main( )
{
printf("operation | a | b | c | p1 | p2 \n");
int a=1;
int b=2;
int c=3;
int*p1=NULL,*p2=NULL;
p1=&a;
afficher_etat_vars("p1=&a",p1,p2,&a,&b,&c);
p2=&c;
afficher_etat_vars("p2=&c",p1,p2,&a,&b,&c);
afficher_etat_vars("*p1=*p2" ,p1,p2,&a,&b,&c);
(*p2)++;
afficher_etat_vars("(*p2)++",p1,p2,&a,&b,&c);
p1=p2;
afficher_etat_vars("p1=p2",p1,p2,&a,&b,&c);
p2=&b;
afficher_etat_vars("p2=&b",p1,p2,&a,&b,&c);
afficher_etat_vars("*p1=*p2",p1,p2,&a,&b,&c);
++(*p2);
afficher_etat_vars("++(*p2)",p1,p2,&a,&b,&c);
afficher_etat_vars("*p1*=*p2",p1,p2,&a,&b,&c);
++(*p2);
afficher_etat_vars("++(*p2)",p1,p2,&a,&b,&c);
a=*p2**p1;
afficher_etat_vars("a=*p2**p1",p1,p2,&a,&b,&c);
p1=&a;
afficher_etat_vars("p1=&a",p1,p2,&a,&b,&c);
afficher_etat_vars("*p2=*p1/=*p2",p1,p2,&a,&b,&c);
return (0);
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 50
#define M 3
void afficher_etat_vars(char opt[N],int*p1,int*p2,int*pta,int*ptb,int*ptc)
{
char ch1[M],ch2[M];
if(p1==pta)
strcpy(ch1,"&a");
else if(p1==ptb)
strcpy(ch1,"&b");
else if(p1==ptc)
strcpy(ch1,"&c");
else
strcpy(ch1,"");
if(p2==pta)
strcpy(ch2,"&a");
else if(p2==ptb)
strcpy(ch2,"&b");
else if(p2==ptc)
strcpy(ch2,"&c");
else
strcpy(ch2,"");
printf("%10s| %3d | %3d | %3d | %s | %s \n",opt,*ptb,*pta,*ptc,ch1,ch2) ;
}
int main( )
{
printf("operation | a | b | c | p1 | p2 \n");
int a=1;
int b=2;
int c=3;
int*p1=NULL,*p2=NULL;
p1=&a;
afficher_etat_vars("p1=&a",p1,p2,&a,&b,&c);
p2=&c;
afficher_etat_vars("p2=&c",p1,p2,&a,&b,&c);
- p1=*p2;
afficher_etat_vars("*p1=*p2" ,p1,p2,&a,&b,&c);
(*p2)++;
afficher_etat_vars("(*p2)++",p1,p2,&a,&b,&c);
p1=p2;
afficher_etat_vars("p1=p2",p1,p2,&a,&b,&c);
p2=&b;
afficher_etat_vars("p2=&b",p1,p2,&a,&b,&c);
- p1=*p2;
afficher_etat_vars("*p1=*p2",p1,p2,&a,&b,&c);
++(*p2);
afficher_etat_vars("++(*p2)",p1,p2,&a,&b,&c);
- p1*=*p2;
afficher_etat_vars("*p1*=*p2",p1,p2,&a,&b,&c);
++(*p2);
afficher_etat_vars("++(*p2)",p1,p2,&a,&b,&c);
a=*p2**p1;
afficher_etat_vars("a=*p2**p1",p1,p2,&a,&b,&c);
p1=&a;
afficher_etat_vars("p1=&a",p1,p2,&a,&b,&c);
- p2=*p1/=*p2;
afficher_etat_vars("*p2=*p1/=*p2",p1,p2,&a,&b,&c);
return (0);
}
1 réponse
-
Bonjour,
Tu souhaites faire des opérations et les afficher sous forme d'un tableau.
Ton code n'est pas mal, mais tu finis par tout mélanger à l'affichage.
Je te propose le code suivant (je suis fainéant comme tout informaticien et j'ai utilisé des macros et des boucles), j'ai ôté les codes qui n'ont pas de sens.#include <stdio.h> #include <stdlib.h> #include <string.h> #define N 50 #define M 3 void afficher_etat_vars(char opt[N] , int*p1 , int*p2 , int*pta , int*ptb , int*ptc) { const char* c[2]; // ou pointent p1 p2 int* ps[2]; // p1 et p2 dans un tableau ps[0] = p1; ps[1] = p2; for ( int i = 0 ; i < 2 ; ++i ) { if ( ps[i] == NULL ) c[i] = "NULL"; else if ( ps[i] == pta ) c[i] = " &a "; else if ( ps[i] == ptb ) c[i] = " &b "; else if ( ps[i] == ptc ) c[i] = " &c "; else c[i] = "autre"; } printf("%-12s| %3d | %3d | %3d | %s | %s |\n" , opt , *pta , *ptb , *ptc , c[0] , c[1] ); } #define FaireEtAfficher(exp) exp; afficher_etat_vars( #exp , p1 , p2 , &a , &b , &c ); int main() { printf("operation | a | b | c | p1 | p2 |\n"); int a = 1; int b = 2; int c = 3; int*p1 = NULL , *p2 = NULL; FaireEtAfficher(p1 = &a); FaireEtAfficher(p2 = &c); ////p1 = *p2; FaireEtAfficher(*p1=*p2); FaireEtAfficher(( *p2 )++); FaireEtAfficher(p1 = p2); FaireEtAfficher(p2 = &b); ////p1 = *p2; FaireEtAfficher(++( *p2 )); ////p1 *= *p2; FaireEtAfficher(++( *p2 )); FaireEtAfficher(a = *p2**p1); FaireEtAfficher(p1=&a); ////p2 = *p1 /= *p2; return 0; }