Типичная ошибка программирования 6 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Типичная ошибка программирования 6



Ссылка на элемент, находящийся вне границ массива.

В следующем примере (рис.10) числа читаются из массива и графически представляются в форме таблицы полосок или гистограммы — печатается каждое число, а затем строка, содержащая столько же звездочек. Строки из звездочек рисуются с помощью вложенного цикла for. Обратите внимание на использование endl, чтобы закончить гистограмму.

Рис.10 – Программа печати гистограммы

 

Пример программы игры в кости. Вариант программы с использованием массивов показан на рис.11. До сих пор мы обсуждали только массивы целых чисел. Однако, массивы могут быть и других типов. Теперь мы обсудим хранение строк в массивах символов. До сих пор единственной возможностью обработки строки, с которой мы были знакомы, был вывод строки с помощью cout и «. Строка, например, "hello", на самом деле является массивом символов. Массив символов имеет несколько специфических особенностей. Массиву символов можно задать начальные значения, используя литеральную константу. Например, объявление char stringl[ ] = "first"; присваивает элементам массива stringl в качестве начальных значений отдельные символы строки "first". Размер массива stringl в предыдущем объявлении, определяется компилятором на основе длины строки. Важно заметить, что строка "first" содержит пять символов плюс специальный символ окончания строки, называемый нулевым символом. Таким образом, массив stringl на самом деле содержит шесть элементов. Нулевой символ представляется символьной константой ’\0\ Все строки заканчиваются этим символом.

Символьный массив, представляющий строку, должен всегда объявляться достаточно большим для того, чтобы в него можно было поместить количество символов в строке и завершающий нулевой символ. Символьному массиву можно также задать в качестве начального значения список отдельных символьных констант, указанных в списке инициализации. Например, предыдущее объявление эквивалентно следующему

char stringl[ ] = {' f', 'i', 'r', 's', ' t', ' \0 ' >

Поскольку строка является массивом символов, мы можем получить доступ к отдельным символам строки, используя индексную запись массива. Например, stringl[0] — это символ ’f\ a stringl[3] — это символ ’s’.

Рис.11 – Программа бросания кости, использующая

массивы вместо switch

Мы также можем ввести строку непосредственно в символьный массив с клавиатуры, используя cin и». Например, объявление

char string2[20];

создает символьный массив, способный хранить строку из 19 символов и завершающий нулевой символ. Оператор

    cin >> string2;

считывает строку с клавиатуры в string2. Обратите внимание, что в предыдущем операторе в cin использовано только имя массива и нет никакой информации о его размере. В обязанности программиста входит убедиться в том, что массив, в который записывается строка, способен вместить любую строку, которую пользователь напечатает на клавиатуре, cin читает символы с клавиатуры до тех пор, пока не встретится первый разделитель в тексте, и при этом не заботится о размерах массива. Таким образом cin может вставлять данные и после конца массива.



Поделиться:


Последнее изменение этой страницы: 2021-04-14; просмотров: 87; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.223.160.61 (0.009 с.)