Ошибка Run-Time Check Failure #2

Сделал сортировку с выводом рандомных букв. По завершениии программы в командной строке первый символ почему-то не распознаётся и возникает ошибка типа «Run-Time Check Failure #2 — Stack around the variable 'arr' was corrupted.»

include «pch.h»

include <iostream>

include <ctime>

include <algorithm>

using namespace std;

void stupidsort(char ar[30]){
for (int i = 30; i > 0; i--)
for(int j=30; j > 1; j--)
if (ar[j] < ar[j — 1]) {
char x = ar[j];
ar[j] = ar[j — 1];
ar[j — 1] = x;
}
for (int i = 0; i <30; i++) {
cout << ar[i]<<« »;
}

}
int main()
{

setlocale(LC_ALL, "Russian");
srand(time(NULL));
const int z = 30;
char arr[z];
for (int i = 30; i > 0; i--) {
    arr[i] = char( 'а' + rand() % ('я' - 'а'));

}
stupidsort(arr);


system("pause");
return 0;

}

Выход за границу массива. Массивы нумеруются с 0 до ДЛИНА_МАССИВА — 1.

#include <iostream>
#include <ctime>
#include <algorithm>

using namespace std;

const int ARR_LEN = 30;

void stupidsort(char ar[ARR_LEN]) {
    for (int i = ARR_LEN - 1; i >= 0; i--)
        for (int j = ARR_LEN - 1; j >= 1; j--)
            if (ar[j] < ar[j - 1]) {
                char x = ar[j];
                ar[j] = ar[j - 1];
                ar[j - 1] = x;
            }
    for (int i = 0; i < ARR_LEN; i++) {
        cout << ar[i] << " ";
    }

}
int main() {

    setlocale(LC_ALL, "Russian");
    srand(time(NULL));
    char arr[ARR_LEN];
    for (int i = ARR_LEN - 1; i >= 0; i--) {
        arr[i] = char('а' + rand() % ('я' - 'а'));

    }
    stupidsort(arr);

    system("pause");
    return 0;
}

Ответить

Вы можете использовать разметку markdown для оформления комментариев и постов. Используйте функцию предпросмотра для проверки корректности разметки.

Пожалуйста, оформляйте исходный код в соответствии с правилами разметки. Для того, чтобы вставить код в комментарий, скопируйте его в текстовое поле ниже, после чего выделите то, что скопировали и нажмите кнопку «код» в панели инструментов. Иначе ваш код может принять нечитаемый вид.

Либо производите оформление кода вручную, следующим образом:

``` #include <iostream> using namespace std; int main() { // ... } ```

Предпросмотр сообщения

Ваше сообщение пусто.