Хотя побежал какое-то время, но программа перестала работать? - PullRequest
0 голосов
/ 28 октября 2018

В этом нет ничего плохого и нет бесконечного цикла, тогда почему это происходит?Я пытаюсь проанализировать, но не могу найти причину, так как я настоящий новичок в языке C ++!:) Заранее спасибо!Хорошего дня!

1

#include<iostream>

using namespace std;

main()
{
    char UPPERCASE[27];
    char LOWERCASE[27];
    int j = 97;
    for (int i = 65; i <= 90 && j <= 122; i++ && j++) {
        UPPERCASE[i] = i;
        LOWERCASE[j] = j;
        cout << UPPERCASE[i];
        cout << LOWERCASE[j] << endl;
    }
}

1 Ответ

0 голосов
/ 28 октября 2018

«&&» в части увеличения очень запутано.

Я переписал это, используя только один индекс.

В исходном коде используется базовый индекс 65 и 97. Однакотолько сам массив выделен 27 ячейками.Это не будет работать.

Чтобы решить эту проблему, я выделил 26 ячеек для каждого массива (только 26 букв в английском алфавите), а затем поместил 'A' и 'a' в ячейку [0] каждого массива.

#include<iostream>

int main(){
    char upperCaseArray[26];
    char lowerCaseArray[26];
    for(int i=0; i < 26; i++){
        upperCaseArray[i]=(char) i + 'A';
        lowerCaseArray[i]=(char) i + 'a';
        std::cout << upperCaseArray[i];
        std::cout << lowerCaseArray[i] << std::endl;
    }
}

Значения каждой ячейки должны быть «65», «66» и т. Д. (Т. Е. «A», «B» ...).Но мы можем использовать фактическую букву «А» вместо десятичного значения 65, чтобы избежать ошибки, вызванной записью неправильного значения.

Итак, мы добавляем индекс ячейки к значениюсохраните это, вместо того, чтобы использовать значение в качестве индекса.

Я сократил его до одного индекса, используемого в обоих массивах, поэтому нам не нужны i и j.

ПустьЯ знаю, если у вас есть какие-либо вопросы.

...