- •Лабораторная работа №8 массивы и строки
- •Массивы
- •Определение массива
- •Ввод значений в массив
- •Работа с массивами
- •Просмотр массива
- •Поиск в массиве
- •Передача массива функции
- •Использование массивов
- •Сравнение двух строк
- •Определение длины строки
- •Присваивание строк
- •Слияние строк
- •Массивы строк
- •Проектирование программы
Ввод значений в массив
После того как вы определили массив, в него можно вводить информацию. Начальные значения элементам массива можно присвоить при его определении:
inttemps[5] = {45, 56, 12, 98, 12};
Таким образом, мы создали пять элементов, имеющих следующие значения:
temps[0] 45
temps[1] 56
temps[2] 12
temps[3] 98
temps[4] 12
Для инициализации подобного массива используется соответствующая инструкция перед main(). Подобная инициализация возможна и внутри main(), или другой функции, но в этом случае массив должен быть описан как статический:
int temps[5] = {45, 56, 12, 98, 12};
main()
{
static float prices[3] = {23.45, 34.56, 12.34};
Отдельным элементам массива можно присваивать значения внутри main() или другой функции, как в инструкции
temps[0] = 45;
Если вы хотите присвоить значение каждому элементу массива, вы можете использовать цикл для ускорения процедуры. В том случае, когда число элементов известно заранее, используйте цикл for:
main()
{
int temps[31];
int index;
for (index = 0; index 31; index++)
{
printf("Введитезначениетемпературы #%d: ", index);
scanf("%d", &temp[index]);
}
}
Переменная index использована здесь для того, чтобы определить количество повторений цикла. В нашем случае цикл будет выполнен 31 раз, по одному на каждый элемент массива. При каждом повторе цикла на экране будет появляться подсказка:
Введите значение температуры #N
где N отображает индекс элемента, которому присваивается значение.
Обратите внимание, что количество повторов определяется увеличением значения переменной index от 0 до 30, а не до 31, поэтому данное значение может использоваться одновременно и как индекс для определения номера текущего элемента массива (которые пронумерованы от 0 до 30). Когда переменная index имеет значение 0, элемент temps[index] на самом деле является элементом temps[0]. Таким образом, значение, которое мы вводим в элемент temps[index] с помощью функции scanf(), присваивается первому элементу с именем temps[0]. С очередным выполнением цикла for значение переменной index возрастает, и при следующих повторах функция scanf() вводит значение в новые элементы массива. Этот процесс проиллюстрирован в табл.1.
Таблица 1. Использование цикла для увеличения индекса массива.
Очень важно, чтобы вы поняли различия между значением индекса переменной, записанным в квадратных скобках, и значением элемента массива как таковым. Индекс только указывает на позицию, которую элемент занимает в массиве, но не имеет никакого отношения к значению самого элемента. Посмотрите на
Рис. 3. Разница между индексом и значением элемента массива
рис. 3. Индекс элемента имеет значение 0, а переменная temps[0] равна75. Как мы уже поясняли это на примере очереди перед кинотеатром, значение индекса переменной не связано со значением переменной. Содержимое следующей переменной temps[1] может быть больше, меньше или равно значению переменной temps[0].
В том случае, когда значение элементу массива не было присвоено, он так же, как и любая переменная, будет иметь своим значением некий «мусор». Можно быстро инициализировать целочисленный массив, если в цикле присвоить его элементам нулевые начальные значения:
for (index = 0; index < 31; index++)
temps[index] = 0;
Используя массив, можно ввести любое количество элементов, внеся соответствующие изменения в определение массива и условие цикла.