Advertisement
Lisaveta777

Removing positive elements from array

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