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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> batva s classami, pishu na borland c++ 
:(
    Опции темы
silver0909
Дата 1.12.2009, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код



#pragma argsused
//#include "Student.hpp"
//#include "Prof.hpp"
//#include "Personne.hpp"
#include <conio.h>
#include <stdio.h>
#include <vector>
#include <string>



using namespace std;

class Personne
{
    protected:
        std::string nom, prenom;
        int age;

    public:
        Personne()
        {
            age=0;
                        if (age<0 && age >>100) {
                        cout<<" erreur , ce n'est pas possible " ;    }
        }

        Personne(std::string _nom, std::string _prenom, int _age)
        {
            nom=_nom; prenom=_prenom; age=_age;
        }

        Personne(const Personne &p)
        {
            nom=p.nom; prenom=p.prenom; age=p.age;
        }

        ~Personne(){};

        void setNom(std::string _nom)
        {
            nom=_nom;
        }

        void setPrenom(std::string _prenom)
        {
            prenom=_prenom;
        }

        void setAge(int _age)
        {
            age=_age;
        }

        std::string getNom()
        {
            return nom;
        }

        std::string getPrenom()
        {
            return prenom;
        }

        int getAge()
        {
            return age;
        }

        virtual void affiche()
        {
            std::cout<<"nom: "<<nom<<", prenom: "<<prenom<<", age: "<<age<<std::endl;
        }

        Personne & operator= (const Personne &p)
        {
            nom=p.nom;
            prenom=p.prenom;
            age=p.age;
            return *this;
        }

        virtual void ajouterMatiere(Subjectst _m){};

        virtual void ajouterMatiere(Subjectpr m){};

};

class Student : public Personne
{
    private:
        std::vector<Subjectst> matieres;

    public:
        Student(){};

        Student(std::string _nom, std::string _prenom, int _age): Personne(_nom, _prenom, _age){};

        Student(std::string _nom, std::string _prenom, int _age, const std::vector<Subjectst> &_matieres): Personne(_nom, _prenom, _age)
        {
            matieres=_matieres;
        }

        Student(const Student &et):Personne(et.nom, et.prenom, et.age)
        {
            matieres=et.matieres;
        }

        virtual ~Student(){};

        std::vector<Subjectst> getMatieres()
        {
            return matieres;
        }

        double moyenne()
        {
            if(matieres.size()==0)
            {
                return 10;
            }
            else
            {
                double moy=0;
                for(int i=0;i<matieres.size();i++)
                {
                    moy+= ((double)matieres[i].getNote())/matieres.size();
                }
                return moy;
            }
        }

        bool affecterNote(std::string _nom, int _note)
        {
            int i=0;
            bool ok=false;
            while(i<matieres.size() && !ok)
            {
                if(matieres[i].getNom()==_nom)
                {
                    ok=true;
                    matieres[i].setNote(_note);
                }
                i++;
            }
            return ok;
        }

        void ajouterMatiere(Subjectst _m)
        {
            matieres.push_back(_m);
        }

        bool supprimerMatiere(std::string _nom)
        {
            int i=0;
            bool ok=false;
            while(i<matieres.size() && !ok)
            {
                if(matieres[i].getNom()==_nom)
                {
                    ok=true;
                    i--;
                }
                i++;
            }
            if(ok)
            {
                matieres.erase(matieres.begin()+i);
            }
            return ok;
        }

        virtual void affiche()
        {
            Personne::affiche();
            for(int i=0;i<matieres.size();i++)
            {
                std::cout<<"Matiere: "<<matieres[i].getNom()
                <<", note: "<<matieres[i].getNote()<<std::endl;
            }
            std::cout<<"Moyenne: "<<moyenne()<<std::endl;
        }
};




class Prof : public Personne
{  public:
        Prof(){};
           Prof(std::string _nom, std::string _prenom, int _age):Personne(_nom, _prenom, _age){};
           Prof(std::string _nom, std::string _prenom, int _age, const std::vector<Subjectpr> &mat): Personne(_nom, _prenom, _age)
        {matieres=mat;
        }
                virtual ~Prof(){};

        std::vector<Subjectpr> getMatieres()
        {return matieres;
        }

        int getNombreHeuresTotal()
        {    int result=0;
            for(int i=0;i<matieres.size();i++)
            {result+=matieres[i].getNombreHeures();
            }
            return result;
        }

        float cout()
        {       float result=0;
            for(int i=0;i<matieres.size();i++)
            {
                result+=matieres[i].getNombreHeures() * matieres[i].getTarifHoraire();
            }
            return result;
        }

        void ajouterMatiere(Subjectpr m)
        {matieres.push_back(m);
        }

        bool supprimerMatiere(std::string _nom)
        {       int i=0;
            bool ok=false;
            while(i<matieres.size() && !ok)
            {
                if(matieres[i].getNom()==_nom)
                {     ok=true;
                    i--;
                }
                i++;
            }
            if(ok)
            {matieres.erase(matieres.begin()+i);
            }
            return ok;
        }

        virtual void affiche()
        {
            Personne::affiche();
            for(int i=0;i<matieres.size();i++)
            {
                std::cout<<"Matiere: "<<matieres[i].getNom()
                <<", nombre d'heures: "<<matieres[i].getNombreHeures()
                <<", tarif horaire: "<<matieres[i].getTarifHoraire()
                <<std::endl;
            }
            std::cout<<"cout: "<<cout()<<std::endl;
        }

    private:
        std::vector<Subjectpr> matieres;

};













 



class Subject
{
    protected:
        std::string nom;

    public:
        Subject()
        {
            nom=" ";
        }

        Subject(std::string _nom)
        {
            nom=_nom;
        }

        Subject(const Subject &m)
        {
            nom=m.nom;
        }

        ~Subject(){};

        std::string getNom()
        {
            return nom;
        }

        void setNom(std::string _nom)
        {
            nom=_nom;
        }
};


 


class Subjectpr: public Subject
{
    public:
        Subjectpr(){};

        Subjectpr(std::string nom, int nb_h=0, float t_h=0): Subject(nom)
        {
            nb_heures=nb_h;
            tarif_horaire=t_h;
        }

        Subjectpr(const Subjectpr &m): Subject(m.nom)
        {
            nb_heures=m.nb_heures;
            tarif_horaire=m.tarif_horaire;
        }

        int getNombreHeures()
        {
            return nb_heures;
        }

        float getTarifHoraire()
        {
            return tarif_horaire;
        }

        void setNombreHeures(int nb_h)
        {
            nb_heures=nb_h;
        }

        void setTarifHoraire(float t_h)
        {
            tarif_horaire=t_h;
        }

    private:
        int nb_heures;
        float tarif_horaire;
};




class Subjectst : public Subject
{       private:
        int note;

    public:
        Subjectst()
        {
            note=10;
        }

        Subjectst(std::string _nom, int _note=10): Subject(_nom)
        {
            note=_note;
        }

        Subjectst(const Subjectst &m): Subject(m.nom)
        {
            note=m.note;
        }

        ~Subjectst(){};

        int getNote()
        {
            return note;
        }

        void setNote(int _note)
        {
            note=_note;
        }
};






char name;
int main(int argc, char* argv[])
{
        Personne* tableau[2];
        //cout<<"entre Nom , prenom , age" <<endl;
       // cin>> name   ;
        //cout<< name<<"  "<<endl;
        tableau[0]=new Student("Gelsdsad", "Essdfsdssssa", 0);
        tableau[0]->ajouterMatiere(Subjectst("Maths", 13));
        tableau[0]->ajouterMatiere(Subjectst("Conversion d'Energie", 12));
        tableau[0]->ajouterMatiere(Subjectst("Electronique Analogique", 14));
        tableau[0]->affiche();
        tableau[1]=new Prof("Erik Nom_prof", "Prenom_prof", 37);
        tableau[1]->ajouterMatiere(Subjectpr("C", 10, 75.0));
        tableau[1]->ajouterMatiere(Subjectpr("ESD", 10, 75.0));
        tableau[1]->ajouterMatiere(Subjectpr("Analyse Numerique", 8, 80.0));
        tableau[1]->affiche();

        delete tableau[0];
        delete tableau[1];


         getch();
        return 0;

}



[C++ Error] Myclass.cpp(93): E2299 Cannot generate template specialization from 'vector<_Tp,_Alloc>'


 smile  pomogite dodelat' a to spat' hochu uje vtoroi den'


Это сообщение отредактировал(а) silver0909 - 1.12.2009, 18:22
PM MAIL   Вверх
mes
Дата 1.12.2009, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(silver0909 @  1.12.2009,  16:50 Найти цитируемый пост)
        std::vector<Subjectst> matieres;

а где описание структуры Subjectst ? не забыли подключить файл ?


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


Новичок



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

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



stroka 357 , ili ya chto to putayu   ? 
PM MAIL   Вверх
kurtis
Дата 1.12.2009, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Насколько я понимаю суть проблемы, в месте где используется vector, компилятор еще не знает о существовании такого типа как Subjectst. Попробуй-те где-то шапке написать "class Subjectst;". А вообще классы нужно по отдельным файлам распихивать, а то это же неудобно когда оно одной большой кучей лежит.
PM MAIL   Вверх
silver0909
Дата 1.12.2009, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



probovala , togda pishet oshibku v drugom ''Subjectpr" smile 

Это сообщение отредактировал(а) silver0909 - 1.12.2009, 18:11
PM MAIL   Вверх
mes
Дата 1.12.2009, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(silver0909 @  1.12.2009,  17:04 Найти цитируемый пост)
stroka 357 , ili ya chto to putayu   ?  

слишком низко... smile  компилятор на строчке с ошибкой ничего о ней не знает...

Добавлено через 1 минуту и 54 секунды
Цитата(silver0909 @  1.12.2009,  17:11 Найти цитируемый пост)
probovala , togda pishet oshibku v drugom ''Subjectpr" smile 

ее тоже тащите вверх smile


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


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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




M
bsa
silver0909, слева от поля ввода сообщения (сразу под смайликами) есть галочка "Транслит", пользуйся ей.

PM   Вверх
silver0909
Дата 1.12.2009, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



если я ставлю subjectpr subjectst выше class subject тогда появляется другая ошибка 

попробуите компилировать тогда сразу поимете 

Это сообщение отредактировал(а) silver0909 - 1.12.2009, 18:30
PM MAIL   Вверх
mes
Дата 1.12.2009, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(silver0909 @  1.12.2009,  17:28 Найти цитируемый пост)
если я ставлю subjectpr subjectst выше class subject тогда появляется другая ошибка  

ну так и его наверх smile 


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


Новичок



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

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



работает !!!  smile  

еше мален,кии вопросик , как мне добавит,  cin>>name, surname,age : v class student
cin>>name, surname,age : v class prof


Это сообщение отредактировал(а) silver0909 - 2.12.2009, 00:27
PM MAIL   Вверх
bsa
Дата 2.12.2009, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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




M
bsa
Пожалуйста, один топик - один вопрос.
Если ответ на исходный вопрос получен, то пометь тему решенной.



Модератор: прежде чем отправлять сообщение, сначала нажми на предпросмотр и подумай, поймут ли тебя.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

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

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

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

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


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

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


 




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


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

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