Advertisement
madalinaradu

ASD Pb 22 mediana sir

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