lonsomehell

principal

Nov 26th, 2012
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.12 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])&&(i<=k1))
  76.         {
  77.             *(z+k)=x[i];
  78.             k++;
  79.             i++;
  80.         }
  81.         while((y[j]<x[i])&&(j<=k2))
  82.         {
  83.             *(z+k)=y[j];
  84.             k++;
  85.             j++;
  86.         }
  87.     }
  88.     if (i<k1)
  89.     {
  90.         for (;i<k1;i++,k++)
  91.         {
  92.             *(z+k)=x[i];
  93.         }
  94.     }
  95.     if (j<k2)
  96.     {
  97.         for (;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.         printf("\ndonner l'entier %d ",i+1);
  141.         do
  142.         {
  143.             scanf("%d",&*(x+i));
  144.         }
  145.         while(*(x-1)>*(x));
  146.     }
  147. }
  148. int main()
  149. {
  150.  
  151.     printf("########################################\n#\n#\n#\tTp Info 4: Les fonctions \n#\n########################################");
  152.     int n,t[10],v,n2;
  153.     static int T[10];
  154.     n=cont(n);
  155.     remplir_tab(n,t);
  156.     affiche_tab(n,t);
  157.     chercher_occurences(n,t,T,&n2);
  158.     affiche_tab(n2,T);
  159.     efface_occurances(&n,t);
  160.     affiche_tab(n,t);
  161.     int ta[10],tb[10],tr[20],l1=5,l2=5;
  162.     fusion(l1,l2,ta,tb,tr);
  163.     return 0;
  164. }
Advertisement
Add Comment
Please, Sign In to add comment