Скачиваний:
10
Добавлен:
09.12.2018
Размер:
29.58 Кб
Скачать

Лабораторная работа №4

Работа с одномерными массивами

Цель работы:

  1. Получение практических навыков при работе с массивами.

  2. Получение практических навыков при работе с указателями.

Вариант 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;

}

Тесты программы:

Соседние файлы в предмете Методы и средства проектирования информационных систем и технологий