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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Список содержащий тест. Иерархия списков. 
:(
    Опции темы
zim22
Дата 6.4.2009, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


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

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



flyleaf, а так пробовали?
Код

#include <list>
...
std::list<int> li;
li.push_back(10);



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


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


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 40
Регистрация: 6.4.2009

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



std теперь его не устраивает ((
а можно как то вручную тот список создать без list.h?
PM MAIL ICQ   Вверх
zim22
Дата 6.4.2009, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


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

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



Цитата(flyleaf @  6.4.2009,  14:43 Найти цитируемый пост)
 без list.h?

какой list.h???? 
какой у вас компилятор?



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


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 40
Регистрация: 6.4.2009

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



Цитата(zim22 @ 6.4.2009,  14:52)
Цитата(flyleaf @  6.4.2009,  14:43 Найти цитируемый пост)
 без list.h?

какой list.h???? 
какой у вас компилятор?

пробывала через Turbo C++
там list.h
пробывала через Dev-C++ 
пробывала через C++ Builder
Если подскажете какой то нормальный компилятор, буду очень признательна
PM MAIL ICQ   Вверх
zim22
Дата 6.4.2009, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


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

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



flyleaf, Microsoft Visual Studio Express Edition 2008 http://www.microsoft.com/express/vc/
или CodeBlocks http://www.codeblocks.org/downloads/5 (выберите codeblocks-8.02mingw-setup.exe)


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


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 40
Регистрация: 6.4.2009

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



о, компилирует =))) спасибо! =)) 
теперь попробую реализовать все =)
PM MAIL ICQ   Вверх
zim22
Дата 6.4.2009, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


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

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



flyleaf, на здоровье ;)


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


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 40
Регистрация: 6.4.2009

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



zim22,  Есче один вопрос, немогу найти вывода списка на екран. подскажите плз ету функцию....

PM MAIL ICQ   Вверх
zim22
Дата 6.4.2009, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


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

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



flyleaf
Код
#include <algorithm>
#include <iostream>
#include <list>

int main()
{
  std::list<int> li;
  li.push_back(10);
  li.push_back(20);

  std::copy(li.begin(), li.end(), std::ostream_iterator<int>(std::cout, " "));

  // или так:
  for(std::list<int>::iterator it = li.begin(); it != li.end(); ++it)
    std::cout << *it << " ";
}




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


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 40
Регистрация: 6.4.2009

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



zim22
Вот что получилось:
Код

#include <iostream>
#include <list>
#include <string>

using namespace std;
const int len=80;
class persona
{
private:
char name[len];
unsigned long num;
public:
void getdata ()
{
cout<< "\n Vvedit fio: \n";
cin >> name;
cout << "\n Vvedit nomer: \n";
cin >> num;
}
virtual void putdata() const
{
cout << "\n fio: " << name;
cout<< "\n Number: "<<num;
}
};


class injener: public persona
{
private:
int staj;
public:
void getdata ()
{
persona::getdata();
cout<< "\n Vvedit staj: \n";
cin >> staj;
}
void putdata() const
{
persona::putdata();
cout << "\n staj: " << staj;
}
};


class robitnuk: public persona
{
private:
int rozr9d;
public:
void getdata ()
{
persona::getdata();
cout << "\n Vvedit rozr9d robitnuka : \n";
cin >> rozr9d;
}
void putdata() const
{
persona::putdata();
cout<< "\n rozr9d: "<<rozr9d;
}
};

class slujb: public robitnuk
{
private:
char rang[len];
public:
void getdata ()
{
persona::getdata();
cout<< "\n Vvedit rang: \n";
cin >> rang;
}
void putdata() const
{
persona::putdata();
cout << "\n rang: " << rang;
}
};


int main()
{
std::list<persona> pers;
slujb s1;
robitnuk r1;
injener i1;
cout<< endl;
cout <<"\n Vvedit informatsii pro slujbovts9";
pers.push_back(s1);
cout <<"\n Vvedit informatsii pro robitnuka";
r1.getdata();
pers.push_back(r1);
cout <<"\n Vvedit informatsii pro injenera";
i1.getdata();
pers.push_back(i1);
for(std::list<persona>::iterator p = pers.begin(); p != pers.end(); ++p)
   std::cout << *p << " ";

 return(0);

}

на выделеное ругается! 
что то типо no match for 'operator<<' in 'std::cout << и т.д'

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


depict1
****


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

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



Код

#include <iostream>
#include <list>
#include <string>

using namespace std;
const int len=80;
class persona
{
  friend ostream &operator<<(std::ostream &out, const persona&);
private:
char name[len];
unsigned long num;
public:
void getdata ()
{
cout<< "\n Vvedit fio: \n";
cin >> name;
cout << "\n Vvedit nomer: \n";
cin >> num;
}
virtual void putdata() const
{
cout << "\n fio: " << name;
cout<< "\n Number: "<<num;
}
};

ostream &operator<<(std::ostream &out, const persona &pers)
{
  out << "Name: " << pers.name << std::endl;
  out << "Num: " << pers.num << std::endl;
  return out;
}


class injener: public persona
{
private:
int staj;
public:
void getdata ()
{
persona::getdata();
cout<< "\n Vvedit staj: \n";
cin >> staj;
}
void putdata() const
{
persona::putdata();
cout << "\n staj: " << staj;
}
};


class robitnuk: public persona
{
private:
int rozr9d;
public:
void getdata ()
{
persona::getdata();
cout << "\n Vvedit rozr9d robitnuka : \n";
cin >> rozr9d;
}
void putdata() const
{
persona::putdata();
cout<< "\n rozr9d: "<<rozr9d;
}
};

class slujb: public robitnuk
{
private:
char rang[len];
public:
void getdata ()
{
persona::getdata();
cout<< "\n Vvedit rang: \n";
cin >> rang;
}
void putdata() const
{
persona::putdata();
cout << "\n rang: " << rang;
}
};


int main()
{
std::list<persona> pers;
slujb s1;
robitnuk r1;
injener i1;
cout<< endl;
cout <<"\n Vvedit informatsii pro slujbovts9";
pers.push_back(s1);
cout <<"\n Vvedit informatsii pro robitnuka";
r1.getdata();
pers.push_back(r1);
cout <<"\n Vvedit informatsii pro injenera";
i1.getdata();
pers.push_back(i1);
for(std::list<persona>::iterator p = pers.begin(); p != pers.end(); ++p)
   std::cout << *p << " ";

 return(0);

}



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


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 40
Регистрация: 6.4.2009

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



Извените за кучу моих вопросов... но сама не сделаю =(

Вот обьекты в список загнались 
проблема теперь в том, что загоняются только поля главного класа, а подкласа нет... подскажите как ето исправить... 
Код

#include <iostream> 
#include <list> 


using namespace std; 
const int len=80; 
class persona 

  friend ostream &operator<<(std::ostream &out, const persona&); 
private: 
char name[len]; 
unsigned long num; 
public: 
void getdata () 

cout<< "\n Vvedit fio: \n"; 
cin >> name; 
cout << "\n Vvedit nomer: \n"; 
cin >> num; 

virtual void putdata() const 

cout << "\n fio: " << name; 
cout<< "\n Number: "<<num; 

}; 

ostream &operator<<(std::ostream &out, const persona &pers) 

  out << "Name: " << pers.name << std::endl; 
  out << "Num: " << pers.num << std::endl; 
  return out; 



class injener: public persona 

private: 
int staj; 
public: 
void getdata () 

persona::getdata(); 
cout<< "\n Vvedit staj: \n"; 
cin >> staj; 

void putdata() const 

persona::putdata(); 
cout << "\n staj: " << staj; 

}; 


class robitnuk: public persona 

    public: 
int rozr9d; 
void getdata () 

persona::getdata(); 
cout << "\n Vvedit rozr9d robitnuka : \n"; 
cin >> rozr9d; 

void putdata() const 

persona::putdata(); 
cout<< "\n rozr9d: "<<rozr9d; 

}; 

class slujb: public robitnuk 

    public: 
char rang[len]; 
void getdata () 

persona::getdata(); 
cout<< "\n Vvedit rang: \n"; 
cin >> rang; 

void putdata() const 

persona::putdata(); 
cout << "\n rang: " << rang; 

}; 


int main() 

std::list<persona> pers; 
slujb s1; 
robitnuk r1; 
injener i1; 
cout<< endl; 
cout <<"\n Vvedit informatsii pro slujbovts9"; 
s1.getdata(); 
pers.push_back(s1); 
cout <<"\n Vvedit informatsii pro robitnuka"; 
r1.getdata(); 
pers.push_back(r1); 
cout <<"\n Vvedit informatsii pro injenera"; 
i1.getdata(); 
pers.push_back(i1); 
for(std::list<persona>::iterator p = pers.begin(); p != pers.end(); ++p) 
   std::cout << *p << " "; 

 return(0); 


}


Это сообщение отредактировал(а) flyleaf - 6.4.2009, 18:34
PM MAIL ICQ   Вверх
zim22
Дата 6.4.2009, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


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

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



Цитата(flyleaf @  6.4.2009,  18:15 Найти цитируемый пост)
что загоняются только поля главного класа, а подкласа нет... 

где они загоняются. номер строки какой?
отформатируйте код, читать невозможно. хоть отступы сделайте...
форматировать так:
Код

class MyClass {
public:
  MyClass() { }
  int getData() const { }
private:
  int var1;
  double var2;
};




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


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 40
Регистрация: 6.4.2009

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



Код

#include <iostream>
#include <list>


using namespace std;
const int len=80;
class persona
{
  friend ostream &operator<<(std::ostream &out, const persona&);
    private:
        char name[len];
        unsigned long num;
    public:
        void getdata ()
            {
                cout<< "\n Vvedit fio: \n";
                cin >> name;
                cout << "\n Vvedit nomer: \n";
                cin >> num;
            }
virtual void putdata() const
    {
        cout << "\n fio: " << name;
        cout<< "\n Number: "<<num;
    }
};

ostream &operator<<(std::ostream &out, const persona &pers)
{
    out << "Name: " << pers.name << std::endl;
    out << "Num: " << pers.num << std::endl;
  return out;
}


class injener: public persona
{
    private:
        int staj;
    public:
        void getdata ()
            {
                persona::getdata();
                cout<< "\n Vvedit staj: \n";
                cin >> staj;
            }
            
void putdata() const
{
    persona::putdata();
    cout << "\n staj: " << staj;
}
};


class robitnuk: public persona
{
    public:
        int rozr9d;
    void getdata ()
    {
        persona::getdata();
        cout << "\n Vvedit rozr9d robitnuka : \n";
        cin >> rozr9d;
    }
    void putdata() const
    {
        persona::putdata();
        cout<< "\n rozr9d: "<<rozr9d;
    }
};

class slujb: public robitnuk
{
    public:
        char rang[len];
        void getdata ()
        {   
            persona::getdata();
            cout<< "\n Vvedit rang: \n";
            cin >> rang;
        }
    void putdata() const
    {
        persona::putdata();
        cout << "\n rang: " << rang;
    }
};


int main()
{
std::list<persona> pers;
slujb s1;
robitnuk r1;
injener i1;
cout<< endl;
cout <<"\n Vvedit informatsii pro slujbovts9";
s1.getdata();
pers.push_back(s1);
cout <<"\n Vvedit informatsii pro robitnuka";
r1.getdata();
pers.push_back(r1);
cout <<"\n Vvedit informatsii pro injenera";
i1.getdata();
pers.push_back(i1);
for(std::list<persona>::iterator p = pers.begin(); p != pers.end(); ++p)
   std::cout << *p << " ";

 return(0);


}



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


depict1
****


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

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



У вас был list на объекты базового класса. 
В него вы передавали объекты производных классов. И эти объекты усекались до объекта базового класса.
Чтобы использовать полиморфизм - необходимо было создать список указателей на базовый класс.

Код

#include <iostream>
#include <list>


using namespace std;
const int len=80;
class persona
{
  friend ostream &operator<<(std::ostream &out, const persona&);
    private:
        char name[len];
        unsigned long num;
    public:
        void getdata ()
            {
                cout<< "\n Vvedit fio: \n";
                cin >> name;
                cout << "\n Vvedit nomer: \n";
                cin >> num;
            }
virtual void putdata() const
    {
        cout << "\n fio: " << name;
        cout<< "\n Number: "<<num;
    }
};

ostream &operator<<(std::ostream &out, const persona &pers)
{
    out << "Name: " << pers.name << std::endl;
    out << "Num: " << pers.num << std::endl;
  return out;
}


class injener: public persona
{
    private:
        int staj;
    public:
        void getdata ()
            {
                persona::getdata();
                cout<< "\n Vvedit staj: \n";
                cin >> staj;
            }
            
void putdata() const
{
    persona::putdata();
    cout << "\n staj: " << staj;
}
};


class robitnuk: public persona
{
    public:
        int rozr9d;
    void getdata ()
    {
        persona::getdata();
        cout << "\n Vvedit rozr9d robitnuka : \n";
        cin >> rozr9d;
    }
    void putdata() const
    {
        persona::putdata();
        cout<< "\n rozr9d: "<<rozr9d;
    }
};

class slujb: public robitnuk
{
    public:
        char rang[len];
        void getdata ()
        {   
            persona::getdata();
            cout<< "\n Vvedit rang: \n";
            cin >> rang;
        }
    void putdata() const
    {
        persona::putdata();
        cout << "\n rang: " << rang;
    }
};


int main()
{
  std::list<persona*> pers;
  slujb *s1 = new slujb;
  robitnuk *r1 = new robitnuk;
  injener *i1 = new injener;
  cout<< endl;
  cout <<"\n Vvedit informatsii pro slujbovts9";
  s1->getdata();
  pers.push_back(s1);
  cout <<"\n Vvedit informatsii pro robitnuka";
  r1->getdata();
  pers.push_back(r1);
  cout <<"\n Vvedit informatsii pro injenera";
  i1->getdata();
  pers.push_back(i1);
  for(std::list<persona*>::iterator p = pers.begin(); p != pers.end(); ++p)
     (*p)->putdata();

 return(0);


}


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


--------------------
PM MAIL   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

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

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

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

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


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

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


 




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


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

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