1. Набираем команду codeby webinar. Набираем команду для организации и проведения вебинаров. Подробнее ...

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление
  3. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление

Существующий Элемент В Векторе

Тема в разделе "С и С++", создана пользователем Vunderkind, 17 мар 2012.

Статус темы:
Закрыта.
  1. Vunderkind

    Vunderkind Active Member

    Репутация:
    0
    Регистрация:
    26 окт 2010
    Сообщения:
    27
    Симпатии:
    0
    Здравствуйте!
    В общем мне нужно написать код который должен добавлять новый элемент в вектор, если нет такого элемента, а если такой элемент уже есть в векторе, прога должна бросить его в исключение и вывести сообщение о ошибке.

    Я написал прогу, но столкнулся с одной проблемой. Проблема такого: ранее добавленные мною элементы не сохраняются, и при повторном добавлении этого элемента прога не выводить сообщение об ошибке.

    Требования:
    нужно тестировать в функции main
    нужно использовать шаблонный класс

    Код:
    #include<iostream>
    #include<vector>
    #include<stdexcept>
    
    using namespace std;
    
    template <class T>
    class Set {
    
    public:
    T vec; 
    Set(void):vec(5){}
    class error
    {
    public:
    T data;
    error(T d) : data(d) {}
    };
    void vect(T d);
    
    };
    
    template <typename T>
    void Set<T>::vect(T d){
    Set<vector<T>> asp;	
    bool isEx=false;
    for(int i=0;i<asp.vec.size();i++){
    
    try{
    
    if(asp.vec[i]==d){
    isEx=true;
    throw error(d);
    }
    }
    catch (Set<T>::error e)
    {
    cout <<endl<<e.data<<" is already exist!\n"<<endl;
    }
    }
    if(isEx==false)
    asp.vec.push_back(d);
    for(int i=0;i<asp.vec.size();i++){
    cout<<asp.vec[i]<<" ";
    }
    cout<<endl;
    }
    
    
    int main(){
    
    Set<int> vecti; 
    Set<double> db;
    
    vecti.vect(3);  // передаю в функцию цифру 3 чтобы он добавил в вектор
    db.vect(10.2);
    vecti.vect(3); // повторно передаю в функцию цифру 3, должна вывести сообщение об ощибке
    
    
    system("pause");
    return 0;}
    можно объявить вектор глобальным, но у меня не получилось.
     
  2. qqwertty

    qqwertty Гость

    Репутация:
    0
    То что я смсог увидеть:
    вы работаете с Set<vector<T>> asp; ЗАЧЕМ? asp удаляется при выходе из функции. Вам нужно работать с членом класса, т.е. с vec.

    В след раз хотя бы код форматируйте, ну, сложно же читать...
     
  3. Vunderkind

    Vunderkind Active Member

    Репутация:
    0
    Регистрация:
    26 окт 2010
    Сообщения:
    27
    Симпатии:
    0
    решил проблему самостоятельно. прост впервые использую шаблонные классы, вот исправный код
    Код:
    #include<iostream>
    #include<vector>
    #include<stdexcept>
    
    using namespace std;
    
    template <class T>
    class Set {
    
    public:
    vector<T> vec;  // в прошлый раз объявил как T vec;
    Set(void):vec(5){}
    class error
    {
    public:
    T data;
    error(T d) : data(d) {}
    };
    void vect(T d);
    
    };
    
    template <typename T>
    void Set<T>::vect(T d){
    bool isEx=false;
    for(int i=0;i<vec.size();i++){
    
    try{
    
    if(vec[i]==d){
    isEx=true;
    throw error(d);
    }
    }
    catch (Set<T>::error e)
    {
    cout <<endl<<e.data<<" is already exist!\n"<<endl;
    }
    }
    if(isEx==false)
    vec.push_back(d);
    for(int i=0;i<vec.size();i++){
    cout<<vec[i]<<" ";
    }
    cout<<endl;
    }
    
    
    int main(){
    
    Set<int> vecti; // integer
    Set<double> db;		// double
    
    vecti.vect(3);  // involve this element to vector, output: message about error, 
    //because this element already element of vector 
    
    db.vect(10.2); // involve this element to vector
    vecti.vect(3);
    
    
    system("pause");
    return 0;}
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей