русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Инициализация массивов


Дата добавления: 2013-12-23; просмотров: 1745; Нарушение авторских прав


Использование завершающего нуля

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

 

// Преобразование строчных символов строки в прописные.

 

#include <iostream>

#include <cstring>

#include <cctype>

using namespace std;

 

int main() {

char str[80];

int i;

 

strcpy(str, "this is a test");

 

for(i = 0; str[i]; i++) str[i] = toupper(str [i] ) ;//Цикл завершается,

//когда индексируется завершающий ноль.

cout << str;

 

return 0 ;

}

Вывод этой программы:

THIS IS A TEST

Приведенная программа использует библиотечную функцию toupper(), которая возвращает прописной эквивалент своего символьного аргумента, чем и осуществляется преобразование всех символов строки. Функция toupper( ) использует заголовок <cctype>.

Обратите внимание на то, что в качестве условия для цикла выступает просто массив, индексируемый управляющей переменной. Здесь используется то обстоятельство, что любое ненулевое значение является истинным. Вспомним, что все коды символов не равны 0, но любая строка завершается нулем. Поэтому наш цикл и выполняется до тех пор, пока он не встретится с нулевым символом, когда str[i] оказывается равным 0. Поскольку завершающий ноль отмечает конец строки, цикл останавливается в точности там, где и требуется. В профессионально написанных С++ - программах вы увидите массу примеров использования завершающего строку нуля аналогичным образом.

 

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

 

тип имя-массива[размер] = {список-значений};



 

Здесь список-значений представляет собой список значений, разделенных запятыми и совместимых по типу с базовым типом массива. Первое значение помещается в первый элемент массива, второе — во второй элемент и т. д. Обратите внимание на то, что точка с запятой ставится после закрывающей скобки }.

В следующем примере массив из десяти целочисленных элементов инициализируется числами от 1 до 10:

 

int i[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

 

В результате компиляции этого предложения i[0] будет иметь значение 1, a i[9] - 10.

Символьные массивы, предназначенные для хранения строк, допускают упрощенную инициализацию в такой форме:

 

char имя-массива[размер] = "строка";

 

Например, следующий программный фрагмент инициализирует строкой "С++":

 

char str [4] = "С++" ;

 

Тот же результат можно было получить и иначе:

char str [4] = {'С’, '+', '+', '\0'};

 

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

Многомерные массивы инициализируются так же, как и одномерные. Например, следующий фрагмент инициализирует массив числами от 1 до 10 и их квадратами:

int sqrs[10][2] = {

1,1,

2,4,

3,9,

4,16,

5,25,

6,36,

7,49,

8,64,

9,81,

10,100

};

 

Инициализируя многомерный массив, вы можете добавить фигурные скобки вокруг инициализаторов каждого измерения. Это действие носит название субагрегатной группировки. Воспользовавшись этим приемом, объявление массива из предыдущего примера можно записать таким образом:

int sqrs[10][2] = {

{1, 1},

{2, 4},

{3, 9},

{4,16},

{5,25},

{6,36},

{7,49},

{8,64},

{9,81},

{10, 100}

};

 

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

 



<== предыдущая лекция | следующая лекция ==>
Пример обработки строк | Массивы строк


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.