Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Course work (Task 35-2)
- #include "stdafx.h"
- #include <locale>
- #include <iostream>
- #include <windows.h>
- using namespace std;
- int find_norecursion(int *massiv, int size, int key)
- {
- bool f = true;
- for (int i = 0; i < size; i++)
- {
- if (massiv[i] == key)
- return i;
- else
- f = false;
- }
- if (f == false)
- return -1;
- }
- int find_recursion(int* massiv, int size, int key)
- {
- if (size == 0)
- return -1; // Не найден
- if (massiv[size - 1] == key)
- return size - 1; // Искомый элемент найден
- return find_recursion(massiv, size - 1, key); // Иначе ищем его среди (size-1) элементов
- }
- void find_message(int* array, int idx)
- {
- if (idx < 0)
- cout << "\nЧисло не найдено в списке" << endl;
- else
- cout << "\nЧисло " << array[idx] << " с индексом [" << idx+1 << "] найдено в списке " << endl;
- }
- int main()
- {
- setlocale(0, "Russian");
- SetConsoleCP(1251);
- SetConsoleOutputCP(1251);
- srand(time(NULL));
- cout << "35.Перевірити наявність у списку заданого числа за допомогою рекурсивної і нерекурсівної функцій" << endl;
- while (1)
- {
- int size, key;
- cout << "Введите размерность списка: ";
- while (!(cin >> size) || (cin.peek() != '\n') || size < 0) //проверка на корректность ввода
- {
- cin.clear();
- while (cin.get() != '\n');
- cout << "Введено недопустимое значение. Повторите попытку." << endl;
- }
- int *massiv = new int[size];
- cout << "Список => ";
- for (int i = 0; i < size; i++) //заполнение списка
- {
- massiv[i] = -100 + rand() % 100;
- cout << massiv[i] << " ";
- }
- cout << "\nВведите число, которое необходимо найти в списке: ";
- while (!(cin >> key) || (cin.peek() != '\n')) //проверка на корректность ввода
- {
- cin.clear();
- while (cin.get() != '\n');
- cout << "Введено недопустимое значение. Повторите попытку." << endl;
- }
- clock_t start_norecursion, end_norecursion, start_recursion, end_recursion;
- start_norecursion = clock();
- cout << "\nПоиск числа без рекурсии: ";
- int idx_norecursion = find_norecursion(massiv, size, key);
- find_message(massiv, idx_norecursion);
- end_norecursion = clock();
- cout << "Без рекурсии для поиска затрачено " << ((double)end_norecursion - start_norecursion) / ((double)CLOCKS_PER_SEC) << " секунд" << endl;
- start_recursion = clock();
- cout << "\nПоиск числа с помощью рекурсии: ";
- int idx_recursion = find_recursion(massiv, size, key);
- find_message(massiv, idx_recursion);
- end_recursion = clock();
- cout << "С рекурсией для поиска затрачено " << ((double)end_recursion - start_recursion) / ((double)CLOCKS_PER_SEC) << " секунд" << endl;
- system("pause");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement