Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Ввод массива с клавиатуры.
#define NMAX 1000 int main() { double x[NMAX]; //массив int n; //текущий размер массива int i; //параметр цикла SetConsoleOutputCP(1251); SetConsoleCP(1251); do { printf(" Введите размер массива от 1 до %d=", NMAX); scanf(" %d", & n); } while (n< 0 || n> NMAX); for (i=0; i< n; i++) { printf(" x[%3d]=", i); scanf(" %lf", & x[i]); }
getch(); return 0; } Каждой переменной, как простой, так и массиву, при старте программы выделяется столько памяти, сколько определено описанием этой переменной. В данном случае массиву X выделяется память для размещения NMAX = 1000 элементов (1000 × 4 = 4000 байт). Это поле памяти может полностью или частично использоваться при работе программы. Очевидно, что при этом должно выполняться отношение 0 £ n £ NMAX, где n - текущий размер массива X, который будет использоваться в данном сеансе работы программы. Если текущую длину определять, как беззнаковый целочисленный тип, то достаточно проверить, что значение n не превышает NMAX. ... unsigned int n; ... do ... while (n> NMAX);
При отладке программы требуется производить ее многократный запуск с одними и теми же исходными данными для обнаружения и устранения синтаксических и семантических ошибок. При большом объеме исходных данных, в частности при наличии в их составе массивов, ввод данных с клавиатуры создает определенные неудобства для пользователя (при каждом запуске программы необходимо заново вводить все компоненты массива, что не исключает появление новых ошибок при вводе с клавиатуры и, как следствие, различие в результатах работы программы). Поэтому более предпочтительным является: - ввод данных из текстового файла (будет рассмотрено позже). В этом случае массив формируется в файле один раз, а затем многократно используется в программе; - инициализация массива проводится при его определении. При этом количество элементов массива можно указывать явно: double y[5] = {10, 3.5, -.2, 4, 2e-5}; double z[5] = {10, 3.5, -.2 }; int b[3] = {1, 2, 3, 4}; или без явного указания количества элементов в массиве: int a[] = {8, 2, 9, -7, 0, 15}; Массивы y и z определены вещественного типа количеством в 5 элементов. В фигурных скобках через запятую перечисляются значения, которые будут присвоены соответствующим элементам массивов. Если количество элементов инициализации меньше длины массива, то оставшиеся элементы будут заполняться нулями (z[3] = z[4] = 0). Массив b определен длиной в 3 элемента, а количество инициализаторов – 4. В этом случае определяется ошибка при компиляции программы. Длина массива a определяется по количеству инициализаторов, для данного примера она будет равна 6. В случае инициализации массива при его определении вводить его значения с клавиатуры не нужно, но обязательно необходимо ввести текущую длину n и проверить ее на допустимый диапазон значений.
|