пр3
.docxЛабораторная работа №4
Работа с одномерными массивами
Цель работы:
-
Получение практических навыков при работе с массивами.
-
Получение практических навыков при работе с указателями.
Вариант 25.
Задание:
1) Сформировать массив из n элементов с помощью датчика случайных чисел (n задается пользователем с клавиатуры).
2) Распечатать полученный массив.
3) Выполнить удаление всех нечетные элементов.
4) Вывести полученный результат.
5) Выполнить добавление k элементов в начало массива.
6) Вывести полученный результат.
7) Выполнить перестановку элементов в массиве: поменять местами элементы с четными и нечетными номерами
8) Вывести полученный результат.
9) Выполнить поиск первого четного элемента массива и подсчитать количество сравнений, необходимых для поиска нужного элемента.
10) Вывести полученный результат.
11) Выполнить сортировку массива простым обменом.
12) Вывести полученный результат.
13) Выполнить поиск указанных элементов в отсортированном массиве и подсчитать количество сравнений, необходимых для поиска нужного элемента.
14) Вывести полученный результат.
Листинг программы:
#include <iostream> #include <cstdlib> using namespace std; const int Size = 100; int main() { int mas[Size]; int n; cout << "Enter n: "; cin >> n;
for (int i = 0; i < n; i++) mas[i] = rand() % 10; cout << "1. Array:" << endl; for (int i = 0; i < n; i++) cout << mas[i] << " "; cout << endl;
//Удаление всех нечетных элементов for (int i = 0; i < n; i++) if (mas[i] % 2 != 0) { for (int j = i; j < n - 1; j++){ mas[j] = mas[j + 1]; } n--; i--; } cout << "2. Array:" << endl; for (int i = 0; i < n; i++) cout << mas[i] << " "; cout << endl;
//Добавление k элементов в начало массива int* _mas = new int[Size]; int k; cout << "Enter k: "; cin >> k; if (k > (Size - n)) { |
cout << "ERROR k > " << Size - n << ".\n"; exit(EXIT_FAILURE); } for (int i = 0; i < k; i++) *(_mas + i) = rand() % 10; n += k; for (int i = n + k - 1; i >= k; i--) mas[i] = mas[i - k]; for (int i = 0; i < k; i++) mas[i] = *(_mas + i); delete [] _mas; cout << "3. Array:" << endl; for (int i = 0; i < n; i++) cout << mas[i] << " "; cout << endl; /*Поменять местами элементы с четными и нечетными номерами */
for (int i = 0; i < n - 1; i = i + 2){ int temp = mas[i]; mas[i] = mas[i + 1]; mas[i + 1] = temp; } cout << "4. Array:" << endl; for (int i = 0; i < n; i++) cout << mas[i] << " "; cout << endl; /* поиск первого четного элемента массива и подсчитать количество сравнений, необходимых для поиска нужного элемента.*/ int count_iter = 0; int index_ch = 0; for (int i = 0; i < n; i++) if (mas[i] % 2 == 0) { index_ch = i; break; } else count_iter++; cout << "5. Elem: " << mas[index_ch] << endl << "Kolvo iteraciy: " << count_iter << endl; |
//Сортировка простым обменом for (int i = 1; i < n; i++) for (int j = n - 1; j >= i; j--) if (mas[j] < mas[j - 1]){ int temp = mas[j]; mas[j] = mas[j - 1]; mas[j - 1] = temp; } cout << "6. Array:" << endl; for (int i = 0; i < n; i++) cout << mas[i] << " "; cout << endl; /*Поиск указанных элементов в отсортированном массиве и подсчитать количество сравнений, необходимых для поиска нужного элемента.*/ int find_elem, find_index; count_iter = 0; cout << "Enter find: "; cin >> find_elem; int first = 0; int last = n - 1; int mid; while(true) { mid = (first + last) / 2; if (mas[mid] == find_elem) { find_index = mid; break; } else { if (first > last) { cout << "Not element." << endl; break; } else if (mas[mid] > find_elem) last = mid; else first = mid + 1;
|
count_iter++; } } cout << "7. Index: " << find_index + 1 << endl << "Kolvo iteraciy: " << count_iter << endl; return 0; }
Тесты программы: |