+ Ответить в теме
Показано с 1 по 10 из 10

Тема: Разработать шаблонный класс Array

  1. #1
    TheSerega is on a distinguished road
    Регистрация
    27.12.2017
    Возраст
    22
    Сообщений
    2
    Вес репутации
    0

    По умолчанию Разработать шаблонный класс Array

    1. Разработать шаблонный класс Array для работы с массивами. Реализовать методы ввода и вывода, а также:
    1.1. Сортировки массива методом пузырьков. Метод поиска массива элемента с заданным значением. Переустановку элементов массива, чтобы они шли обратном порядке. CodeBlock C++

  2. По умолчанию

     
    Хотите избавиться от рекламы? Зарегистрируйтесь
  3. #2
    Moderator Куратор
    system architect
    Romeo is on a distinguished road Аватар для Romeo
    Регистрация
    02.03.2004
    Адрес
    Крым, Севастополь
    Возраст
    36
    Сообщений
    3,089
    Вес репутации
    21

    По умолчанию Re: Разработать шаблонный класс Array

    Готов помочь. Что именно не получается?
    Entites should not be multiplied beyond necessity @ William Occam
    ---
    Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
    ---
    Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.

  4. #3
    TheSerega is on a distinguished road
    Регистрация
    27.12.2017
    Возраст
    22
    Сообщений
    2
    Вес репутации
    0

    По умолчанию Re: Разработать шаблонный класс Array

    Написал шаблон верно? а дальше вот не пойму никак...
    1.1. Сортировки массива методом пузырьков. Метод поиска массива элемента с заданным значением. Переустановку элементов массива, чтобы они шли обратном порядке.
    Код cpp:
    1. #include <iostream>
    2.  
    3. template<typename T, size_t N>
    4. class Array
    5. {
    6. public:
    7.     constexpr size_t size() const{
    8.         return N;
    9.     }
    10.     T& operator[](size_t index){
    11.         return mArray[index];
    12.     }
    13.     const T& operator[](size_t index) const{
    14.         return mArray[index];
    15.     }
    16.     T* begin() {
    17.         return mArray;
    18.     }
    19.     const T* begin() const{
    20.         return mArray;
    21.     }
    22.         T* end() {
    23.             return mArray+N;
    24.         }
    25.     const T* end() const{
    26.         return mArray+N;
    27.     }
    28. private:
    29.     T mArray[N];
    30. };
    31.  
    32.  
    33.  
    34. int main()
    35. {
    36.     Array<int, 3> arr;
    37.     for(size_t i = 0; i<arr.size(); ++i){
    38.         arr[i] = i*10;
    39.     }
    40.     for(auto e: arr){
    41.         std::cout << e << std::endl;
    42.     }
    43. }
    Последний раз редактировалось Romeo; 27.12.2017 в 10:44. Причина: [code=cpp][/code]

  5. #4
    Moderator Куратор
    system architect
    Romeo is on a distinguished road Аватар для Romeo
    Регистрация
    02.03.2004
    Адрес
    Крым, Севастополь
    Возраст
    36
    Сообщений
    3,089
    Вес репутации
    21

    По умолчанию Re: Разработать шаблонный класс Array

    А гуглить не пробовал? Вики великолепно демонстрирует этот метод сортировки.
    Entites should not be multiplied beyond necessity @ William Occam
    ---
    Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
    ---
    Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.

  6. #5
    developer Слива is on a distinguished road
    Регистрация
    19.03.2016
    Сообщений
    133
    Вес репутации
    3

    По умолчанию Re: Разработать шаблонный класс Array

    TheSergei, все это можете вообще убрать из тела шаблона класса - это все вода. Сконцентрируйтесь на сути проблемы. Вот эта фраза означает:
    "1.1. Сортировки массива методом пузырьков. Метод поиска массива элемента с заданным значением. Переустановку элементов массива, чтобы они шли обратном порядке."
    - что поиск элемента массива с заданным значением - это самое легкое и его нужно делать первым. Проходитесь циклом for() по всем элементам массива и выдавайте номер и сам элемент при нахождении и выдавайте сообщение в консоль или MessageBox() при не нахождении его. - Это было первое. Теперь второе. Идем по возрастанию сложности.
    2) Перестановка значений элементов в обратно порядке. Можно написать самому, а можно использовать готовую фнкцию reverse(). Это все есть в Интернете и Киберфоруме;
    3) Сортирока массива Методом Пузырька - самая легкая сортировка, легко реализуется и легко понимается. Все это есть также в Интернете и на Киберфоруме. Я рекомендую ознакомиться с этой сортировкой сначала в теории. Можно даже отдельную программу написать, а потом ее впендюрить в эту свою программу.

  7. #6
    developer Слива is on a distinguished road
    Регистрация
    19.03.2016
    Сообщений
    133
    Вес репутации
    3

    По умолчанию Re: Разработать шаблонный класс Array

    Вот написал код для переворачивания массива, но еще раз повторюсь: в С++ должна быть готовая функция reverse(), но посмотрите код на всякий случай.
    Код :
    1. //---------------------------------------------------------------------------
    2. #include <vcl>
    3. #include <iostream>
    4. #include <conio>
    5. #pragma hdrstop
    6. //---------------------------------------------------------------------------
    7. #pragma argsused
    8. using namespace std;
    9.  
    10. const int N = 35;
    11. int Massiv[N] = {0};
    12.  
    13. int Reverse()
    14. {
    15.     int h, c = N, temp;
    16.  
    17.     if(!(N%2)) c--;
    18.     c /= 2;
    19.     for(h = 0; h < c; h++)
    20.     {
    21.         temp = Massiv[N-1-h];
    22.         Massiv[N-1-h] = Massiv[h];
    23.         Massiv[h] = temp;
    24.     }
    25.     return 0;  //NO ERRORS
    26. }
    27.  
    28. int main(int argc, char* argv[])
    29. {
    30. int f;
    31. for(f = 0; f < N; f++)
    32.     Massiv[f] = f;
    33.  
    34. Reverse();
    35. for(f = 0; f < N; f++)
    36.     cout << Massiv[f] << " ";
    37.  
    38. getch();
    39. return 0;
    40. }
    41. //---------------------------------------------------------------------------
    Написано на C++Builder 6 - как всегда. Удачи вам всем, пацаны.

  8. #7
    Moderator Куратор
    system architect
    Absurd is on a distinguished road
    Регистрация
    26.02.2004
    Адрес
    Pietari, Venäjä
    Возраст
    38
    Сообщений
    1,213
    Вес репутации
    17

    По умолчанию Re: Разработать шаблонный класс Array

    Цитата Сообщение от Слива Посмотреть сообщение
    Вот написал код для переворачивания массива, но еще раз повторюсь: в С++ должна быть готовая функция reverse(), но посмотрите код на всякий случай.
    С переворачиванием тут уже проскакивала тема год назад или что-то типа того. Проще сделать массив -N..N и менять знак у переменной.

    Код :
    1. #include <cassert>
    2. #include <iostream>
    3. #include <algorithm>
    4.  
    5. template <typename T, int LoBound, int HiBound> class Array {
    6.   T arr_[HiBound - LoBound + 1];
    7. public:
    8.   Array()
    9.   {
    10.     std::fill(arr_, arr_ + sizeof(arr_) / sizeof(arr_[0]), T{});
    11.   }
    12.   Array(const Array& other)
    13.     :arr_(other.arr_)
    14.   {}
    15.   Array(std::initializer_list<T> initList)
    16.   {
    17.     std::copy(initList.begin(), initList.end(), arr_);
    18.   }
    19.   T& operator[](int ix)
    20.   {
    21.     assert(ix >= LoBound && ix <= HiBound);
    22.     return arr_[ix - LoBound];
    23.   }
    24.   const T& operator[](int ix) const
    25.   {
    26.     assert(ix >= LoBound && ix <= HiBound);
    27.     return arr_[ix - LoBound];
    28.   }
    29. };
    30.  
    31. int main()
    32. {
    33.   enum {LoBound = -2, HiBound = 2};
    34.   using A1D = Array<int, LoBound, HiBound>;
    35.   Array<A1D, LoBound, HiBound> arr =
    36.    { A1D{ 1,  2,  3,  4,  5},
    37.      A1D{ 6,  7,  8,  9, 10},
    38.     A1D{11, 12, 13, 14, 15},
    39.     A1D{16, 17, 18, 19, 20},
    40.     A1D{21, 22, 23, 24, 25} };
    41.   for (int i = LoBound; i <= HiBound; ++i) {
    42.     for (int j = LoBound; j <= HiBound; ++j) {
    43.       std::cout << arr[-i][-j] << " ";
    44.     }
    45.     std::cout << "\n";
    46.   }
    47.   return 0;
    48. }

    Цитата Сообщение от Слива Посмотреть сообщение
    Написано на C++Builder 6 - как всегда.
    Зачем такое говно мамонта? Вижуал студию 2017 можно скачать нахаляву, там можно в x64 компилировать и новый стандарт языка поддерживается.
    2B OR NOT(2B) = FF

  9. #8
    developer Слива is on a distinguished road
    Регистрация
    19.03.2016
    Сообщений
    133
    Вес репутации
    3

    По умолчанию Re: Разработать шаблонный класс Array

    Какой форум - такая и среда.

  10. #9
    Moderator Куратор
    system architect
    Romeo is on a distinguished road Аватар для Romeo
    Регистрация
    02.03.2004
    Адрес
    Крым, Севастополь
    Возраст
    36
    Сообщений
    3,089
    Вес репутации
    21

    По умолчанию Re: Разработать шаблонный класс Array

    А форум тут при чём? Даже если он весь такой-растакой, никто тебя не заставляет собираться билдером.
    Entites should not be multiplied beyond necessity @ William Occam
    ---
    Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
    ---
    Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.

  11. #10
    Moderator Куратор
    system architect
    Absurd is on a distinguished road
    Регистрация
    26.02.2004
    Адрес
    Pietari, Venäjä
    Возраст
    38
    Сообщений
    1,213
    Вес репутации
    17

    По умолчанию Re: Разработать шаблонный класс Array

    Цитата Сообщение от Слива Посмотреть сообщение
    Какой форум - такая и среда.
    Ну, это же не обмен колкостями, а разумное замечание. Если есть выбор из очень хороших интрументов - CLang 5.0, GNU C++ 7.2. Все бесплатно. Для личных целей можно также Visual Studio или Intel C++ скачать тоже бесплатно. Нет, давайте пользоваться пиратской копией мертвого продукта от фирмы которой больше нет. Неудивительно что кроме жуликов работу не предлагает.
    2B OR NOT(2B) = FF

+ Ответить в теме

Похожие темы

  1. класс и производный класс.
    Нужно: создать класс Liquid (жидкость), содержащий поля название и плотность.Определить методы переназначения и изменения плотности. Создать...
    от Евгений Александрович в разделе C и C++
  2. Разработать партнерскую программу
    Необходимо разработать партнерскую программу (ПП) с подключением к смс-биллингам, возможностью сбора и анализа статистики по всей ПП и индивидуально...
    от envairov в разделе Вакансии и заказы для программистов
  3. Требуется разработать web бот
    Добрый день, Существует задача перенаправлять поисковые запросы на зарубежный сайт, интерпретировать результаты поиска. Обсуждение деталий и...
    от krotkovam в разделе Поиск работы и заказов.
  4. array of char в striggrid
    есть символьный массив , который забивается букавками в одной форме и выводится на экран в дрцгой форме. существет проблема, которая остановила...
    от Svoja4ok в разделе Delphi и Pascal
  5. array as variant
    Уважаемые программисты может кто знает? У меня есть функция в которую надо передать массив как Variant в Delphi это делается просто: var...
    от Vyacheslav в разделе C и C++

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения