Есть ответ 👍

С++ Шаблони функцій.

Завдання 1

Написати шаблони функцій для роботи з одновимірним масивом:

a. введення елементів масиву,

b. виводу елементів масиву на екран,

c. пошуку першого входження елемента у масив(індексу входження, повертати -1, якщо не знайдено)

d. пошуку останнього входження елемента у масив,

e. перемішування елементів масиву випадковим чином(декілька разів поміняти місцями елементи з випадковими індексами)

f. заповнення масиву однаковим заданим значенням

g. впорядкування за зростанням

h. впорядкування за спаданням

Для пошуку першого входження елемента у масиві символів(char[]) написати звичайну функцію (яка перекриє шаблон) таким чином,

щоб ігнорувалася різниця між великими та малими латинськими літерами рядків

Протестувати роботу шаблонних функцій для масивів

цілого,

дробового,

символьного типу(char) та

рядкового(string) типу.

Завдання 2

Написати шаблони функцій для роботи з двовимірним масивом(або тривимірним):

a. введення двовимірного(або тривимірного) масиву

b. виведення масиву на екран

c. знаходження найбільшого елемента масиву

template

T maxInMatrix(T m[][COLS], int rows, int cols)

{

T m = arr[0][0];

…….

return m;

}

або

template

auto maxInMatrix(T m, int rows, int cols)

{

auto m = arr[0][0];

…….

return m;

}

d. перевірка чи заданий рядок матриці впорядкований за зростанням (шаблон функції повертає логічне значення), функція отримує додатково індекс рядка

якщо індекс не коректний повертати хибу

e. перевірка чи всі (кожен) рядки матриці впорядковані за зростанням (шаблон функції повертає логічне значення).

Перевірити роботу шаблонів функцій для матриць числового та рядкового(string) типів.

165
485
Посмотреть ответы 2

Ответы на вопрос:


#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;

}

Murua
4,7(32 оценок)

Program max; uses  crt; var n, x: integer; begin clrscr; write('n = '); readln(n); while abs(n)> 0 do begin if  abs(n mod 10) > x then x: = abs(n mod 10); n: =n div 10; end; write('наибольшая цифра x = ', x); end.

Реши свою проблему, спроси otvet5GPT

  • Быстро
    Мгновенный ответ на твой вопрос
  • Точно
    Бот обладает знаниями во всех сферах
  • Бесплатно
    Задай вопрос и получи ответ бесплатно

Популярно: Информатика

Caktus Image

Есть вопросы?

  • Как otvet5GPT работает?

    otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса.
  • Сколько это стоит?

    Проект находиться на стадии тестирования и все услуги бесплатны.
  • Могу ли я использовать otvet5GPT в школе?

    Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое!
  • В чем отличия от ChatGPT?

    otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.

Подпишись на наш телеграмм канал

GTP TOP NEWS