1. Разработать шаблонный класс Array для работы с массивами. Реализовать методы ввода и вывода, а также:
1.1. Сортировки массива методом пузырьков. Метод поиска массива элемента с заданным значением. Переустановку элементов массива, чтобы они шли обратном порядке. CodeBlock C++
Разработать шаблонный класс Array
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
- Romeo
- Сообщения: 3091
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Готов помочь. Что именно не получается?
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Написал шаблон верно? а дальше вот не пойму никак...
1.1. Сортировки массива методом пузырьков. Метод поиска массива элемента с заданным значением. Переустановку элементов массива, чтобы они шли обратном порядке.
1.1. Сортировки массива методом пузырьков. Метод поиска массива элемента с заданным значением. Переустановку элементов массива, чтобы они шли обратном порядке.
Код: Выделить всё
#include <iostream>
template<typename T, size_t N>
class Array
{
public:
constexpr size_t size() const{
return N;
}
T& operator[](size_t index){
return mArray[index];
}
const T& operator[](size_t index) const{
return mArray[index];
}
T* begin() {
return mArray;
}
const T* begin() const{
return mArray;
}
T* end() {
return mArray+N;
}
const T* end() const{
return mArray+N;
}
private:
T mArray[N];
};
int main()
{
Array<int, 3> arr;
for(size_t i = 0; i<arr.size(); ++i){
arr[i] = i*10;
}
for(auto e: arr){
std::cout << e << std::endl;
}
}
- Romeo
- Сообщения: 3091
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
А гуглить не пробовал? Вики великолепно демонстрирует этот метод сортировки.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
TheSergei, все это можете вообще убрать из тела шаблона класса - это все вода. Сконцентрируйтесь на сути проблемы. Вот эта фраза означает:
"1.1. Сортировки массива методом пузырьков. Метод поиска массива элемента с заданным значением. Переустановку элементов массива, чтобы они шли обратном порядке."
- что поиск элемента массива с заданным значением - это самое легкое и его нужно делать первым. Проходитесь циклом for() по всем элементам массива и выдавайте номер и сам элемент при нахождении и выдавайте сообщение в консоль или MessageBox() при не нахождении его. - Это было первое. Теперь второе. Идем по возрастанию сложности.
2) Перестановка значений элементов в обратно порядке. Можно написать самому, а можно использовать готовую фнкцию reverse(). Это все есть в Интернете и Киберфоруме;
3) Сортирока массива Методом Пузырька - самая легкая сортировка, легко реализуется и легко понимается. Все это есть также в Интернете и на Киберфоруме. Я рекомендую ознакомиться с этой сортировкой сначала в теории. Можно даже отдельную программу написать, а потом ее впендюрить в эту свою программу.
"1.1. Сортировки массива методом пузырьков. Метод поиска массива элемента с заданным значением. Переустановку элементов массива, чтобы они шли обратном порядке."
- что поиск элемента массива с заданным значением - это самое легкое и его нужно делать первым. Проходитесь циклом for() по всем элементам массива и выдавайте номер и сам элемент при нахождении и выдавайте сообщение в консоль или MessageBox() при не нахождении его. - Это было первое. Теперь второе. Идем по возрастанию сложности.
2) Перестановка значений элементов в обратно порядке. Можно написать самому, а можно использовать готовую фнкцию reverse(). Это все есть в Интернете и Киберфоруме;
3) Сортирока массива Методом Пузырька - самая легкая сортировка, легко реализуется и легко понимается. Все это есть также в Интернете и на Киберфоруме. Я рекомендую ознакомиться с этой сортировкой сначала в теории. Можно даже отдельную программу написать, а потом ее впендюрить в эту свою программу.
Вот написал код для переворачивания массива, но еще раз повторюсь: в С++ должна быть готовая функция reverse(), но посмотрите код на всякий случай.
Написано на C++Builder 6 - как всегда. Удачи вам всем, пацаны.
Код: Выделить всё
//---------------------------------------------------------------------------
#include <vcl>
#include <iostream>
#include <conio>
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
using namespace std;
const int N = 35;
int Massiv[N] = {0};
int Reverse()
{
int h, c = N, temp;
if(!(N%2)) c--;
c /= 2;
for(h = 0; h < c; h++)
{
temp = Massiv[N-1-h];
Massiv[N-1-h] = Massiv[h];
Massiv[h] = temp;
}
return 0; //NO ERRORS
}
int main(int argc, char* argv[])
{
int f;
for(f = 0; f < N; f++)
Massiv[f] = f;
Reverse();
for(f = 0; f < N; f++)
cout << Massiv[f] << " ";
getch();
return 0;
}
//---------------------------------------------------------------------------
-
- Сообщения: 1213
- Зарегистрирован: 26 фев 2004, 13:24
- Откуда: Pietari, Venäjä
- Контактная информация:
Слива писал(а):Вот написал код для переворачивания массива, но еще раз повторюсь: в С++ должна быть готовая функция reverse(), но посмотрите код на всякий случай.
С переворачиванием тут уже проскакивала тема год назад или что-то типа того. Проще сделать массив -N..N и менять знак у переменной.
Код: Выделить всё
#include <cassert>
#include <iostream>
#include <algorithm>
template <typename T, int LoBound, int HiBound> class Array {
T arr_[HiBound - LoBound + 1];
public:
Array()
{
std::fill(arr_, arr_ + sizeof(arr_) / sizeof(arr_[0]), T{});
}
Array(const Array& other)
:arr_(other.arr_)
{}
Array(std::initializer_list<T> initList)
{
std::copy(initList.begin(), initList.end(), arr_);
}
T& operator[](int ix)
{
assert(ix >= LoBound && ix <= HiBound);
return arr_[ix - LoBound];
}
const T& operator[](int ix) const
{
assert(ix >= LoBound && ix <= HiBound);
return arr_[ix - LoBound];
}
};
int main()
{
enum {LoBound = -2, HiBound = 2};
using A1D = Array<int, LoBound, HiBound>;
Array<A1D, LoBound, HiBound> arr =
{ A1D{ 1, 2, 3, 4, 5},
A1D{ 6, 7, 8, 9, 10},
A1D{11, 12, 13, 14, 15},
A1D{16, 17, 18, 19, 20},
A1D{21, 22, 23, 24, 25} };
for (int i = LoBound; i <= HiBound; ++i) {
for (int j = LoBound; j <= HiBound; ++j) {
std::cout << arr[-i][-j] << " ";
}
std::cout << "\n";
}
return 0;
}
Зачем такое говно мамонта? Вижуал студию 2017 можно скачать нахаляву, там можно в x64 компилировать и новый стандарт языка поддерживается.Слива писал(а):Написано на C++Builder 6 - как всегда.
2B OR NOT(2B) = FF
Какой форум - такая и среда.
- Romeo
- Сообщения: 3091
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
А форум тут при чём? Даже если он весь такой-растакой, никто тебя не заставляет собираться билдером.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
-
- Сообщения: 1213
- Зарегистрирован: 26 фев 2004, 13:24
- Откуда: Pietari, Venäjä
- Контактная информация:
Слива писал(а):Какой форум - такая и среда.
Ну, это же не обмен колкостями, а разумное замечание. Если есть выбор из очень хороших интрументов - CLang 5.0, GNU C++ 7.2. Все бесплатно. Для личных целей можно также Visual Studio или Intel C++ скачать тоже бесплатно. Нет, давайте пользоваться пиратской копией мертвого продукта от фирмы которой больше нет. Неудивительно что кроме жуликов работу не предлагает.
2B OR NOT(2B) = FF