Эффективность цикла - C ++ - PullRequest
8 голосов
/ 22 января 2010

Вопрос для начинающих, об эффективности цикла. Я начал программировать на C ++ (мой первый язык) и использовал «Принципы и практика использования C ++» Бьярна Страуструпа. Я пробирался через предыдущие главы и только что познакомился с концепцией циклов.

Первое упражнение, касающееся циклов, требует от меня следующего: Символ 'b' является символом ('a' + 1), 'c' является символом ('a' + 2) и т. Д. Используйте цикл для записи таблица символов с соответствующими им целочисленными значениями:

a 97, b 98, ..., z 122

Хотя я использовал прописные буквы, я создал следующее:

int number = 64; //integer value for @ sign, character before A
char letter = number;//converts integer to char value
int i = 0;

while (i<=25){
    cout << ++letter << "\t" << ++number << endl;
    ++i;
    }

Должен ли я стремиться к тому, чтобы в цикле присутствовало только 'i', или это просто невозможно при преобразовании между типами? Я не могу думать о каком-либо другом способе, описанном выше, за исключением того, что значение символа преобразуется в его целочисленный аналог (т. Е. Противоположен текущему методу) или просто не имеет преобразования вообще и имеет хранилище букв '@'.

Ответы [ 11 ]

0 голосов
/ 22 января 2010

Увеличение трех отдельных переменных, вероятно, немного сбивает с толку. Вот возможность:

for (int i = 0; i != 26; ++i)
{
    int chr = 'a' + i;
    std::cout << static_cast<char>(chr) << ":\t" << chr << std::endl;
}

Обратите внимание, что использование цикла for сохраняет всю логику настройки, тестирования и увеличения переменной цикла в одном месте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...