воскресенье, 6 марта 2016 г.

Циклы и ветвления: массивы.

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

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

int main()
{

  float studentsProgress[1000];
  return 0;
}


  На вид - обычное объявление переменной, за исключением дополнительного числа, заключенного в квадратные скобки. Это число определяет количество переменных, выделенных за раз, в одном, последовательном блоке. Этот блок называется массивом.


  Каждая переменная в массиве называется элементом массива. Чтобы получить доступ к произвольному элементу массива, надо указать его индекс(порядковый номер, нумерация начинается с ноля). Дальше, работа с элементом массива не отличается от работы с обычной переменной.


#include <iostream>


int main()
{

  float studentsProgress[1000];
  studentsProgress[0] = 3.5f;
  studentsProgress[1] = 4.75f;
  studentsProgress[2] = studentsProgress[0];
  studentsProgress[3] = studentsProgress[0] * 1.1f;
  std::cout << studentsProgress[3] << std::endl;

  system("pause");

  return 0;
}


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


#include <iostream>


int main()
{

  int test[5] = { 9, 8, 7, 6, 5 };
  std::cout << test[0] << std::endl;
  std::cout << test[4] << std::endl;

  system("pause");

  return 0;
}

  Если указать значения не для всех элементов, оставшиеся элементы проинициализируются значениями по умолчанию(нолями).


#include <iostream>


int main()
{

  int test[5] = { 9, 8 };
  std::cout << test[0] << std::endl;
  std::cout << test[4] << std::endl;

  system("pause");

  return 0;
}

  Из вышеупомянутого вытекает следующее: если не указать ни одного значения, то все элементы массива проинициализируются нолями:


#include <iostream>


int main()
{

  int test[5] = { };
  std::cout << test[0] << std::endl;
  std::cout << test[4] << std::endl;

  system("pause");

  return 0;
}

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


#include <iostream>


int main()
{

  int test[] = { 1, 2, 3 };
  std::cout << test[0] << std::endl;
  std::cout << test[1] << std::endl;
  std::cout << test[2] << std::endl;

  system("pause");

  return 0;
}

  Код, написанный выше, создаст массив из трех элементов, так как прямое указание размера массива упущено, а в списке инициализации указаны значения лишь для трех элементов.


  Итак, как выделить память под успеваемость тысяч студентов Вы уже знаете. Осталось узнать, как ею оперировать. Один пишем, два запоминаем.

Комментариев нет:

Отправить комментарий