#include <iostream>
#include <algorithm>
#include <random>
// Шаблон функции для ввода элементов массива
template <typename T, size_t N>
void inputArray(T (&arr)[N])
{
for (size_t i = 0; i < N; ++i)
{
std::cout << "Введите элемент " << i << ": ";
std::cin >> arr[i];
}
}
// Шаблон функции для вывода элементов массива на экран
template <typename T, size_t N>
void displayArray(const T (&arr)[N])
{
for (size_t i = 0; i < N; ++i)
{
std::cout << arr[i] << " ";
}
std::cout << std::endl;
}
// Шаблон функции для поиска первого вхождения элемента в массив
template <typename T, size_t N>
int findFirst(const T (&arr)[N], const T &element)
{
for (size_t i = 0; i < N; ++i)
{
if (arr[i] == element)
{
return static_cast<int>(i);
}
}
return -1;
}
// Шаблон функции для поиска последнего вхождения элемента в массив
template <typename T, size_t N>
int findLast(const T (&arr)[N], const T &element)
{
for (int i = N - 1; i >= 0; --i)
{
if (arr[i] == element)
{
return i;
}
}
return -1;
}
// Шаблон функции для перемешивания элементов массива случайным образом
template <typename T, size_t N>
void shuffleArray(T (&arr)[N])
{
std::random_device rd;
std::mt19937 gen(rd());
std::shuffle(std::begin(arr), std::end(arr), gen);
}
// Шаблон функции для заполнения массива одинаковым заданным значением
template <typename T, size_t N>
void fillArray(T (&arr)[N], const T &value)
{
std::fill(std::begin(arr), std::end(arr), value);
}
// Шаблон функции для упорядочивания массива по возрастанию
template <typename T, size_t N>
void sortAscending(T (&arr)[N])
{
std::sort(std::begin(arr), std::end(arr));
}
// Шаблон функции для упорядочивания массива по убыванию
template <typename T, size_t N>
void sortDescending(T (&arr)[N])
{
std::sort(std::begin(arr), std::end(arr), std::greater<T>());
}
// Функция для поиска первого вхождения символа в массиве символов (игнорирует регистр)
int findFirst(const char arr[], char element)
{
for (int i = 0; arr[i] != '\0'; ++i)
{
if (tolower(arr[i]) == tolower(element))
{
return i;
}
}
return -1;
}
int main()
{
// Примеры использования шаблонных функций для одномерного массива
int intArray[5];
inputArray(intArray);
std::cout << "Массив intArray: ";
displayArray(intArray);
int searchInt = 3;
int index = findFirst(intArray, searchInt);
if (index != -1)
{
std::cout << "Первое вхождение " << searchInt << " в intArray: " << index << std::endl;
}
else
{
std::cout << "Элемент " << searchInt << " не найден в intArray." << std::endl;
}
double doubleArray[5];
inputArray(doubleArray);
std::cout << "Массив doubleArray: ";
displayArray(doubleArray);
double searchDouble = 2.5;
index = findFirst(doubleArray, searchDouble);
if (index != -1)
{
std::cout << "Первое вхождение " << searchDouble << " в doubleArray: " << index << std::endl;
}
else
{
std::cout << "Элемент " << searchDouble << " не найден в doubleArray." << std::endl;
}
char charArray[5];
inputArray(charArray);
std::cout << "Массив charArray: ";
displayArray(charArray);
char searchChar = 'A';
index = findFirst(charArray, searchChar);
if (index != -1)
{
std::cout << "Первое вхождение " << searchChar << " в charArray: " << index << std::endl;
}
else
{
std::cout << "Элемент " << searchChar << " не найден в charArray." << std::endl;
}
std::string stringArray[5];
inputArray(stringArray);
std::cout << "Массив stringArray: ";
displayArray(stringArray);
std::string searchString = "hello";
index = findFirst(stringArray, searchString);
if (index != -1)
{
std::cout << "Первое вхождение \"" << searchString << "\" в stringArray: " << index << std::endl;
}
else
{
std::cout << "Элемент \"" << searchString << "\" не найден в stringArray." << std::endl;
}
return 0;
}
Поделитесь своими знаниями, ответьте на вопрос:
Дан квадрат 3х3 клетки. надо закрасить 8 клеточек так чтобы у каждой из них 2 соседние клеточки были закрашены