Как правило, программирование решает задачи, что касаются больших объемов данных. К примеру, Вас попросили написать приложение, что определит самого успешного студента в университете. Для этого, успеваемость всех студентов надо занести в память, а потом найти там высший балл.
Сначала определимся с типом переменных в которых будем хранить успеваемость студентов. Как по мне, 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;
}
Код, написанный выше, создаст массив из трех элементов, так как прямое указание размера массива упущено, а в списке инициализации указаны значения лишь для трех элементов.
Итак, как выделить память под успеваемость тысяч студентов Вы уже знаете. Осталось узнать, как ею оперировать. Один пишем, два запоминаем.
Сначала определимся с типом переменных в которых будем хранить успеваемость студентов. Как по мне, 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;
}
Код, написанный выше, создаст массив из трех элементов, так как прямое указание размера массива упущено, а в списке инициализации указаны значения лишь для трех элементов.
Итак, как выделить память под успеваемость тысяч студентов Вы уже знаете. Осталось узнать, как ею оперировать. Один пишем, два запоминаем.
Комментариев нет:
Отправить комментарий