Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- int count_if(void* base, size_t num, size_t size, int (*pred)(const void*)) {
- int count = 0;
- for (size_t i = 0; i < num; i++) {
- if (pred(base + i*size)) {
- count++;
- }
- }
- return count;
- }
- int is_even(const void* p) {
- if (*(int*)p % 2 == 0) {
- return 1;
- }
- return 0;
- }
- int is_even_double(const void* p) {
- double d = *(double*)p;
- int integer_part = (int)d;
- double fractional_part = d - integer_part;
- if (fractional_part < 1e-6 && integer_part % 2 == 0) {
- return 1;
- }
- return 0;
- }
- int main() {
- int size;
- scanf("%d", &size);
- void* arr = malloc(20*size);
- if (arr == NULL) {
- printf("Error: Memory allocation failed\n");
- return 1;
- }
- for (int i = 0; i < 5; i++) {
- if (size == 4) {
- scanf("%d", (int*)arr + i);
- } else if (size == 8) {
- scanf("%lf", (double*)arr + i);
- }
- }
- int count;
- if (size == 4) {
- count = count_if(arr, 5, size, is_even);
- } else if (size == 8) {
- count = count_if(arr, 5, size, is_even_double);
- }
- printf("Number of even elements: %d\n", count);
- free(arr);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement