Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/25: Рейтинг темы: голосов - 25, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 10.05.2014
Сообщений: 15
1

Создать шаблон класса, порождающий динамические одномерные массивы

21.01.2015, 11:59. Показов 4905. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
. Дано: число N и последовательность a1, a2, … aN
Создать шаблон класса, порождающий динамические одномерные массивы с элементами различных типов (вещественные, целочисленные, символьные и т.д.). Тип данных и результат являются параметрами по отношению к классу, программа должна иметь методы инициализации, конструктор, деструктор, метод просмотра значений созданного массива, согласно заданному алгоритму.
(a1*a1), (a1*a2), …, (a1*aN);


Правильно ли я сделал?

Код
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include "stdafx.h"
#include "iostream"
using namespace std;
template <typename T>
class Mas {  
private:
    T N;
    T* mas;
public:
     void set(T N);
     void print();
};
 
template <typename T>
Mas<T>::Mas(T N) {  
    mas = new T [N];
    for(int i(0);i<=N;i++) {   
        cin>>mas[i];
    }
}
 
template <typename T>
Mas<T>::~Mas() {
    delete [] mas;
}
 
template <typename T>
 Mas<T>::Mas()
{}
 
template <typename T>
void Mas<T>::set(T N) {
    mas = new T [N];
    for(int i(0);i<=N;i++)  {   
        cin>>mas[i];
    }
};
 
template <typename T>
void Mas<T>::print() {
    for(int i(0);i<=N;i++)  {   
        cout<<mas[i] = mas[1]*mas[i];
    }
}
 
int _tmain(int argc, _TCHAR* argv[]) {
    Mas<int> a;
    a.set(3);
    a.print();
 
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.01.2015, 11:59
Ответы с готовыми решениями:

Создать шаблон класса, порождающего динамические одномерные массивы с элементами различных типов
Дано: число N и последовательность a1, a2, … aN Создать шаблон класса, порождающего динамические...

Создать шаблон класса, порождающего динамические одномерные массивы с элементами различных типов
Общая постановка. Дано: число N и последовательность a1, a2, … aN Создать шаблон класса,...

Одномерные динамические массивы
Всем доброго времени суток!!! Мне нужна ваша помощь. Немогу справиться с задачей: Написать...

Одномерные динамические массивы
Добрый день форумчане!!! задали одну програмку. Скрин вложил еще скрин внешнего вида. помогите с...

9
Эксперт С++
3071 / 1409 / 425
Регистрация: 19.01.2009
Сообщений: 3,880
21.01.2015, 13:40 2
Цитата Сообщение от Ergo_Proxy Посмотреть сообщение
i<=N
1) везде где так, нужно i < N, иначе чтение за границами выделенной памяти;

2) в функции Mas<T>::set(T) утечка памяти;

3) значение Mas<T>::N не запоминается в Mas<T>::set(T);

4) тип Mas<T>::N должен быть числовым, мы можем объявить массив при T=std::string, например;

5) в конструкторе нужно инициализировать члены класса N и mas.
0
0 / 0 / 0
Регистрация: 10.05.2014
Сообщений: 15
21.01.2015, 13:49  [ТС] 3
а как тогда избежать утечки памяти в функции set?
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
21.01.2015, 13:53 4
Ergo_Proxy, Очистить память перед тем как выделять новую.
0
0 / 0 / 0
Регистрация: 10.05.2014
Сообщений: 15
21.01.2015, 15:24  [ТС] 5
А еще вопрос можно,почему задача нечего не выводит?я изменил функцию print

C++ (Qt)
1
2
3
4
5
6
7
8
9
T Mas<T>::print()
{  T j;
    for(int i = 0; i < N; i++)
    {   j = mas[1]*mas[i];
        return j;
    
    }
    
}
0
Эксперт С++
3071 / 1409 / 425
Регистрация: 19.01.2009
Сообщений: 3,880
21.01.2015, 15:34 6
Ergo_Proxy, потому что на первой же итерации цикла вы выходите из функции (return j).
Если вы хотите вывести в консоль j, то std::cout << j;
0
0 / 0 / 0
Регистрация: 10.05.2014
Сообщений: 15
21.01.2015, 17:44  [ТС] 7
все равно не выводит
0
Эксперт С++
3071 / 1409 / 425
Регистрация: 19.01.2009
Сообщений: 3,880
21.01.2015, 18:55 8
Ergo_Proxy, мистика? покажите ваш код полностью.
0
0 / 0 / 0
Регистрация: 10.05.2014
Сообщений: 15
21.01.2015, 19:04  [ТС] 9
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include "stdafx.h"
#include "iostream"
using namespace std;
template <typename T>
class Mas
{  
   private:
       T N;
       T* mas;
   public:
       void set(T N);
       void print();
       Mas(T N); // 
       Mas();
       ~Mas();
};
template <typename T>
Mas<T>::Mas(T N)
{
    mas = new T [N];
    for(int i = 0; i < N; i++) 
    {   
        cin>>mas[i];
    }
}
template <typename T>
Mas<T>::~Mas()
{
    delete [] mas;
}
 
template <typename T>
 Mas<T>::Mas()
{}
 
template <typename T>
void Mas<T>::set(T N)
{   delete [] mas;
    
    mas = new T [N];
    for(int i = 0; i < N; i++)
    {   
        cin>>mas[i];
 
    }
 
};
 
template <typename T>
void Mas<T>::print()
{  T j;
    for(int i = 0; i < N; i++)
    {   j = mas[1]*mas[i];
        cout<< j;
    
    }
    
}
 
int main(int argc, char* argv[])
{
    Mas<int> a;
    a.set(3);
    a.print();
 
    return 0;
}
0
Эксперт С++
3071 / 1409 / 425
Регистрация: 19.01.2009
Сообщений: 3,880
21.01.2015, 19:17 10
Ergo_Proxy, как по-вашему, где инициализируется N и сколько раз выполнится цикл в Mas<T> :: print()?

Перечитайте еще раз, все ли вы выполнили?

Цитата Сообщение от schdub Посмотреть сообщение
1) везде где так, нужно i < N, иначе чтение за границами выделенной памяти;
2) в функции Mas<T>::set(T) утечка памяти;
3) значение Mas<T>::N не запоминается в Mas<T>::set(T);
4) тип Mas<T>::N должен быть числовым, мы можем объявить массив при T=std::string, например;
5) в конструкторе нужно инициализировать члены класса N и mas.
0
21.01.2015, 19:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.01.2015, 19:17
Помогаю со студенческими работами здесь

Умножение матриц(динамические одномерные массивы)
Есть класс: class Array { public: /*Конструкторы*/ Array(Array &amp;tmp);//конструктор...

Динамические одномерные массивы. Удаление и вставка элементов
Задание: Сформировать одномерный массив целых чисел, используя датчик случайных чисел. Распечатать...

Одномерные динамические массивы. Хочу разобраться в коде
Вот программа: int n; cout&lt;&lt;&quot;Vvedite kol-vo elementov&quot;; cin&gt;&gt;n; int i, ineg; float...

Как приравнять динамические одномерные массивы разных размеров друг к другу
Если у меня есть 2 массива разного размера arr1 и arr2. Предположим 3 случая: размер arr1 &lt; arr2,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru