Advertisement
brsjak

Поголем максимум

May 26th, 2016
590
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.32 KB | None | 0 0
  1. /*Од стнадарден влез се чита цел број N не поголем од 100 кој претставува број на елементи на низата a. Потоа се читаат содветно елементите на низата a. Потоа се чита цел број M не поголем од 100 кој претставува број на елементи на низата b и содветно се читаат елементите на низата b.
  2.  
  3. Треба да се креира нова низа c на следниот начин: првиот елемент е поголемиот од максимумите во двете низи; вториот елемент е поголемиот од максимумите на последните n/2 елементи од низата a и последните m/2 елементи од низата b; третиот елемент е поголемиот од максимумите на последните n/4 елементи од низата a и последните m/4 елементи од низата b итн се додека низите имаат елементи. Итерацијата завршува кога барем кај една од низите n/k или m/k стане 0 (k={2,4,8,16,...})
  4.  
  5. На стандарден излез да се испечати новодобиената низа c.
  6.  
  7. Наоѓањето максимум во низа да се реализира со посебна рекурзивна функција.*/
  8.  
  9. #include <stdio.h>
  10. #include <math.h>
  11. #define MAX 100
  12. #define MIN 1
  13.  
  14. int recursion(int *a, int i, int n, int max){
  15.     if(i>n){
  16.         return max;
  17.     }
  18.     if(a[i]>max){
  19.         return recursion(a,i+1,n,a[i]);
  20.     }
  21.     return recursion(a,i+1,n,max);
  22. }
  23.  
  24. int pomal(int a, int b){
  25.     if(a>b){
  26.         return b;
  27.     }
  28.     return a;
  29. }
  30.  
  31. int pogolem(int a, int b){
  32.     if(a>b){
  33.         return a;
  34.     }
  35.     return b;
  36. }
  37.  
  38. int main(){
  39.     int n, m, s, k, i, j, a[MAX], b[MAX], c[MAX];
  40.     scanf("%d", &n);
  41.     for(i=0;i<n;i++){
  42.         scanf("%d", &a[i]);
  43.     }
  44.     scanf("%d", &m);
  45.     for(j=0;j<m;j++){
  46.         scanf("%d", &b[j]);
  47.     }
  48.     s=pomal(m,n);
  49.     for(i=0;pow(2,i)<=s;i++){
  50.         k=pow(2,i);
  51.         c[i]=pogolem(recursion(a,n-(n/k),n-1,MIN),recursion(b,m-(m/k),m-1,MIN));
  52.     }
  53.     for(i=0;pow(2,i)<=s;i++){
  54.         printf("%d ", c[i]);
  55.     }
  56.     return 0;
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement