- •1)Системы счисления.
- •4) Директивы препроцессора
- •Вариант 3
- •Операции над указателями
- •Инициализация массивов
- •Вывод значений элементов массивов на экран
- •Сортировка методом прямого включения
- •Cортировка методом прямого выбора
- •Сортировка методом прямого обмена
- •35) Строки. Объявление, инициализации, операции.
Инициализация массивов
Существует огромное количество способов инициализации массивов, следующих видов:
1. При определении массивов возможна их инициализация, то есть присваивание начальных значений их элементам с указанием количества элементов массива.
Пример:
int array[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
float m1[2][2] = {0.1, 0.2, 0.3, 0.4};
float m2[2][2] = {{0.1, 0.2}, {0.3, 0.4}};
2. При определении массивов возможна их инициализация, то есть присваивание начальных значений их элементам без указания количества элементов массива. В данном случае компилятор вычисляет длину массива по количеству начальных значений, перечисленных в скобках.
Пример:
int array[] = {1, 2, 3, 4, 5}; // массив длиной 5 элементов
float m[][2] = {0.1, 0.2, 0.3, 0.4, 0.5, 0.6}; // матрица размерностью 3х2
3. Ввод начальных значений с помощью присваивания.
Пример:
int array[5];
float m[2][2];
array[0] = 1, array[1] = 1, array[2] = 1, array[3] = 1, array[4] = 1;
m[0][0] =0.1, m[0][1] =0.2, m[1][0] =0.3, m[1][1] =0.4;
4. Ввод начальных значений с клавиатуры без помощи цикла.
Пример:
int array[5];
float m[2][2];
scanf(“%d%d%d%d%d”, &array[0], &array[1], &array[2], &array[3], &array[4]);
scanf(“%f%f%f%f”, &m[0][0], &m[0][1], &m[1][0], &m[1][1]);
5. Ввод начальных значений с клавиатуры с помощью цикла.
Пример:
int array[5], i, j;
float m[2][2];
for(i=0; i<5; i++)
scanf(“%d”, &array[i]);
for(i=0; i<2; i++)
for(j=0; j<2; j++)
scanf(“%f”, &m[i][j]);
6. Ввод начальных значений с помощью генератора случайных чисел (через цикл);
Пример:
int array[5], i, j;
float m[2][2];
randomize();
for(i=0; i<5; i++)
array[i] = -10 + random(21);
for(i=0; i<2; i++)
for(j=0; j<2; j++)
m[i][j] = -10.0 + random(201)/10.0;
7. Ввод начальных значений с помощью указателя (через цикл)
Примеры [программа pr_13, pr_14, pr_15]]:
Для одномерного массива |
Для двумерного массива |
int array[5], i, *p;
for(p=&array[0]; p<=&array[4]; p++) scanf(“%d”, p);
for(i=0; i<5; i++) scanf(“%d”, array+i);
for(i=0; i<5; i++) *(array+i) = -10 + random(21); |
float m[2][2], *p; int i, j;
for(p=&m[0][0]; p<=&array[1][1]; p++) scanf(“%f”, p);
for(i=0; i<2; i++) for(j=0;j<2;j++) scanf(“%f”, m[i]+i);
for(i=0; i<2; i++) for(j=0;j<2;j++) *(m[i]+j) = -10 + random(21); |
Вывод значений элементов массивов на экран
Для вывода значений массивов на экран используется цикл: для одномерного массива – один цикл, для двумерного массива – два цикла и так далее.
Примеры для одномерного массива |
Примеры для двумерного массива |
int array[5], i; … printf(“Array:\n”); for(i=0; i<5; i++) printf(“%d\t”, array[i]); printf(“\n”); |
float m[2][2]; int i, j; … printf(“Massiv:\n”); for(i=0; i<2; i++) { for(j=0; j<2; j++) printf(“%.2f\t”, mas[i][j]); printf(“\n”); } |
21) Методы сортировки массвива.
Сортировка - это процесс перегруппировки однотипных элементов структуры данных в некотором определенном порядке. Цель сортировки - облегчить последующие поиск, обновление, исключение, включение элементов в структуру данных. Сортировка является важным средством для ускорения работы практически любого алгоритма, в котором требуется частое обращение к определенным элементам структуры данных.
Все методы сортировки разбивают на два класса:
1. внутренняя сортировка (сортировка массивов);
2. внешняя сортировка (сортировка файлов или сортировка последовательностей).
Самыми простыми методами сортировки являются прямые методы сортировки, они требуют порядка O(n2)сравнений значений. Прямые методы можно разбить на три категории:
1. сортировка методом прямого включения;
2. сортировка методом прямого выбора;
3. сортировка методом прямого обмена.