Advertisement
EvgeniiKraaaaaaaav

5.4

Dec 27th, 2018
182
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.12 KB | None | 0 0
  1. //https://vk.com/evgenykravchenko0
  2.  
  3.                 ___                                        ___                   ___    
  4.                /  /\                  ___                 /  /\                 /  /\    
  5.               /  /:/_                /__/\               /  /:/_               /  /:/_  
  6.              /  /:/ /\               \  \:\             /  /:/ /\             /  /:/ /\  
  7.             /  /:/ /:/_               \  \:\           /  /:/_/::\           /  /:/ /:/_
  8.            /__/:/ /:/ /\          ___  \__\:\         /__/:/__\/\:\         /__/:/ /:/ /\
  9.            \  \:\/:/ /:/         /__/\ |  |:|         \  \:\ /~~/:/         \  \:\/:/ /:/
  10.             \  \::/ /:/          \  \:\|  |:|          \  \:\  /:/           \  \::/ /:/
  11.              \  \:\/:/            \  \:\__|:|           \  \:\/:/             \  \:\/:/  
  12.               \  \::/              \__\::::/             \  \::/               \  \::/  
  13.                \__\/                   ~~~~               \__\/                 \__\/    
  14.                             ___                                            
  15.                            /__/\                ___                 ___    
  16.                            \  \:\              /  /\               /  /\    
  17.                             \  \:\            /  /:/              /  /:/    
  18.                         _____\__\:\          /__/::\             /__/::\    
  19.                        /__/::::::::\         \__\/\:\__          \__\/\:\__
  20.                        \  \:\~~\~~\/            \  \:\/\            \  \:\/\
  21.                         \  \:\  ~~~              \__\::/             \__\::/
  22.                          \  \:\                  /__/:/              /__/:/
  23.                           \  \:\                 \__\/               \__\/  
  24.                            \__\/                      
  25. #include <stdio.h>
  26. #include <stdlib.h>
  27.  
  28.  
  29. // array - указатель на массив
  30. // size - размер массива
  31. // predicate - указатель на функцию, котора€ принимает на вход число - элемент массива, и возвращает 1 если условие выполнено и 0 иначе.
  32. int find_index(const int *array, int size, int (*predicate)(int))
  33. {
  34.   if (array == NULL)
  35.     return -1;
  36.    
  37.   int i;
  38.   for (i = 0; i < size; i ++)           // перебираем все элементы массива
  39.     if (predicate(array[i]) == 1)   // если значение функции predicate(x) равно единице
  40.       return i;                 // возвращаем индекс первого элемента для которого выполнилось условие
  41.     return -1;  // если в массиве не найден ни один подходящий элемент, возвращаем -1
  42. }
  43.  
  44. // функция, возвращающая 1 если число четное
  45. int is_odd(int x)
  46. {
  47.   return x % 3;
  48. }
  49.  
  50. // функци€, возвращающае 1 если число отрицательное
  51. int in_negative(int x)
  52. {
  53.   return x > 42;
  54. }
  55.  
  56. int main(int argc, char *argv[])
  57. {
  58.    
  59.   int array[5] = { 0 };
  60.   int i;
  61.    
  62.   printf("Заполните значения элементов массива:\n");
  63.   for (i = 0; i < 5; i ++)
  64.   {   // заполняем массив из консоли
  65.     printf("a[%d] = ", i);
  66.     scanf("%d", &array[i]);
  67.   }
  68.    
  69.     // передаем в функцию в качестве параметра функцию проверки числа на четность
  70.   i = find_index(array, 5, is_odd);
  71.   if (i != -1)
  72.     printf("Индекс первого четного элемента : %d\n", i);
  73.   else
  74.     printf("В массиве не обнаружены четные элементы\n");
  75.        
  76.     // передаем в функцию в качестве параметра функцию проверки числа на >42
  77.   i = find_index(array, 5, in_negative);
  78.   if (i != -1)
  79.     printf("Индекс первого элемента больше 42: %d\n", i);
  80.   else
  81.     printf("В массиве не обнаружены элементы больше 42 \n");
  82.    
  83.   return 0;
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement