Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> помощь с шаблонами 
:(
    Опции темы
gosn1ck
Дата 27.5.2009, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 18.4.2009

Репутация: 1
Всего: 1



подвернулось задание, а реализовать необходимо при помощи шаблонов, в которые я не очень силён...

Код

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


требуется создать двумерную матрицу?

насколько я понимаю надо что-то этого?

Код

template <class T> class shablon
{
  int  tsize;       // Общее количество строк
  int  csize;       // Текущее количество элементов в строке
  T    **data;
public:
  shablon(int);
  ~shablon();
  T* operator[] (int);

};


но это только сам шаблон, а о реализаций метода инициализации, конструктора, деструктора, метода просмотра значений созданного массива я вообще понятия не имею...

прошу помощи smile

Это сообщение отредактировал(а) gosn1ck - 27.5.2009, 17:29
PM MAIL ICQ   Вверх
zim22
Дата 27.5.2009, 18:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(gosn1ck @  27.5.2009,  16:45 Найти цитируемый пост)
Вариант задания 1.    a1,(a1+a2), … ,(a1+a2+…+aN);

каждый последующий элемент равен сумме предшествующих? ряд Фибоначчи чтоли.

Я не понял задание, объясните:
1) последовательность a1, a2, … aN  доступна извне или мы её должны сгенерировать случайным образом?
2) , 
Цитата

метод просмотра значений созданного массива, согласно заданному алгоритму

и кто этот алгоритм задаёт?


Это сообщение отредактировал(а) zim22 - 27.5.2009, 18:43


--------------------
PM MAIL   Вверх
gosn1ck
Дата 27.5.2009, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 18.4.2009

Репутация: 1
Всего: 1



Код

Вариант задания 1.    a1,(a1+a2), … ,(a1+a2+…+aN);

вариант задания есть алгоритм задания значений smile

пользователь сам задаёт последовательность.

то есть вход в прогу, а там приглашение ввести n, и сами эти n числа поочереди. а уже значения заносятся в массив по алгоритму. 
вроде верно объяснил smile 

Это сообщение отредактировал(а) gosn1ck - 27.5.2009, 19:06
PM MAIL ICQ   Вверх
zim22
Дата 27.5.2009, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(gosn1ck @  27.5.2009,  19:05 Найти цитируемый пост)
 а уже значения заносятся в массив по алгоритму. 

алгоритм я сам должен придумать?
Цитата(gosn1ck @  27.5.2009,  19:05 Найти цитируемый пост)
пользователь сам задаёт последовательность.

Цитата(gosn1ck @  27.5.2009,  19:05 Найти цитируемый пост)
а там приглашение ввести n, и сами эти n числа поочереди.

как пользователь может ввести n чисел, если они задаются по формуле: a1,(a1+a2), … ,(a1+a2+…+aN)
он должен сверяться с калькулятором, а потом вводить их?

или пользователь просто вводит числа, а я должен сгенерировать по ним другие числа(по формуле)?



--------------------
PM MAIL   Вверх
gosn1ck
Дата 27.5.2009, 19:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 18.4.2009

Репутация: 1
Всего: 1



видимо я окончательно вас запутал...
1) алгоритм задания - вариант задания. а вариант мой a1,(a1+a2), … ,(a1+a2+…+aN);
2) числа задаёт пользователь, а значения созданного массивы вычисляются по формуле.

пример

пользователь ввел 
5 7 3 2 4 - это будут a1, a2, a3, a4, a5 соответсвенно
а вот
mas[0] = a1;
mas[1] = a1+a2;
mas[2] = a1+a2+a3;
и т.д.
PM MAIL ICQ   Вверх
mes
Дата 27.5.2009, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(gosn1ck @  27.5.2009,  18:58 Найти цитируемый пост)
видимо я окончательно вас запутал...

а в чем собственно вопрос то ?!


--------------------
PM MAIL WWW   Вверх
zim22
Дата 27.5.2009, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Код

// 407.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <vector>
#include <iostream>
#include <algorithm>
#include <numeric>
#include <string>

template <typename T>
class Accumulate;

template <typename T>
std::ostream &operator<<(std::ostream &out, const Accumulate<T> &rhs);

template <typename T>
std::istream &operator>>(std::istream &in, Accumulate<T> &rhs);

template <typename T>
class Accumulate {
public:
  friend std::ostream &operator<< <T>(std::ostream &out, const Accumulate &rhs);
  friend std::istream &operator>> <T>(std::istream &in, Accumulate &rhs);
  Accumulate(int size) : vt(size) { }
private:
  std::vector<T> vt;
  std::vector<T> result_vt;
};

template <typename T>
std::ostream &operator<<(std::ostream &out, const Accumulate<T> &rhs) {
  std::copy(rhs.result_vt.begin(), rhs.result_vt.end(), std::ostream_iterator<T>(out, "\n"));
  return out;
}

template <typename T>
std::istream &operator>>(std::istream &in, Accumulate<T> &rhs) {
  for (int i = 0; i != rhs.vt.size(); ++i) {
    std::cout << "Enter " << i + 1 << " value : ";
    in >> rhs.vt[i];
  }
  std::partial_sum(rhs.vt.begin(), rhs.vt.end(), back_inserter(rhs.result_vt));
  return in;
}

int _tmain(int argc, _TCHAR* argv[])
{
  Accumulate<int> ai(5);
  std::cin >> ai;
  std::cout << ai;

  Accumulate<std::string> as(5);
  std::cin >> as;
  std::cout << as;

    return 0;
}


Это сообщение отредактировал(а) zim22 - 27.5.2009, 20:30


--------------------
PM MAIL   Вверх
gosn1ck
Дата 27.5.2009, 20:51 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 18.4.2009

Репутация: 1
Всего: 1



а реализая без вектора возможна? я вообще не понимаю, что тут написано...

Это сообщение отредактировал(а) gosn1ck - 27.5.2009, 20:52
PM MAIL ICQ   Вверх
gosn1ck
Дата 28.5.2009, 06:20 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 18.4.2009

Репутация: 1
Всего: 1



Цитата(mes @ 27.5.2009,  20:02)
Цитата(gosn1ck @  27.5.2009,  18:58 Найти цитируемый пост)
видимо я окончательно вас запутал...

а в чем собственно вопрос то ?!

вопрос в реализации задания, которое написано в посте №1
PM MAIL ICQ   Вверх
andrew_121
Дата 28.5.2009, 06:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 10
Всего: 33



Цитата(gosn1ck @  27.5.2009,  20:51 Найти цитируемый пост)
а реализая без вектора возможна?

Чем тебе vector<> не угодил?
Цитата(gosn1ck @  27.5.2009,  20:51 Найти цитируемый пост)
я вообще не понимаю, что тут написано...

Это уже твоя личная проблема!
Цитата(gosn1ck @  28.5.2009,  06:20 Найти цитируемый пост)
вопрос в реализации задания, которое написано в посте №1 

Тебе уже дали реализацию! Не спами!


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
zim22
Дата 28.5.2009, 08:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(gosn1ck @  27.5.2009,  20:51 Найти цитируемый пост)
а реализая без вектора возможна? я вообще не понимаю, что тут написано...

Код

//#include <vector>
#include <iostream>
#include <algorithm>
#include <numeric>
#include <string>

template <typename T>
class Accumulate;

template <typename T>
std::ostream &operator<<(std::ostream &out, const Accumulate<T> &rhs);

template <typename T>
std::istream &operator>>(std::istream &in, Accumulate<T> &rhs);

template <typename T>
class Accumulate {
public:
  friend std::ostream &operator<< <T>(std::ostream &out, const Accumulate &rhs);
  friend std::istream &operator>> <T>(std::istream &in, Accumulate &rhs);
  //Accumulate(int size) : vt(size) { }
  Accumulate(int sz) : size(sz), vt(new T[size]), result_vt(new T[size]) { }
  ~Accumulate() { delete [] vt; delete [] result_vt; }
private:
  int size;
  T *vt;
  T *result_vt;
  //std::vector<T> vt;
  //std::vector<T> result_vt;
};

template <typename T>
std::ostream &operator<<(std::ostream &out, const Accumulate<T> &rhs) {
  std::copy(rhs.result_vt, rhs.result_vt + rhs.size, std::ostream_iterator<T>(out, "\n"));
  return out;
}

template <typename T>
std::istream &operator>>(std::istream &in, Accumulate<T> &rhs) {
  for (int i = 0; i != rhs.size; ++i) {
    std::cout << "Enter " << i + 1 << " value : ";
    in >> rhs.vt[i];
  }
  std::partial_sum(rhs.vt, rhs.vt + rhs.size, rhs.result_vt);
  return in;
}

int main()
{
  Accumulate<int> ai(5);
  std::cin >> ai;
  std::cout << ai;

  Accumulate<std::string> as(5);
  std::cin >> as;
  std::cout << as;

    return 0;
}



Это сообщение отредактировал(а) zim22 - 28.5.2009, 08:14


--------------------
PM MAIL   Вверх
gosn1ck
Дата 28.5.2009, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 18.4.2009

Репутация: 1
Всего: 1



большое спасибо!
PM MAIL ICQ   Вверх
gosn1ck
Дата 28.5.2009, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 18.4.2009

Репутация: 1
Всего: 1



andrew_121, 1) мне угодил, а преподу нет. 2) спасибо, что напомнили, что это моя личная проблема, но это не значит, что я не могу с ней поделиться с другими, это форум всё таки. я не просил ее решить конкретно вас, поэтому не понимаю откуда такой комментарий. 3) вопрос был адресован мне и чтобы проявить уважение к собеседнику, я сочел нужным ответить на поставленный вопрос.
PM MAIL ICQ   Вверх
zim22
Дата 28.5.2009, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(gosn1ck @  28.5.2009,  12:45 Найти цитируемый пост)
мне угодил, а преподу нет. 

в следующий раз уточняйте на чём вам писать и что можно/нельзя использовать.


--------------------
PM MAIL   Вверх
gosn1ck
Дата 28.5.2009, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 18.4.2009

Репутация: 1
Всего: 1



хорошо, я это уже понял smile 
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.2484 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.