Рассказы о математике | страница 3



       printf("%d\n", i);

      }


Массивы


Массив это линейный набор чисел, с которыми удобно выполнять однотипные операции, например вычисление суммы или среднего арифметического.


Python:

Объявляем массив чисел:

values = [1,2,3,5,10,15,20]


Добавляем элемент в массив:

values.append(7)


Выводим массив на экран:

print (values)


Выводим элементы массива построчно:

for p in values:

print (p)


Это же можно сделать с помощью индексов (нумерация элементов массива начинается с 0):

for i in range(0,len(values)):

print (values[i])


Можно создать массив определенного размера, заполненный определенными числами. Создадим массив из 100 элементов, заполненный нулями.

values = [0.0] * 100

print (values)


Есть немного более сложный, но и более гибкий вариант создания массива. Создадим массив из 100 элементов, заполненный нулями:

values = [0.0 for i in range(100)]

Создадим массив, заполненный числами 0,1,..,99:

values = [i for i in range(100)]


Создадим массив, заполненный квадратами чисел:

values = [i*i for i in range(100)]


Создать двухмерный массив в Python также несложно:

matrix4x4 = [ [0,0,0,0], [0,0,0,0], [0,0,0,0], [0,0,0,0]]

matrix4x4[0][0] = 1

print (matrix4x4)


Аналогично вышеописанному способу, можно создать 2х-мерный массив 100x100:

values100x100 = [ [0.0 for j in range(100)] for i in range(100)]


Си:

Динамические массивы поддерживаются только в C++, статические массивы создаются так:


int values[7] = { 1,2,3,5,10,15,20 };

for(int i=0; i<7; i++) {

printf("%d\n", values[i]);

}


При желании можно слегка схитрить, если максимальный размер массива заранее известен.

int values[255] = { 1,2,3,5,10,15,20 }, cnt = 7;

for(int i=0; i

printf("%d\n", values[i]);

}

values[cnt] = 7;

cnt++;


Можно пользоваться динамическим распределением памяти, хотя это немного сложнее:

int *valuesArray = (int*)malloc(10*sizeof(int));

valuesArray[0] = 1;

valuesArray[1] = 3;

valuesArray[2] = 15;

valuesArray = (int*)realloc(valuesArray, 25*sizeof(int));

valuesArray[20] = 555;

valuesArray[21] = 777;

for(int i=0; i<25; i++) {

printf("%d\n", valuesArray[i]);

}

free(valuesArray);


Важно заметить, что неинициализированные значения массива, например valuesArray[16], будут содержать “мусор”, некие значения которые были до этого в памяти. Си достаточно низкоуровневый язык, и такие моменты нужно учитывать. Хорошим тоном является инициализация всех переменных при их описании. Вот такой код формально не содержит ошибок: