Символьные строки C++ Вывести алфавит с помощью цикла for

Сайт не является учебником по программированию. Это только небольшой авторский сборник информации в помощь начинающим программистам.

Символьные строки C++ Вывести алфавит с помощью цикла for
Для объявления символьной строки объявляется массив типа char с количеством переменных, достаточным для хранения требуемых символов

Для приведенного ниже примера, нужно, чтоб ваш компилятор корректно работал с русской кодировкой и правильно отображал русские символы.

  • Код C++ Русский алфавит с помощью цикла for

Для тех кому по пальцам
Для начинающих скорее всего придется уточнить момент. Во время выполнения цикла каждый раз увеличивалась переменная index В этой программе переменная index обозначает номер элемента массива. Чтобы не затереть значение в текущем элементе массива, программист записывает данные в другие элементы данного массива. Чтобы не возникло путаницы — программист обращается ко всем элементам поочередно. При первом проходе цикла letter ==«А», при втором letter =«Б»,… и так пока не выполнится условие цикла for-. Каждый раз letter меняет значение и каждый раз после этого записывается в текущий элемент массива, затем считывается следующий символ и увеличивается индекс массива. После того как условие цикла for выполнится — запишется последний элемент массива, произойдет еще одно увеличение счетчика индексов и цикл на этом завершится.
После окончания работы цикла — в элемент массива по индексу счетчика [index] , будет записан признак конца строки.

Все комментарии на сайте проверяются, поэтому ваш комментарий может появиться не сразу. Для вставки кода в комментарий используйте теги: [php]ВАШ_КОД[/php]

10 комментариев: Символьные строки C++ Вывести алфавит с помощью цикла for

  • Anonymous говорит:

    Спасибо большое за ваши труды =) Все очень понятно, то что нужно новичку)По этой статье: Вы написали, что во время выполнения цикла переменная index увеличивается, но в самом коде увеличения нет. Программка отказывалась работать, пока не дописала туда index++. После этого вроде как заработало )

    Автор сайта отвечает:
    В этой статье написан пример из книги и в нем ошибок нет. Я сейчас проверил. Возможно при переписывании внутри цикла for перед буквой "Я" вы написали "Меньше" вместо "Меньше или равно", поэтому цикл проходил на один шаг меньше чем вы ожидали. Не видя чужой код трудно угадать что именно происходит

  • Владимир говорит:

    У меня не вводиться русские буквы, сделал на латинице — все получилось.
    Как сделать русскую раскладку?

    Автор сайта отвечает:
    Я переключаю нажатием на правый ctrl, обратно тоже на правый ctrl Только это не у всех так

  • Аноним говорит:

    добавьте в main() строчку setlocale(0,"");

    Автор сайта отвечает:
    У тех, у кого стоит Windows XP и С++ (dos),
    для вывода на экран русских символов иногда помогает сворачивание окна. Когда вы находитесь в режиме редактора кода, нажмите alt+Enter, редактор кода должен перейти в оконный режим, из такого режима запустите программу на выполнение.
    ================================
    У тех, у кого стоит Visual Studio, для вывода на экран консоли русских символов, можно использовать system(«chcp 1251») и установить в свойствах окна консоли шрифт Lusidia Console. Для тех, кто не знает как ->
    Дописываете в начало (внутри main) system(«chcp 1251»);
    Запускаете программу
    Кликаете правой кнопкой мыши на заголовок окна и жмете свойства.
    Выбираете шрифт Lusidia Console вместо точечного. Жмете ОК

    Кракозабры должны приобрести читаемый вид.
    пример (запустили и меняйте шрифт)

    ================
     

    Frida говорит:
    Когда так сделала, в консоли сначала вылезла строка с инфой про что-то текущее и кодовое, а потом уже алфавит..
    Не то, чтобы очень она мешала, но все-таки… захотелось поделиться)
    А для Visual Studio 2010 есть еще способ, кому интересно:
    1. Добавляете в программу инструкцию #include
    2. В начале функции main() указываете номера кодовых страниц для вывода и ввода русскоязычного текста:
    SetConsoleOutputCP(1251);
    SetConsoleCP(1251);
    3. Опять-таки в свойствах консоли выбираете Lusidia Console.
    Честно говоря, практически не знаю С++, но, судя по набору цифр, суть с вашим способом приблизительно одна.. а может и нет..

    Автор сайта отвечает:
    а можно еще

    Способы русификации не мои.
    Этот запомнить проще.

  • Максим говорит:

    и в линуксе код не рабочий, в некоторых кодировках русские буквы разорваны, в данном случае потеряна буква ё так что вам достаточно было массива размером 33 даже с учётом null.
    лучше всё-таки не залезать в дебри и простые вещи показывать на стандартизованной части аски.

    Автор сайта отвечает:
    это учебный пример из какой-то книги. Он не заточен под универсальность, а просто демонстрирует часть возможностей языка.

     
    В Linuxe этот код вполне рабочий. Только Линуксоиды крутые вроде. Взялись за Linux, продвинутыми себя считают. А если считают себя продвинутыми, то и проблем с кодировками у них быть не должно.

    Этот код с сайта почти ничем не отличается от кода для Linux

    Буква Ё пропускается. Можно, конечно и массивом задавать алфавит, но эффект другой и показан здесь не просто проход по массиву, а такая возможность C++, которая была использована.
     

    Максим говорит:
    линуксоиды не просто крутые они на семибитные промежуточные ретрансляторы рассчитывали, чтобы потеряв старший бит сообщение на русском превращалось в транслит и его можно было бы прочитать. в результате чего в kio8-r русские буквы не попорядку раскиданы, ты же коды символов сравниваешь, от чего код и не рабочий если кодировка koi8. тебе выдаст что-то вроде абцдифгхийклмнопя на том и конец.
    был бы пример на стандартезованной части аски проблем бы не было и код работал бы везде и новичкам было бы понятно.

    Автор сайта отвечает:
    напишут себе конвертер и не умрут. Или напишут обычный проход по массиву.
    я не планировал новичкам пудрить мозг Линуксом.

    Где UTF8 кодировка – там код рабочий. Захотят посмотреть, сохранят в UTF8
    В другом случае или меня поправят или спросят если нужно будет, а не будут лезти с кучей предъяв и претензий.

  • Ivan говорит:

    В Линухе код рабочий. Просто нужно в текстовом редакторе кодировку win-1251 выставить вместо UTF-8, ну и в терминале эту же кодировку выставить.

    Русские символы в UTF-8 немножко не char.

  • Марина говорит:

    Я наверно совсем тупая — новичок, но объясните, пожалуйста, код поподробнее.
    Я наверно совсем тупая – новичок, но объясните, пожалуйста, код поподробнее.

    Для чего нужно считывание? не пойму работу index

    Для чего нужно считывание? не пойму работу index

    вот этот кусок кода не ясен, объясните, пожалуйста!

    • admin говорит:

      Алгоритм примера формирует символьный массив. Символьный массив — это строка. Эта строка в будущем будет строкой-алфавитом.
      Этот index обозначает номер символа в строке. На каждой новой итерации цикла происходит index++;, что обозначает, что следующий символ в строке будет равен i
      С++ хранит символы в памяти не как символы, а как числа.

      index (0)
      i (i сейчас а)
      На первой итерации Index=0, значит первый символ в строке будет A
      A__________________________ (34 позиции выделено для строки)
      index++ (index стал 1)
      i++ (i стало б)

      На второй итерации index=1, значит уже на позиции второго символа в строке будет Б
      AБ_________________________ (34 позиции выделено для строки)
      index++ (index стал 2)
      i++ (i стало в)

      На третьей итерации index=2, значит уже на позиции третьего символа в строке будет В
      AБВ________________________ (34 позиции выделено для строки)
      и так для всех итераций.

      Важно, чтобы последний символ строки был признаком окончания строки. Это обязательно.

  • Ira говорит:

    • admin говорит:

      С буквами очевиднее

      С включением Ё 🙂

  • ффф говорит:

Добавить комментарий

Ваш e-mail не будет опубликован.

Поиск

 
     

Яндекс.Метрика

НАГРАДИ АВТОРА САЙТА
WEBMONEY
R375024497470
U251140483387
Z301246203264
E149319127674

- Я тут котёнка завела. Помоги придумать какое-нибудь компьютерное имя... - Мышка! - Ты чё, это же котик! - Ну, тогда БЛОХ ПИТАНИЕ.

Выражаю свою признательность

  • Максиму очень признателен за указание на мои ошибки и неточности.
  • Sergio ===> за оказание помощи в исправлении моих ошибок
  • Gen ===> за правильное стремление помочь другим новичкам и выявления моих ошибок