Advertisement
Wow_Rasl

Untitled

Dec 13th, 2021
733
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.86 KB | None | 0 0
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <stdio.h>
  4. #include <algorithm>
  5. using namespace std;
  6. double* a;
  7. int n;
  8. void create(double **pa, int* pn){
  9.     printf("n = ");
  10.     scanf("%d", &n);
  11.     a = (double*)malloc(n * sizeof(double));
  12.     for(int i=0;i<n;++i){
  13.         scanf("%lf", &*(a+i));
  14.     }
  15.     *pa = a;
  16.     *pn = n;
  17. }
  18.  
  19. void printArr(double *a){
  20.     printf("текущий массив = \n");
  21.     for(int i=0;i<n;++i){
  22.         printf(" %lf", *(a+i));
  23.     }
  24.     printf("\n");
  25. }
  26.  
  27. int first_max(double* a){
  28.     int i_mx=0;
  29.     double mx = *a;
  30.     for(int i=0;i<n;++i){
  31.         if(mx<*(a+i)){
  32.             mx = *(a+i);
  33.             i_mx = i;
  34.         }
  35.     }
  36.     return i_mx;
  37. }
  38.  
  39. int last_min(double* a){
  40.     int i_mn=0;
  41.     double mn = *a;
  42.     for(int i=0;i<n;++i){
  43.         if(mn>=*(a+i)){
  44.             mn = *(a+i);
  45.             i_mn = i;
  46.         }
  47.     }
  48.     return i_mn;
  49. }
  50.  
  51. void modificate(double** pa, int* pn){
  52.     int i_mx = first_max(a);
  53.     int i_mn = last_min(a);
  54.     if(i_mx < i_mn){
  55.         for(int i = i_mx+1;i<i_mn;++i){
  56.             if(a[i]>0){
  57.                 --n;
  58.                 for(int j = i;j<n;++j){
  59.                     a[j] = a[j+1];
  60.                 }
  61.                 --i;
  62.                 a = (double*)realloc(a, n * sizeof(double));
  63.                 *pn = n;
  64.             }
  65.         }
  66.     }else{
  67.         printf("error\n");
  68.     }
  69.     *pa = a;
  70.     *pn = n;
  71. }
  72.  
  73. void add_zero(double **pa, int *pn){
  74.     ++n;
  75.     a = (double*)realloc(a, n * sizeof(double));
  76.     for(int i=n;i>0;--i){
  77.         a[i] = a[i-1];
  78.     }
  79.     a[0] = 0;
  80.     *pn = n;
  81.     *pa = a;
  82.  
  83. }
  84.  
  85. int main()
  86. {
  87.     create(&a, &n);
  88.     printArr(a);
  89.     modificate(&a, &n);
  90.     printArr(a);
  91.     add_zero(&a, &n);
  92.     printArr(a);
  93.     free(a);
  94.     return 0;
  95. }
  96.  
  97. //6
  98. //1 6 -2 4 -2 -1
  99.  
  100. //5
  101. //1 -2 4 6 -1
  102.  
  103. //8
  104. //8 8 8 1 3 -5 -6 -7
  105.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement