lonsomehell

Untitled

Nov 27th, 2012
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.76 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int cont(int N)
  5. {
  6.     do
  7.     {
  8.         printf("\nentrer la taille");
  9.         scanf("%d",&N);
  10.     }while((N<1)||(N>10));
  11.     return(N);
  12. }
  13.  
  14. void remplir_tab(int N, int x[10])
  15. {
  16.     int i;
  17.     for (i=0;i<N;i++)
  18.     {
  19.         printf("\ndonner l'entier %d ",i+1);
  20.         scanf("%d",&*(x+i));
  21.     }
  22. }
  23. void affiche_tab(int N, int x[10])
  24. {
  25.     int i;
  26.     for (i=0;i<N;i++)
  27.     {
  28.         printf("\nl'entier %d est %d ",i+1,x[i]);
  29.     }
  30. }
  31.  
  32. void chercher_occurences(int N,int x[10],int y[10],int *w)//*w permet de connaitre la taille du nouveaux tableaux
  33. {
  34.     int i,j,v;
  35.     printf("\nentrer v");
  36.     scanf("%d",&v);
  37.     for (i=0,j=0;i<N;i++)
  38.     {
  39.         if (x[i]==v)
  40.         {
  41.             *(y+j)=i;
  42.             j++;
  43.         }
  44.     }
  45.     *w=j;
  46. }
  47.  
  48. void efface_occurances(int *N,int x[10])//N est passer par adresse pour permetre de tasser
  49. {
  50.     int i,j,v,c=0;
  51.     printf("\nentrer v");
  52.     scanf("%d",&v);
  53.     do
  54.     {
  55.         c=0;
  56.         for (i=0,j=0;i<*N;i++)
  57.         {
  58.             if (x[i]==v)
  59.             {
  60.                 for(j=i;j<*N;j++)
  61.                 {
  62.                     *(x+j)=*(x+(j+1));
  63.                 }
  64.                 *N=*N-1;
  65.                 c=1;
  66.             }
  67.         }
  68.     }while(c==1);
  69. }
  70. void fusion(int k1,int k2,int x[10],int y[10],int z[20])//permet de fusionner deux tableaux triƩes
  71. {
  72.     int i=0,j=0,k=0;
  73.     while((i<k1)&&(j<k2))
  74.     {
  75.         while(x[i]<=y[j])
  76.         {
  77.             *(z+k)=x[i];
  78.             k++;
  79.             i++;
  80.         }
  81.         while(y[j]<=x[i])
  82.         {
  83.             *(z+k)=y[j];
  84.             k++;
  85.             j++;
  86.         }
  87.     }
  88.     if (i<k1)
  89.     {
  90.         for (i=i;i<k1;i++,k++)
  91.         {
  92.             *(z+k)=x[i];
  93.         }
  94.     }
  95.     if (j<k2)
  96.     {
  97.         for (j=j;j<k2;j++,k++)
  98.         {
  99.             *(z+k)=y[j];
  100.         }
  101.     }
  102. }
  103. void tri_coroissant(int x[10],int N)
  104. {
  105.     int i,j,m,p;
  106.     for(i=1;i<N;i++)
  107.     {
  108.         m=x[i];
  109.         j=i;
  110.         while((j>0)&&(x[j-1]>m))
  111.         {
  112.             *(x+j)=x[j-1];
  113.             j--;
  114.         }
  115.         *(x+j)=m;
  116.     }
  117. }
  118. void tri_decoroissant(int x[10],int N)
  119. {
  120.     int i,j,m,p;
  121.     for(i=1;i<N;i++)
  122.     {
  123.         m=x[i];
  124.         j=i;
  125.         while((j>0)&&(x[j-1]<m))
  126.         {
  127.             *(x+j)=x[j-1];
  128.             j--;
  129.         }
  130.         *(x+j)=m;
  131.     }
  132. }
  133. void remp_fus(int N, int x[10])
  134. {
  135.     int i;
  136.     printf("\ndonner l'entier 1 ");
  137.     scanf("%d",&*(x));
  138.     for (i=1;i<N;i++)
  139.     {
  140.         do
  141.         {
  142.             printf("\ndonner l'entier %d ",i+1);
  143.             scanf("%d",&*(x+i));
  144.         }
  145.         while(x[i-1]>x[i]);
  146.     }
  147. }
  148. int main()
  149. {
  150.     int n,t[10],v,n2;
  151.     static int T[10];
  152.     int ta[10],tb[10],tr[20],l1,l2;
  153.     printf("########################################\n#\n#\n#\tTp Info 4: Les fonctions \n#\n########################################");
  154.     printf("\nVeuillez choisir le numero de l'operation voulue SVP ... \n########################################");
  155.     printf("\n1.Chercher l'occurance d'un entier");
  156.     printf("\n2.Efaccer l'occurance d'un entier");
  157.     printf("\n3.Fusionner deux tableaux triees");
  158.     printf("\n4.Trier un tableaux dans l'ordre croissant");
  159.     printf("\n5.Trier un tableaux dans l'ordre decroissant");
  160.     printf("\n########################################\n");
  161.     int c;
  162.     scanf("%d",&c);
  163.     if (c==1)
  164.     {
  165.         n=cont(n);
  166.         remplir_tab(n,t);
  167.         chercher_occurences(n,t,T,&n2);
  168.         affiche_tab(n2,T);
  169.     }
  170.     else
  171.     {
  172.         if(c==2)
  173.         {
  174.             n=cont(n);
  175.             remplir_tab(n,t);
  176.             efface_occurances(&n,t);
  177.             affiche_tab(n,t);
  178.         }
  179.         else
  180.         {
  181.             if(c==3)
  182.             {
  183.                 printf("\nTableau 1");
  184.                 l1=cont(l1);
  185.                 printf("\nTableau 2");
  186.                 l2=cont(l2);
  187.                 printf("\nTableau 1");
  188.                 remp_fus(l1,ta);
  189.                 printf("\nTableau 2");
  190.                 remp_fus(l2,tb);
  191.                 printf("\nTableau Fusionne");
  192.                 fusion(l1,l2,ta,tb,tr);
  193.                 affiche_tab(l1+l2,tr);
  194.             }
  195.             else
  196.             {
  197.                 if(c==4)
  198.                 {
  199.                     n=cont(n);
  200.                     remplir_tab(n,t);
  201.                     tri_coroissant(t,n);
  202.                     affiche_tab(n,t);
  203.                 }
  204.                 else
  205.                 {
  206.                     if(c==5)
  207.                     {
  208.                         n=cont(n);
  209.                         remplir_tab(n,t);
  210.                         tri_decoroissant(t,n);
  211.                         affiche_tab(n,t);
  212.                     }
  213.                 }
  214.             }
  215.         }
  216.     }
  217.     return 0;
  218. }
Advertisement
Add Comment
Please, Sign In to add comment