Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Exercice] zCellular : un automate cellulaire !

24 mars 2016 à 12:25:57

slt je sui au niveau du jeux plus ou moins et je voudrait l ameliorer avec un multi joueur.genre un entre un nombre l autre devine et pour cela il me fau cacher le nombre entrer par le premier joueur
  • Partager sur Facebook
  • Partager sur Twitter
31 mars 2016 à 16:32:20

Aide pour optimiser mon code SVP!!!

#include<stdio.h>
#include<conio.h>
#include<string.h>
#define ab 100
typedef struct
{
 char nom[50];
 char pre[50];
 char num[50];
}op;
main()
{
 op ope;
 char num[20];
 int io=5,it=5,ie=5,mat[3][ab]={{772314440,782314440,774517070,784517070,778868181},
                                {762314440,764517070,763570521,765181304,768868181},
                                 702314440,704517070,703570521,705181304,708868181};
 int je,ic=5,conti,tabcredit[3][ab]={{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0}},choix,numec,ok,ind1,i,ok2,s1,s2,sauv,ind2,mnt,ok3;
 float da,flo;
 do
 {
 	ok3=0;
  ok2=0;
  ok=0;
  je=0;
 conti=1;
 puts("==============================MENU========================\n");
 puts("\n1-> CREER UN NOUVEAU ABONNE");
 puts("2-> EMETTRE UN APPEL");
 puts("3-> VERIFIER LE MONTANT DE VOTRE COMPTE");
 puts("4-> CHARGER VOTRE COMPTE");
 puts("5-> QUITTER");
 printf("\nvotre choix:\t");
 do
 {
 scanf("%d",&choix);
  if(choix!=1 && choix!=2 && choix!=3 && choix!=4 && choix!=5)
  printf("Choix incorrect:\t");
 }
 while(choix!=1 && choix!=2 && choix!=3 && choix!=4 && choix!=5);
 switch(choix)
 {
  case 1:
  	system("cls");
    printf("entrer le numero:\t");
   do
     {      
       scanf("%s",&ope.num);
       s1=atoi(ope.num);
       switch(ope.num[0])
       {
         case '7':
         switch(ope.num[1])
         {
          case '7':
          ok=1;
          break;
          case '8':
          ok=1;
          break;
          case '0':
          ok=1;
          break;
          case '6':
          ok=1;
          break;
         }
         break;
       }
       if(strlen(ope.num)!=9 && ok==1 )
       printf("le numero doit comporter 9 chiffres:\t");
       if(ok==0 && strlen(ope.num)==9)
       printf("le numero doit commencer par 77,78,76 ou 70:\t");
       if(strlen(ope.num)!=9 && ok==0)
        printf("le numero doit comporter 9 chiffres et doit commencer par 77,78,76 ou 70:\t");
     }
     while(ok==0 || strlen(ope.num)!=9);     
          ind1=s1/10000000;
          if(ind1==77 || ind1==78)
          {
            for(i=0;i<=io;i++)
                 {
                  if(mat[0][i]==s1)
                  {
                   ok2=1;
                   sauv=i;
                   i=io;                   
                  }         
                 }               
          if(ok2==0)
            {
 
                printf("entrer le nom de l abonne:\t");
                scanf("%s",&ope.nom);
                printf("entrer le prenom de l abonne:\t");
                scanf("%s",&ope.pre);
               printf("\nNouveau abonne cree\n");
               io++;
               mat[0][io]=s1; 
               ic++;
               tabcredit[0][ic]=0;            
             }
             else
             printf("Le numero est deja ete enregistre\n");
 
          }
          if(ind1==76)
          {
            for(i=0;i<=it;i++)
                 {
                  if(mat[1][i]==s1)
                  {
                   ok2=1;
                   sauv=i;
                   i=it;                   
                  }         
                 }
 
 
          if(ok2==0)
            {
                   printf("entrer le nom de l abonne:\t");
                   scanf("%s",&ope.nom);
                   printf("entrer le prenom de l abonne:\t");
                   scanf("%s",&ope.pre);
               printf("\nNouveau abonne cree\n");
               it++;
               mat[1][it]=s1;
               ic++;
               tabcredit[1][ic]=0;
 
             }
             else
             printf("Le numero est deja ete enregistre");
 
          }
          if(ind1==70)
          {
            for(i=0;i<=ie;i++)
                 {
                  if(mat[2][i]==s1)
                  {
                   ok2=1;
                   sauv=i;
                   i=ie;                   
                  }         
                 }              
          if(ok2==0)
            {
                  printf("entrer le nom de l abonne:\t");
                   scanf("%s",&ope.nom);
                   printf("entrer le prenom de l abonne:\t");
                   scanf("%s",&ope.pre);
               printf("\nNouveau abonne cree\n");
                ie++;
               mat[2][ie]=s1;
               ic++;
               tabcredit[2][ic]=0;
 
             }
             else
             printf("Le numero est deja ete enregistre\n");
 
          }
          system("pause");
          system("cls"); 
 
   break;
   case 2:
   	ok2=0;
   	system("cls");
    printf("entrer le numero:\t");
   do
     {      
       scanf("%s",&ope.num);
       s1=atoi(ope.num);
       switch(ope.num[0])
       {
         case '7':
         switch(ope.num[1])
         {
          case '7':
          ok=1;
          break;
          case '8':
          ok=1;
          break;
          case '0':
          ok=1;
          break;
          case '6':
          ok=1;
          break;
         }
       }
        if(strlen(ope.num)!=9 && ok==1)
       printf("\nle numero doit comporter 9 chiffres:\t");
       if(ok==0 && strlen(ope.num)==9)
       printf("\nle numero doit commencer par 77,78,76 ou 70:\t");
       if(strlen(ope.num)!=9 && ok==0)
        printf("\nle numero doit etre 9 chiffres et doit commencer par 77,78,76 ou 70:\t");
     }
     while(ok==0 || strlen(ope.num)!=9);
            ind1=s1/10000000;
          if(ind1==77 || ind1==78)
          {
            for(i=0;i<=io;i++)
                 {
                  if(mat[0][i]==s1)
                  {
                   ok2=1;
                   sauv=i;
                   i=io;                   
                  }         
                 }
               if(ok2==0)
             printf("Le numero n existe pas");
               else
               {
                 if(tabcredit[0][sauv]>60)
                   {
                     	ok2=0;
                    printf("Entrer celui de votre correspondant:\t");
                    do
                     {      
                       scanf("%s",&ope.num);
                       s2=atoi(ope.num);
                          switch(ope.num[0])
                          {
                            case '7':
                            switch(ope.num[1])
                              {
                                 case '7':
                                 ok=1;
                                  break;
                                case '8':
                                 ok=1;
                                  break;
                               case '0':
                                  ok=1;
                               break;
                                case '6':
                                   ok=1;
                                  break;
                             }
                          }
                         if(strlen(ope.num)!=9)
                         printf("le numero doit comporter 9 chiffres:\t");
                        if(ok==0)
                        printf("le numero doit commencer par 77,78,76 ou 70:\t");
                            if(strlen(ope.num)!=9 && ok==0)
                          printf("le numero doit comporter 9 chiffres et doit commencer par 77,78,76 ou 70:\t");
                     }
                       while(ok==0 || strlen(ope.num)!=9);
                        ind2=s2/10000000;
                        if(s1==s2)
                        ok3=1;
                       if(ind2==77 || ind2==78)
                       {
                           for(i=0;i<=io;i++)
                           {
                             if(mat[0][i]==s2)
                                {                               
                                  ok2=1;
                                 i=io;                   
                                }         
                           }
                           if(ok2==0)
                           printf("Le numero n existe pas");
 
                       }
                        if(ind2==76)
                         {
                           for(i=0;i<=it;i++)
                            {
                             if(mat[1][i]==s2)
                               {
                                ok2=1;
                                  i=it;                   
                               }         
                            }                          
                          if(ok2==0)
                            {              
                               printf("Le numero n existe pas");  
                            }
                          }
                       if(ind2==70)
                         {
                                for(i=0;i<=ie;i++)
                                  {
                                     if(mat[2][i]==s2)
                                     {
                                       ok2=1;
                                        i=ie;                   
                                      }         
                                  }              
                             if(ok2==0)            
                             printf("Le numero n existe pas");
 
                         }
                             if(ok2==1 && ok3==0)
                              {                  
                                 if(ind1==ind2)
                                    {   
										system("cls");                         
                                        printf("Votre appel peut durer %f s",(float)tabcredit[0][sauv]/25); 
                                       flo=(float)tabcredit[0][sauv]/25;
                                       printf("\nEntrer la duree:\t");
                                      do
                                         {
                                           scanf("%f",&da);
                                             if(da<0)
                                              printf("la duree ne doit pas etre negatif:\t");
                                                 if(da>flo)
                                            printf("la duree doit < ou = a %f:\t",(float)tabcredit[0][sauv]/25);
                                         }
                                       while(da<0 || da>flo);
                                        printf("\nVotre numero est:%d",s1);
                                       printf("\nCelui de votre correspondant est %d",s2);
                                       printf("\nCout de l appel %f Fcfa",da*25);
                                        printf("\nil vous reste %f Fcfa",tabcredit[0][sauv]-(da*25));
                                        tabcredit[0][sauv]=tabcredit[0][sauv]-(da*25);
                                    }                                                       
                                    if(ind1==77 || ind1==78 && ind2==76 || ind2==70)
                                    {
                                    	printf("%d",ind2);
                                          printf("\nVotre appel peut durer %fs",(float)tabcredit[0][sauv]/50); 
                                           flo=(float)tabcredit[0][sauv]/50;
                                            printf("\nEntrer la duree:\t");
                                           do
                                            {
                                               scanf("%f",&da);
                                               if(da<0)
                                               printf("la duree ne doit pas etre negatif:\t");
                                               if(da>flo)
                                                  printf("la duree doit < ou = a %f:\t",(float)tabcredit[0][sauv]/50);
                                            }
                                          while(da<0 || da>flo);
                                       printf("\nVotre numero est:%d",s1);
                                          printf("\nCelui de votre correspondant est %d",s2);
                                        printf("\nCout de l appel %f Fcfa",da*50);
                                          printf("\nil vous reste %f Fcfa",tabcredit[0][sauv]-(da*50)); 
										  tabcredit[0][sauv]=tabcredit[0][sauv]-(da*50);                  
                                    }
                              }
                      if(ok3==1)
                  	{
                  		system("cls");
                  		printf("\nAppel impossible");
                  	}       
                   }
                 else
                  {
                  	if(ok2==1)
                  	printf("\nVotre credit est insuffisant");                  	
                  } 
 
               }               
          }
           if(ind1==76)
          {
            for(i=0;i<=it;i++)
                 {
                  if(mat[1][i]==s1)
                  {
                   ok2=1;
                   sauv=i;
                   i=it;                   
                  }         
                 }
               if(ok2==0)
             printf("Le numero n existe pas");
               else
               {
                 if(tabcredit[1][sauv]>60)
                   {         
				   ok2=0;   
                    printf("Entrer celui de votre correspondant:\t");
                    do
                     {      
                      scanf("%s",&ope.num);
                        s2=atoi(ope.num);
                      switch(ope.num[0])
                          {
                            case '7':
                            switch(ope.num[1])
                             {
                                 case '7':
                                 ok=1;
                                 break;
                                 case '8':
                                 ok=1;
                                   break;
                                  case '0':
                                  ok=1;
                                   break;
                                  case '6':
                                  ok=1;
                                 break;
                            }
                          }
                          if(strlen(ope.num)!=9)
                             printf("le numero doit comporter 9 chiffres:\t");
                             if(ok==0)
                            printf("le numero doit commencer par 77,78,76 ou 70:\t");
                           if(strlen(ope.num)!=9 && ok==0)
                            printf("le numero doit comporter 9 chiffres et doit commencer par 77,78,76 ou 70:\t");
                     }
                       while(ok==0 || strlen(ope.num)!=9);
                         ind2=s2/10000000;
                         if(s1==s2)
                         ok3=1;
                        if(ind2==77 || ind2==78)
                          {
                            for(i=0;i<=io;i++)
                             {
                              if(mat[0][i]==s2)
                               {
                                 ok2=1;
                                  i=io;                   
                               }         
                             }
                            if(ok2==0)
                            printf("Le numero n existe pas");        
                          }
                         if(ind2==76)
                            {
                               for(i=0;i<=it;i++)
                                 {
                                     if(mat[1][i]==s2)
                                      {
                                         ok2=1;
                                         i=it;                   
                                      }         
                                 }                          
                               if(ok2==0)
                                 {              
                                  printf("Le numero n existe pas");  
                                  }
                             }
                         if(ind2==70)
                            {
                             for(i=0;i<=ie;i++)
                                 {
                                  if(mat[2][i]==s2)
                                  {
                                   ok2=1;
                                   i=ie;                   
                                  }         
                                }              
                               if(ok2==0)            
                               printf("Le numero n existe pas");             
                            }
                         if(ok2==1 && ok3!=1)
                             {
 
                               if(ind1==ind2)
                              {          
							     	system("cls");                  
                                   printf("Votre appel peut durer %fs",(float)tabcredit[1][sauv]/25); 
                                      flo=(float)tabcredit[1][sauv]/25;
                                      printf("\nEntrer la duree:\t");
                                     do
                                      {
                                       scanf("%f",&da);
                                         if(da<0)
                                           printf("la duree ne doit pas etre negatif:\t");
                                        if(da>flo)
                                         printf("la duree doit < ou = a %f:\t",(float)tabcredit[1][sauv]/25);
                                      }
                                   while(da<0 || da>flo);
                                   printf("\nVotre numero est:%d",s1);
                                    printf("\nCelui de votre correspondant est %d",s2);
                                   printf("\nCout de l appel %f Fcfa",da*25);
                                    printf("\nil vous reste %f Fcfa",tabcredit[1][sauv]-(da*25));
                                    tabcredit[0][sauv]=tabcredit[0][sauv]-(da*25);
                              }                           
                              if(ind1==76 && ind2==77 || ind2==70 || ind2==78)
                                  {
                                          printf("\nVotre appel peut durer %fs",(float)tabcredit[1][sauv]/40);
                                           flo=(float)tabcredit[1][sauv]/40;
                                          printf("\nEntrer la duree:\t");
                                          do
                                               {
                                                scanf("%f",&da);
                                                if(da<0)
                                                 printf("la duree ne doit pas etre negatif:\t");
                                                  if(da>flo)
                                                printf("la duree doit <= a %f:\t",(float)tabcredit[1][sauv]/40);
                                               }
                                         while(da<0 || da>flo);
                                           printf("\nVotre numero est:%d",s1);
                                           printf("\nCelui de votre correspondant est %d",s2);
                                            printf("\nCout de l appel %f Fcfa",da*50);
                                         printf("\nil vous reste %f Fcfa",tabcredit[1][sauv]-(da*40));
										 tabcredit[0][sauv]=tabcredit[0][sauv]-(da*40);                   
                                  }
                             }
							  if(ok3==1)
                  	{
                  		system("cls");
                  		printf("\nAppel impossible");
                  	}                
                  }
                 else
                    printf("\nVotre credit est insuffisant");
 
               }               
          }
                if(ind1==70)
          {
            for(i=0;i<=ie;i++)
                 {
                  if(mat[2][i]==s1)
                  {
                   ok2=1;
                   sauv=i;
                   i=ie;                   
                  }         
                 }
               if(ok2==0)
             printf("Le numero n existe pas");
               else
               {
                 if(tabcredit[2][sauv]>60)
                   {
                   	ok2=0;
                        printf("Entrer celui de votre correspondant:\t");
                          do
                          {      
                           scanf("%s",&ope.num);
                           s2=atoi(ope.num);
                           switch(ope.num[0])
                           {
                              case '7':
                               switch(ope.num[1])
                                   {
                                    case '7':
                                        ok=1;
                                        break;
                                     case '8':
                                       ok=1;
                                      break;
                                     case '0':
                                          ok=1;
                                      break;
                                      case '6':
                                      ok=1;
                                       break;
                                    }
                           }
                             if(strlen(ope.num)!=9)
                             printf("le numero doit comporter 9 chiffres:\t");
                            if(ok==0)
                             printf("le numero doit commencer par 77,78,76 ou 70:\t");
                            if(strlen(ope.num)!=9 && ok==0)
                            printf("le numero doit comporter 9 chiffres et doit commencer par 77,78,76 ou 70:\t");
                          }
                        while(ok==0 || strlen(ope.num)!=9);
                           ind2=s2/10000000;
                           if(s1==s2)
                           ok3=1;
                           if(ind2==77 || ind2==78)
                             {
                               for(i=0;i<=io;i++)
                                {
                                     if(mat[0][i]==s2)
                                      {
                                        ok2=1;
                                         i=io;                   
                                      }         
                                }
                               if(ok2==0)
                                printf("Le numero n existe pas");        
                             }
                         if(ind2==76)
                           {
                             for(i=0;i<=it;i++)
                              {
                                if(mat[1][i]==s2)
                                 {
                                  ok2=1;
                                   i=it;                   
                                 }         
                              }                          
                             if(ok2==0)
                            {              
                                printf("Le numero n existe pas");  
                            }
                           }
                        if(ind2==70)
                           {
                              for(i=0;i<=ie;i++)
                                   {
                                     if(mat[2][i]==s2)
                                          {
                                             ok2=1;
                                              i=ie;                   
                                          }         
                                    }              
                              if(ok2==0)            
                               printf("Le numero n existe pas");             
                          }
                                if(ok2==1 && ok3!=1)
                           {                      
                            if(ind1==ind2)
                              {       
							      	system("cls");                     
                                printf("Votre appel peut durer %fs",(float)tabcredit[2][sauv]/25); 
                                 flo=(float)tabcredit[2][sauv]/60;
                                printf("\nEntrer la duree:\t");
                                    do
                                     {
                                      scanf("%f",&da);
                                       if(da<0)
                                       printf("la duree ne doit pas etre negatif:\t");
                                          if(da>flo)
                                       printf("la duree doit < ou = a %f:\t",(float)tabcredit[2][sauv]/25);
                                     }
                                   while(da<0 || da>flo);
                                printf("\nVotre numero est:%d",s1);
                                printf("\nCelui de votre correspondant est %d",s2);
                                printf("\nCout de l appel %f Fcfa",da*60);
                                printf("\nil vous reste %f Fcfa",tabcredit[2][sauv]-(da*25));
                                tabcredit[0][sauv]=tabcredit[0][sauv]-(da*60);
                              }                                                       
                                if(ind1==70 && ind2==77 || ind2==76 || ind2==78)
                                 {
                                 	system("cls");
                                     printf("\nVotre appel peut durer %fs",(float)tabcredit[2][sauv]/60); 
                                    flo=(float)tabcredit[2][sauv]/60;
                                     printf("\nEntrer la duree:\t");
                                     do
                                     {
                                      scanf("%f",&da);
                                      if(da<0)
                                      printf("la duree ne doit pas etre negatif:\t");
                                      if(da>flo)
                                      printf("la duree doit < ou = a %f:\t",(float)tabcredit[2][sauv]/65);
                                     }
                                   while(da<0 || da>flo);
                                  printf("\nVotre numero est:%d",s1);
                                  printf("\nCelui de votre correspondant est %d",s2);
                                  printf("\nCout de l appel %f Fcfa",da*50);
                                  printf("\nil vous reste %f Fcfa",tabcredit[2][sauv]-(da*60));
								  tabcredit[0][sauv]=tabcredit[0][sauv]-(da*60);                   
                                 }
                          } 
						   if(ok3==1)
                  	{
                  		system("cls");
                  		printf("\nAppel impossible");
                  	}               
                    }
                 else
                  printf("\nVotre credit est insuffisant"); 
				   if(ok3==1)
                  	{
                  		system("cls");
                  		printf("\nAppel impossible");
                  	}              
               }               
          }
         printf("\n");
         system("pause");
         system("cls");
  break;
  case 3:
  	system("cls");
             printf("entrer le numero:\t");
   do
     {      
       scanf("%s",&ope.num);
       s1=atoi(ope.num);
       switch(ope.num[0])
       {
         case '7':
         switch(ope.num[1])
         {
          case '7':
          ok=1;
          break;
          case '8':
          ok=1;
          break;
          case '0':
          ok=1;
          break;
          case '6':
          ok=1;
          break;
         }
       }
       if(strlen(ope.num)!=9 && ok==1)
       printf("le numero doit comporter 9 chiffres:\t");
       if(ok==0 && strlen(ope.num)==9)
       printf("le numero doit commencer par 77,78,76 ou 70:\t");
       if(strlen(ope.num)!=9 && ok==0)
        printf("le numero doit comporter 9 chiffres et doit commencer par 77,78,76 ou 70:\t");
     }
     while(ok==0 || strlen(ope.num)!=9);
            ind1=s1/10000000;
          if(ind1==77 || ind1==78)
          {
            for(i=0;i<=io;i++)
                 {
                  if(mat[0][i]==s1)
                  {
                   ok2=1;
                    sauv=i;
                   i=io;                  
                  }         
                 }
               if(ok2==0)
             printf("Le numero n existe pas\n");
 
                else
 
              printf("le montant de votre compte est:\t%d Fcfa\n",tabcredit[0][sauv]);
 
          }
          if(ind1==76)
          {
            for(i=0;i<=it;i++)
                 {
                  if(mat[1][i]==s1)
                  {
                   ok2=1;
                   sauv=i;
                   i=it;                   
                  }         
                 }
 
 
          if(ok2==0)
            {              
              printf("Le numero n existe pas\n");  
            }
            else
             {
              printf("le montant de votre compte est:\t%d Fcfa\n",tabcredit[1][sauv]);
             }
 
          }
          if(ind1==70)
          {
            for(i=0;i<=ie;i++)
                 {
                  if(mat[2][i]==s1)
                  {
                   ok2=1;
                   sauv=i;
                   i=ie;                   
                  }         
                 }              
          if(ok2==0)
            {
             printf("Le numero n existe pas\n");
             }
           else
           printf("le montant de votre compte est:\t%d Fcfa\n",tabcredit[2][sauv]);
            }
            system("pause");
            system("cls");
    break;
  case 4:
  	system("cls");
        printf("entrer le numero:\t");
   do
     {    
     ok=0;  
       scanf("%s",&ope.num);
       s1=atoi(ope.num);
       switch(ope.num[0])
       {
         case '7':
         switch(ope.num[1])
         {
          case '7':
          ok=1;
          break;
          case '8':
          ok=1;
          break;
          case '0':
          ok=1;
          break;
          case '6':
          ok=1;
          break;
         }
       }
       if(strlen(ope.num)!=9 && ok==1)
       printf("\nle numero doit comporter 9 chiffres:\t");
       if(ok==0 && strlen(ope.num)==9)
       printf("\nle numero doit commencer par 77,78,76 ou 70:\t");
       if(strlen(ope.num)!=9 && ok==0)
        printf("\nle numero doit etre 9 chiffres et doit commencer par 77,78,76 ou 70:\t");
     }
     while(ok==0 || strlen(ope.num)!=9);
            ind1=s1/10000000;
          if(ind1==77 || ind1==78)
          {
            for(i=0;i<=io;i++)
                 {
                  if(mat[0][i]==s1)
                  {
                   ok2=1;
                   sauv=i;
                   i=io;                   
                  }         
                 }
                 fflush(stdin);
               if(ok2==0)
             printf("Le numero n existe pas\n");
 
                else
             {
              printf("Entrer le montant:\t");
              scanf("%d",&mnt);
              tabcredit[0][sauv]=mnt;           
            }
          }
          if(ind1==76)
          {
            for(i=0;i<=it;i++)
                 {
                  if(mat[1][i]==s1)
                  {
                   ok2=1;
                   sauv=i;
                   i=it;                   
                  }         
                 }
 
 
          if(ok2==0)
            {              
              printf("Le numero n existe pas\n");  
            }
            else
             {
              printf("Entrer le montant:\t");
              scanf("%d",&mnt);
              tabcredit[1][sauv]=mnt;
             }
 
          }
          if(ind1==70)
          {
            for(i=0;i<=ie;i++)
                 {
                  if(mat[2][i]==s1)
                  {
                   ok2=1;
                   sauv=i;
                   i=ie;
                  }         
                 }              
          if(ok2==0)
            {
             printf("Le numero n existe pas\n");
             }            
             else
             {
              printf("Entrer le montant:\t");
              scanf("%d",&mnt);
              tabcredit[2][sauv]=mnt;
             }
          }          
         system("pause");
         system("cls");
   break;   
   case 5:   
   system("cls");
    printf("AU REVOIR");    
    je=1;
   break; 
}
}
while(conti==1 && je==0);
getch();
}



  • Partager sur Facebook
  • Partager sur Twitter
7 avril 2016 à 22:09:25

slt a tous !! j'ai besoin d'aide pour un exercice concernant un programme qui affiche la date du lendemain connaissant la date du jour ? et tout en tenant compte des années bissextiles et non bissextiles merci d'avance ??

  • Partager sur Facebook
  • Partager sur Twitter
13 avril 2016 à 11:29:36

Ah que bonjour,

900 lignes dans une fonction ? Une bonne galère à débugger n'est-ce pas ? ...

-
Edité par Beertran 13 avril 2016 à 11:29:52

  • Partager sur Facebook
  • Partager sur Twitter
22 avril 2016 à 11:17:23

bonjour je sait que mon message n'a rien a voir avec ce que vous faites et je vous prie de m'en excuser mais je souhaiterai commencer a apprendre la programmation sachant que je n'ai aucune connaissance sur le sujet j'aimerais avoir votre avis pour savoir par ou commencer merci :)
  • Partager sur Facebook
  • Partager sur Twitter
18 mai 2016 à 19:32:59

Je vais jamais y arriver (je suis a la partie 2 du cours de Mathieu) o_O
  • Partager sur Facebook
  • Partager sur Twitter
ChelckyDev, Kid developper
18 mai 2016 à 22:02:19

louk a écrit:

Pour une N-ième fois, ceci est un topique sur un exercice en particulier. Là c'est hors sujet, crée ton propre topique. C'est quand même pas compliqué, ça doit faire la 5e fois que le répète (et je suis pas le seul).



  • Partager sur Facebook
  • Partager sur Twitter
22 mai 2016 à 22:24:01

Bonjour,

Voilà j'ai besoin d'aide, je n'arrive pas à faire ce programme et j'en ai vraiment besoin, merci d'avance pour votre aide.

Voilà l'énoncé : 

Soit L une liste d'étudiants. Chaque étudiant est défini par son matricule (entier), son nom et prénom (chaine) et sa filière ('ACAD','GTR', ou 'ISIL')

1) Donner la déclaration de cette liste

2)Ecrire une procédure "ECLATE" qui permet de déplacer et de créer deux listes L1 contenant les étudiants de la filière 'GTR' et L2 contenant les étudiant de la filière 'ISIL'. A la fin, la liste originale L contiendra que des étudiants de la filière 'ACAD' seulement.

Voilà encore merci d'avance. 

  • Partager sur Facebook
  • Partager sur Twitter
22 mai 2016 à 23:12:54

louk a écrit:

Pour une N-ième fois, ceci est un topique sur un exercice en particulier. Là c'est hors sujet, crée ton propre topique. C'est quand même pas compliqué, ça doit faire la 5e fois que le répète (et je suis pas le seul).

-
Edité par SofEvans 22 mai 2016 à 23:13:26

  • Partager sur Facebook
  • Partager sur Twitter
24 mai 2016 à 0:12:47

Je crois qu'il va falloir contacter un modo pour fermer ce sujet.

@ChelckyDev, mais si tu vas y arriver ! Vas-y pas à pas, commence par faire vraiment le plus simple. Fais des petits bouts de codes tests ou ce genre de choses si tu te sens perdu-e.

-
Edité par louk 24 mai 2016 à 0:15:28

  • Partager sur Facebook
  • Partager sur Twitter
louk : le chipoteur orthographique | Vous aimiez bien le site du zéro ? Allez voir Zeste de Savoir
24 mai 2016 à 9:36:01

louk a écrit:

Je crois qu'il va falloir contacter un modo pour fermer ce sujet.

@ChelckyDev, mais si tu vas y arriver ! Vas-y pas à pas, commence par faire vraiment le plus simple. Fais des petits bouts de codes tests ou ce genre de choses si tu te sens perdu-e.


C'est quelque chose qui aurait dû être fait depuis très longtemps !
Entre les ouin-ouin analphabètes et ceux qui s’évertuent à répéter l'évidence, je suis persuadé qu'avec un nettoyage en règles on gagnerait 1 à 2 pages !

  • Partager sur Facebook
  • Partager sur Twitter
24 mai 2016 à 16:07:27

Non, c'est bon je me plains plus, j'arrive enfin a utiliser SDL! :D
  • Partager sur Facebook
  • Partager sur Twitter
ChelckyDev, Kid developper
20 août 2016 à 18:39:21

Salut,

Je vous montre mon code on ne sait jamais peut-être qu'il y a encore des gens intéressés.

#include <stdio.h>
#include <stdlib.h>

void	ft_remplissage(int decimal, int *tab, int i)
{
	i--;
	while (i >= 0)
	{
		if (decimal > 0)
		{
			tab[i] = decimal % 2;
			decimal = decimal / 2;
		}
		else
			tab[i] = 0;
		i--;
	}
}

int		ft_value(int left, int right, int middle)
{
	int res;

	res = 1;
	if ((left == 1 && middle == 1 && right == 1) ||
		(left == 1 && middle == 1 && right == 0) ||
		(left == 1 && middle == 0 && right == 1) ||
		(left == 0 && middle == 0 && right == 0))
	{
		res = 0;
	}
	return (res);
}

void	ft_copy(int *tab, int *newtab, int cellule)
{
	int i;

	i = 0;
	while(i < cellule)
	{
		tab[i] = newtab[i];
		i++;
	}
}

void	ft_nextgen(int *tab, int *newtab, int cellule, int generation)
{
	int j;
	int left;
	int right;

	while(generation > 0)
	{
		j = 0;
		while(j < cellule)
		{
			printf("%d", tab[j]);
			j++;
		}
		printf("\n");
		j = 0;
		while(j < cellule)
		{
			if (j - 1 < 0)
				left = tab[cellule - 1];
			else
				left = tab[j - 1];
			if (j + 1 == cellule)
				right = tab[0];
			else
				right = tab[j + 1];
			newtab[j] = ft_value(left, right, tab[j]);
			j++;
		}
		ft_copy(tab, newtab, cellule);
		generation--;
	}
}

int	ft_cellulaire(int cellule, int generation, int conf)
{
	int *tab;
	int	*newtab;

	if ((tab = malloc(sizeof(*tab) * (cellule) + 1)) == NULL)
	{
		printf("error : tab malloc failed.\n");
		return (0);
	}
	if ((newtab = malloc(sizeof(*tab) * (cellule) + 1)) == NULL)
	{
		printf("error : newtab malloc failed.\n");
		return (0);
	}
	ft_remplissage(conf, tab, cellule);
	ft_nextgen(tab, newtab, cellule, generation);
	free(tab);
	free(newtab);
	return (0);
}

int		main(int argc, char **argv)
{
	int nb_cellule;
	int nb_generation;
	int nb_conf;

	if (argc != 4)
		printf("error : probleme de nombre d'arguments.\n");
	else
	{
		nb_cellule = atoi(argv[1]);
		nb_generation = atoi(argv[2]);
		nb_conf = atoi(argv[3]);

		ft_cellulaire(nb_cellule, nb_generation, nb_conf);
	}
	return (0);
}



  • Partager sur Facebook
  • Partager sur Twitter
1 septembre 2016 à 3:22:58

ton code me retourne ( à la ligne )

 if (argc != 4)
        printf("error : probleme de nombre d'arguments.\n");   // je sais pas pourquoi

  • Partager sur Facebook
  • Partager sur Twitter
UnDeadRoot~AshSnowLuv
2 septembre 2016 à 21:24:19

Quand tu exécutes le programme il faut indiquer 3 valeurs
ex : ./main.exe 8 8 8

  • Partager sur Facebook
  • Partager sur Twitter
20 septembre 2016 à 22:17:12

Ton malloc est faux. Tu as mal placé tes parenthèses ! C'est (cellule + 1).

Pourquoi sizeof(*tab) pour newtab ?

Si cellule ou generation est négatif, que se passe t'il ?

Ta fonction ft_copy ne sert a rien, pourquoi ne pas simplement échanger les pointeurs ?

Ta fonction ft_cellulaire retourne quelque chose, mais est-ce utile ?

Pourquoi tes fonctions s'appellent ft_xxx ? ya pas de norminette ailleurs que dans ton école, tu codes comme tu veux !

Tu pourrais faire une fonction pour afficher ton tableau.

Tu pourrais simplifier la recuperation de valeur left et right avec un modulo.

Tu pourrais te passer de malloc. Tu prends chaque bit, du coup si ton int fait 32bits, ton tableau fera maximum... 32 cases !

Mélanger français et anglais, c'est pas top.

Tu as le droit d'utiliser des for. :p

  • Partager sur Facebook
  • Partager sur Twitter
22 octobre 2016 à 22:02:24

bonjour merci pour cette article je veut vraiment tester ;)

  • Partager sur Facebook
  • Partager sur Twitter
8 novembre 2016 à 17:35:21

salut, j'ai commencé le C il y a 8 jours, donc si vous avez des remarques, lâchez-vous.

#include <stdlib.h>
#include <stdio.h>
#include <string.h>


char* out;

char genNext(char* trio, int regle)
	{
	regle = regle>>(trio[0]=='1')*4;
	regle = regle>>(trio[1]=='1')*2;
	return regle>>(trio[2]=='1')&1?'1':' ';
	}

char* update(char* cellule, int regle)
	{
	int size = strlen(cellule);
	out = malloc((size)*sizeof(char));
	out[size] = '\0';
	char trio[3];
	trio[0] = ' ';
	trio[1] = cellule[0];
	int i=0;
	while(cellule[i])
		{
		trio[2] = cellule[i+1];
		out[i]  = genNext(trio,regle);
		i++;
		trio[0] = trio[1];
		trio[1] = trio[2];
		}
	return out;
	}

int main()
	{
	char* cellule = "          1          ";
	printf("%s\n",cellule);
	for(int i=0;i<10;i++)
		{
		cellule = update(cellule,30);
		printf("%s\n",cellule);
		}
	free(out);
	return 0;
	}

-
Edité par josmiley 8 novembre 2016 à 17:36:24

  • Partager sur Facebook
  • Partager sur Twitter
21 novembre 2016 à 9:54:22

Tu as une mauvaise utilisation de ton pointeur cellule/out. AU debut tu le declares en pointeur sur une chaine de caractere (statique) et ensuite tu utilises une chaine dynamique (malloc). De plus, tu ne fais pas de free a tous tes tours de boucle, du coup tu as des fuites memoire ! ;) D'ailleurs, je ne vois pas pourquoi tu utilises une variable globale, elle est inutile.

Ton malloc n'alloue pas la bonne taille, il ne faut pas oublier un +1 pour mettre le \0 de ta chaine => malloc((size + 1) * sizeof (char))

Dans ta fonction genNext, je n'aime pas trop ton utilisation de ternaire, ca rend le code illisible. Il vaut mieux perdre quelques lignes pour avoir un code clair que de tenter de gagner quelques grains de sels avec un ternaire !

Sinon, je n'ai pas teste ton code ni regarde l'algo. ^^ Le prototype de main est int main(void) ou int main(int argc, char **argv)

  • Partager sur Facebook
  • Partager sur Twitter
21 novembre 2016 à 11:21:20

Merci pour tes commentaires Pouet_forever,

j'ai donc modifier le code en conséquence ce qui m'a permis de découvrir la différence entre char* foo et char foo[].

#include <stdlib.h>
#include <stdio.h>
#include <string.h>


char genNext(char* trio, int regle)
	{
	regle = regle>>(trio[0]=='1')*4;
	regle = regle>>(trio[1]=='1')*2;
	if(regle>>(trio[2]=='1')&1)return '1';
	return ' ';
	}

void update(char cellule[], int regle)
	{
	size_t size = strlen(cellule)+1;
	char* out = malloc((size)*sizeof(char));
	out[size] = '\0';
	char trio[3];
	trio[0] = ' ';
	trio[1] = cellule[0];
	int i=0;
	while(cellule[i])
		{
		trio[2] = cellule[i+1];
		out[i]  = genNext(trio,regle);
		i++;
		trio[0] = trio[1];
		trio[1] = trio[2];
		}
	memcpy(cellule,out,size);
	free(out);
	}

int main(void)
	{
	char cellule[] = "          1          ";
	printf("%s\n",cellule);
	for(int i=0;i<10;i++)
		{
		update(cellule,30);
		printf("%s\n",cellule);
		}
	return 0;
	}

En fait je pense que je pourrai même me passer du out. Je verrai ce soir après le boulot.

-
Edité par josmiley 21 novembre 2016 à 12:23:01

  • Partager sur Facebook
  • Partager sur Twitter
21 novembre 2016 à 16:12:04

out[size] vaut quoi ? ;) tu as un +1 avant, il le faut pour la taille a allouer, pas pour affecter !

Je maintiens que pour genNext tu pourrais te passer de ternaires.

Tu devrais déclarer tes variables en début de bloc, ça rend la lecture plus agréable.

  • Partager sur Facebook
  • Partager sur Twitter
21 novembre 2016 à 22:18:18

Tadam !

#include <stdlib.h>
#include <stdio.h>


char genNext(char* trio, int regle)
	{
	regle = regle>>(trio[0]=='1')*4;
	regle = regle>>(trio[1]=='1')*2;
	if(regle>>(trio[2]=='1')&1)return '1';
	return ' ';
	}

void update(char cellule[], int regle)
	{
	char trio[3];
	int i=0;
	trio[0] = ' ';
	trio[1] = cellule[0];
	while(cellule[i])
		{
		trio[2] = cellule[i+1];
		cellule[i]  = genNext(trio,regle);
		i++;
		trio[0] = trio[1];
		trio[1] = trio[2];
		}
	}

int main(void)
	{
	char cellule[] = "          1          ";
	printf("%s\n",cellule);
	for(int i=0;i<10;i++)
		{
		update(cellule,30);
		printf("%s\n",cellule);
		}
	return 0;
	}


Par contre j'ai un doute sur les comparaisons, comme dans "regle = regle>>(trio[0]=='1')*4;"

on m'a dit que trio[0]=='1, par exemple, retourne soit 0, soit une valeur indéfinie. Donc théoriquement mon code n'est pas bon ... ?

-
Edité par josmiley 21 novembre 2016 à 22:22:44

  • Partager sur Facebook
  • Partager sur Twitter
22 novembre 2016 à 8:59:19

Une comparaison retourne soit 1 en cas d’égalité ou 0 dans le cas contraire. Donc c'est bon, mais je trouve pas ça très joli dans ton code. Encore une fois, privilégie la lisibilité du code plutôt que la taille. Tu pourrais encore améliorer la lisibilité. :)

  • Partager sur Facebook
  • Partager sur Twitter
22 novembre 2016 à 10:31:37

comme ça ?

char genNext(char* trio, int regle)
	{
	if(trio[0]=='1')
		regle = regle>>4;
	if(trio[1]=='1')
		regle = regle>>2;
	if(regle>>(trio[2]=='1')&1)
		return '1';
	return ' ';
	}



  • Partager sur Facebook
  • Partager sur Twitter
22 novembre 2016 à 11:01:35

Par exemple. :) (il en reste 1 !)
  • Partager sur Facebook
  • Partager sur Twitter
22 novembre 2016 à 22:30:04

char genNext(char* trio, int regle)
	{
	if(trio[0]=='1')
		regle = regle>>4;
	if(trio[1]=='1')
		regle = regle>>2;
	if(trio[2]=='1')
		regle = regle>>1;
	if(regle&1)
		return '1';
	return ' ';
	}
:)

-
Edité par josmiley 22 novembre 2016 à 22:30:53

  • Partager sur Facebook
  • Partager sur Twitter
23 novembre 2016 à 8:28:29

Mieux ! :)

Comme tu as des choses qui se répètent, tu peux peut-être faire une boucle ? :p

  • Partager sur Facebook
  • Partager sur Twitter
23 novembre 2016 à 11:04:54

Je ne sais pas, amha, en dessous de 10 lignes, cela me semble plus coûteux d'utiliser des variables plutôt que des valeurs en dur. Non ?
  • Partager sur Facebook
  • Partager sur Twitter
23 novembre 2016 à 11:33:10

Est-ce que tu penses vraiment que sur ton ordinateur multi coeur cadencé a quelques Ghz avec je sais pas combien de Go de ram tu verras la différence ?

Et de toute manière, ton compilateur enlèvera surement la boucle au moment de l'optimisation. ;)

Edit : Il optimise bien en enlevant la boucle. ;)

0000000000000000 <genNext>:
   0:	89 f0                	mov    %esi,%eax
   2:	c1 f8 04             	sar    $0x4,%eax
   5:	80 3f 31             	cmpb   $0x31,(%rdi)
   8:	0f 44 f0             	cmove  %eax,%esi
   b:	89 f0                	mov    %esi,%eax
   d:	c1 f8 02             	sar    $0x2,%eax
  10:	80 7f 01 31          	cmpb   $0x31,0x1(%rdi)
  14:	0f 44 f0             	cmove  %eax,%esi
  17:	89 f0                	mov    %esi,%eax
  19:	d1 f8                	sar    %eax
  1b:	80 7f 02 31          	cmpb   $0x31,0x2(%rdi)
  1f:	0f 44 f0             	cmove  %eax,%esi
  22:	83 e6 01             	and    $0x1,%esi
  25:	83 fe 01             	cmp    $0x1,%esi
  28:	19 c0                	sbb    %eax,%eax
  2a:	83 e0 ef             	and    $0xffffffef,%eax
  2d:	83 c0 31             	add    $0x31,%eax
  30:	c3                   	retq



-
Edité par Pouet_forever 23 novembre 2016 à 11:43:13

  • Partager sur Facebook
  • Partager sur Twitter
23 novembre 2016 à 12:03:47

Pouet_forever a écrit:

Edit : Il optimise bien en enlevant la boucle. ;)

Trop forts ces compilateurs !
  • Partager sur Facebook
  • Partager sur Twitter