русс | укр

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

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

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

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


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

Массивы строк


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


Инициализация массивов неопределенной длины

 

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

 

int nums [ ] = { 1, 2 , 3 , 4 } ;

 

создает массив с именем numsиз четырех элементов, которые содержат значения 1, 2, 3 и 4. Массив, при объявлении которого явным образом не указывается размер (как, например, массив nums), называют массивом неопределенной длины.

Такие массивы весьма полезны. Представьте себе, например, что вы, используя массивы с инициализацией, создаете таблицу Интернет-адресов:

 

char el[16] = "www.osborne.com";

char е2[16] = "www.weather.com";

char еЗ[15] = "www..amazon.com" ;

 

Очевидно, что считать вручную количество символов в каждом адресе, чтобы определить длину соответствующего массива, слишком хлопотно. Кроме того, такой способ чреват ошибками, если вы случайно ошибетесь в счете и зададите неправильную длину массива. Гораздо лучше переложить на компилятор вычисление длины этих массивов, как это показано ниже:

 

char el[] = "www.osborne.com";

char е2 [ ] = "www.weather.com";

char еЗ [ ] = "www.amazon.com" ;

 

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

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



 

int sqrs[][2] = {

1,1,

2,4,

3,9,

4,16,

5,25,

6,36,

7,49,

8,64,

9,81,

10,100

};

 

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

 

 

Особой формой двумерного массива является массив строк. Такие массивы широко используются в программировании. Например, внутренний обработчик базы данных может сравнивать команды пользователя с массивом строк допустимых команд. Для создания массивов строк используется двумерный символьный массив, в котором левый индекс характеризует число строк, а правый - их максимальную длину. Например, приведенное ниже объявление создает массив из 30 строк, каждая из которых может иметь длину до 80 символов:

 

char str_array[30][80];

 

Обратиться к индивидуальной строке этого массива не составляет труда: вы просто указываете один левый индекс. Например, приведенное ниже предложение вызывает функцию gets( ) для заполнения третьей строки в str_array:

 

gets(str_array[2]);

 

Чтобы получить доступ к индивидуальному символу в третьей строке, вы используете предложение вроде следующего:

 

cout << str_array[2] [3];

 

В результате на экран выводится четвертый символ третьей строки.

Приводимая ниже программа демонстрирует работу с массивом строк на примере очень простого компьютеризованного телефонного справочника. Двумерный массив numbers содержит пары имя-телефонный номер. Для определения телефонного номера вы вводите имя, на экран выводится соответствующий телефонный номер.

//---------------------------------------------------------------------------

 

//Простой компьютеризованный телефонный справочник.

 

#include <iostream>

#include <cstdio>

using namespace std;

#include <conio>

 

int main(){

int i;

char str[80];

// Это массив из 10 строк, каждая из кото-

// рых может содержать до 79 символов.

char numbers [10] [ 80 ] = {

"Tom", "555-3322",

"Мэри", "555-8976",

"Джон", "555-1037",

"Рейчел", "555-1400",

"Sherry", "555-8873"

};

cout << "Введите имя: " ;

cin >> str;

for(i = 0; i < 10; i += 2)

if(!strcmp(str, numbers[i])) {

cout << "Телефон " << numbers [i + 1] << "\n";

break;

}

if(i == 10) cout << "He найдено.\n";

 

getch();

return 0;

}

 

Вот пример прогона программы:

 

Введите имя: Джон Телефон 555-1037

 

Обратите внимание на то, как выполняется наращивание управляющей переменной цикла for: в каждом шаге к ней прибавляется 2. Так делается потому, что в массиве чередуются имена и телефонные номера.

 



<== предыдущая лекция | следующая лекция ==>
Инициализация массивов | Нумерация


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


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

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

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


 


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

 
 

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

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