Advertisement
Lisaveta777

Remove Positive Elements

Nov 4th, 2018
205
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.20 KB | None | 0 0
  1. //remove positive elements from an array
  2.  
  3. #include <stdio.h>
  4. #include <math.h>
  5. #include <stdlib.h>
  6. #include <time.h>
  7.  
  8. #define SIZE 10
  9.  
  10. void pop_arr(int *,int);
  11. void pr_arr(int *, int);
  12. int is_it_positive(int *,int);
  13. void remove_elem(int *,int,int);//by index
  14. int main()
  15. {
  16.     int i,arr[SIZE],answer,counter ;
  17.     i = counter = answer = 0;
  18.     pop_arr(arr,SIZE);
  19.     pr_arr(arr,SIZE);
  20.     while(i<SIZE)
  21.     {
  22.         answer =is_it_positive(arr,i);
  23.         if(answer)
  24.         {
  25.             remove_elem(arr,i,SIZE);
  26.             //printf("after removing:\n");
  27.             //pr_arr(arr,SIZE);
  28.             counter++;
  29.         }
  30.         else
  31.             i++;//check following array element
  32.     }
  33.  
  34.     printf("final counter are %d\n",counter);
  35.     pr_arr(arr,SIZE-counter);
  36.  
  37.    return 0;
  38. }
  39.  
  40. void pop_arr(int *a,int s)
  41. {
  42.     int i;
  43.     srand(time(NULL));
  44.     for(i=0;i<s;i++)
  45.     {
  46.         a[i]= rand()%100-50;
  47.     }
  48. }
  49. void pr_arr(int *a,int s)
  50. {
  51.     int i;
  52.     for(i=0;i<s;i++)
  53.     {
  54.         printf("%d\t",a[i]);
  55.     }
  56. }
  57. int is_it_positive(int *a,int index)
  58. {
  59.     return (a[index]>0)? 1:0;
  60. }
  61. void remove_elem(int *a,int index,int s)
  62. {
  63.     int i=index;
  64.  
  65.     for(i=index;i<s-1;i++)
  66.     {
  67.         a[i]= a[i+1];
  68.     }
  69. }
  70.  
  71.  
  72. B main() – в цикле while вызываem функцию, которая при каждом своем вызове проверяет единственный элемент массива следующим образом
  73. Если элемент оказывается  положительным, то функция возвращает в main()  1, иначе возвращает 0.
  74. Если возвращен 0, i(index) увеличивается на 1, while переходит к следующей итерации.
  75. Если 1, вызывается функция remove() для удаления этого положительного элемента. После ее выполнения в main() i не меняется, counter++, while переходит к следующей итерации.
  76. i – индекс элемента массива    counter – найденные положительные элементы массива
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement