Advertisement
madalinaradu

P22 - interclasare si calcul mediana

Apr 28th, 2019
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.58 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. /**
  4.  * Interclaseaza tabloul a si b sortate si obtine un tablou c cu elemente sortate de dimensiune n+m
  5.  */
  6. void interclasare(int n, float a[], int m, float b[], float c[]) {
  7.     int i;//parcurg cu el primul tablou
  8.     int j;//parcurg cu el al doileatablou
  9.     int k; //Nr de elemente din tabloul rezultate
  10.     i=0;
  11.     j=0;
  12.     k=0;
  13.     while(i<n && j<m) {
  14.         if(a[i]<b[j]) {
  15.             c[k]=a[i];
  16.             i++;
  17.         } else {
  18.             c[k]=b[j];
  19.             j++;
  20.         }
  21.         k++;
  22.     }
  23.     if(i<n) {
  24.         for(; i<n; i++) {
  25.             c[k]=a[i];
  26.             k++;
  27.         }
  28.     } else {
  29.         for(; j<m; j++) {
  30.             c[k]=b[j];
  31.             k++;
  32.         }
  33.     }
  34. }
  35.  
  36. void afisare(int n, float a[]){
  37.     int i;
  38.     for(i=0;i<n;i++){
  39.         printf("%g ", a[i]);
  40.     }
  41.     printf("\n");
  42. }
  43.  
  44. float mediana(int n, float a[]){
  45.     int m=n/2;
  46.     if(n%2 == 0){
  47.         return (a[m-1]+a[m])/2;
  48.     } else {
  49.         return a[m];
  50.     }
  51. }
  52.  
  53. float mediana_recursiv(int start, int end, float a[]){
  54.  
  55.     if(start == end){
  56.         return a[start];
  57.     }
  58.     if(start == end - 1){
  59.         return (a[start]+a[end])/2;
  60.     }
  61.     return mediana_recursiv(start+1, end -1, a);
  62. }
  63.  
  64. int main(){
  65.     float a[]={1,3,5,6,10};
  66.     int n = 5;
  67.     float b[]={0,2,4,16,20,40};
  68.     int m = 5;
  69.  
  70.     float c[100];
  71.     int p;
  72.  
  73.     interclasare(n,a,m,b,c);
  74.     p=n+m;
  75.     afisare(p,c);
  76.  
  77.     printf("Mediana este: %g\n", mediana(p,c));
  78.     printf("Mediana recursiv este: %g\n", mediana_recursiv(0,p-1,c));
  79.  
  80.     return 0;
  81.  
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement