ФІО = Горбаченко В.А. Запитання://--------------------------------------------------------------------------- #pragma hdrstop #include /* AK p01 z02 Задано числовий масив A[m]. Знайти відрізок масиву максимальної довжини, в якому перше число дорівнює останньому, друге передостанньому тощо. Надрукувати довжину цього відрізку. Програму написати з використанням виразів над вказівниками. */ #include #include // розміри масиву //--------------------------------------------------------------------------- #pragma argsused using namespace std; int GetMaxSymLength(int *A,int p,int n) // повертає максимальну довжину симметрії. // приймає вказівник на масив, індекс початку, кількість елементів послідовності. // повертає 0 - якшо не симметрично { for (int i = 0 ; i <= n/2 ; i++) { if ( *(A+p+i) != *(A+p+n-i) ) return 0; } return n+1; } int main(int argc, char* argv[]) { int M; do{ cout<<"Matrix\n Enter M = "; cin>>M; if (M<=0) cout<<"ERROR : M > 0 !\n"; }while (M<=0); // не даємо вийти, поки не буде введено m>0 int *A = new int [M]; for (int i = 0 ; i < M ; i++ ) { cout<<"a ["<>(*(A+i)); } int p1 = -1, p2 = -1, length = 0; // позиція початку та кінця та довжина того, що шукаємо // врахуємо те, що послідовностей з однаковими довжинами може бути декілька int count_rep = 0; for ( int i = 0 ; i < M; i++ ) { // пошук повторень for ( int j = 1 ; j < M - i ; j++ ) { // cout<<(*(A+i+j) )<<" "; if (*(A+i) == *(A+i+j)) { int maybemax = GetMaxSymLength(A,i,j); if (maybemax>length) { length = maybemax; p1 = i; p2 = i + j+1; count_rep++; } if (maybemax==length) count_rep++; } } // cout<