- •1. Двоичная система счисления.
- •2. Восьмеричная система счисления.
- •3. Шестнадцатеричная система счисления.
- •4. Сложение и вычитание в 2, 8 и 16 c/c.
- •2. Вещественные числа (числа с плавающей запятой).
- •3. Логические данные.
- •1. Алфавит языка Си
- •2. Элементы языка
- •3. Типы данных
- •1. Формульно-словесный способ.
- •2. Блок-схемный способ.
- •Ввод - вывод одномерного массива
- •2. Вывод одномерного массива на экран.
- •Примеры обработки одномерных массивов
Ввод - вывод одномерного массива
Ввод и вывод массива, в том числе ввод с клавиатуры и вывод на экран, можно осуществить только поэлементно.
Ввод массива с клавиатуры.
#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 и проверить ее на допустимый диапазон значений.