Advertisement
LilChicha174

Untitled

Apr 20th, 2022
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.02 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4.  
  5. int count_if(void *base, size_t num, size_t size, int (*pred)(const void*)){
  6.  
  7.     int count_even = 0;
  8.     void *cur = base;
  9.     for(int i=1; i<num+1; i++){
  10.         if(pred(cur) == 1){
  11.             count_even++;
  12.         }
  13.         cur = base+i*size;
  14.     }
  15.     return count_even;
  16. }
  17.  
  18. int pred_int(const void* a){
  19.     int cur = *(int*) a;
  20.     if((abs(cur)%2)==0) return 1;
  21.     return 0;
  22. }
  23.  
  24. int pred_double(const void* a){
  25.     double cur = *(double*) a;
  26.     if ((((int)abs(cur)%2)==0) && ((fabs(cur) - abs((int)cur)) < 0.000001)) return 1;
  27.     return 0;
  28. }
  29.  
  30.  
  31. int main(){
  32.     int n = 20;
  33.     int size = 0;
  34.     scanf("%d", &size);
  35.  
  36.     if(size == 4){
  37.         int input_array[n];
  38.         for(int i=0;i<n;i++)
  39.             scanf("%d", &input_array[i]);
  40.         int p = count_if(input_array, n, sizeof(int), pred_int);
  41.         printf("%d", p);
  42.     }
  43.    
  44.     if(size == 8){
  45.         double input_array[n];
  46.         for(int i=0;i<n;i++)
  47.             scanf("%lf", &input_array[i]);
  48.         int p = count_if(input_array, n, sizeof(double), pred_double);
  49.         printf("%d", p);
  50.     }
  51.  
  52.  
  53.     return 0;
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement