В массиве А инвертировать те его части которые идут по возрастанию.- C++(Си)

на в ходе 3 3 4 5 4 2 1 0 3 1
на выходе 3 5 4 3 4 2 1 3 0 1

#include <iostream>
const int N = 10;
using namespace std;
 
void reverse (int arr[],int s, int f)
{       int i,tmp;
        for(i=0;i<(f-s)/2+1;i++)
        {       tmp = arr[s+i];
                arr[s+i] = arr[f-i];
                arr[f-i] = tmp;
        }                                 
}
 
 
int main()
{
        //int A[]={3, 3, 4, 5, 4, 9, 1, 0, 3, 1};
                int A[N];
        int i,j,start,finish;
                
                for(i=0;i<N;i++)
                {
                        cin >> A[i];
                }
 
                system("cls");
                
        cout<<"Start:\n";
        for(i=0;i<N;i++) 
                {
                        cout<<A[i]<<" ";
        }
                
        start   = 0;
        finish  = 0;
                
        for(i=1;i<N;i++)
                {
            if(A[i]>A[i-1]) finish = i;
            else
            {   
                                if(finish>start) reverse (A,start,finish); 
                                start = i;
            }
        }
                
                
                
        cout<<"\nResult:\n";
        for(i=0;i<N;i++)
                {
            cout<<A[i]<<" ";
                }
                
                
                
                cout<<"\n";
        system("pause");
        return 0;
}

Leave a Comment