Run-time check failure # 2 error - stack around the variable 'a' was corrupted. When debugging, he does everything well, but at the very end, when the results are given out and everything is fine, he gives this error. I do not really understand how to fix it. Can anyone tell me?
#include<iostream> #include<cstdlib> #include<ctime> using namespace std; void minmax(int arrays[], int n); void bubble(int arr[], int n); void main() { setlocale(LC_ALL, "Russian"); const int n = 21; int a[n]; srand((unsigned int)time(NULL)); cout << "Исходный массив = "; for (int i = 0; i < n; i++) { a[i] = 1 + rand() % 10; cout << a[i] << " "; } cout << endl; minmax(a, n); bubble(a, n); } void minmax(int arrays[], int l) { int k = 0; for (int i = 0; i < l; i++) { int min = arrays[i], imin = i; for (int j = i + 1; j < l; j++) { if (arrays[j] < min) { min = arrays[j]; imin = j; k++; } } if (imin != i) { int t = arrays[i]; arrays[i] = arrays[imin]; arrays[imin] = t; } } cout << endl; for (int i = 0; i < l; i++) { cout << arrays[i] << " "; } cout << endl << "Количество шагов в методе min max = " << k << endl << endl; } void bubble(int arr[], int n) { int check = 0, i = 0; for (int k = 0; k < n; k++) { if (arr[k] >= arr[k + 1]) { int m = arr[k]; arr[k + 1] = m; } i++; } for (int k = 0; k < n; k++) { cout << arr[k] << " "; } cout << endl << "Количество шагов в методе пузырька = " << i << endl << endl; }