Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
sandrwe
0 / 0 / 0
Регистрация: 08.02.2014
Сообщений: 25
1

Цикл для обьектов

09.02.2014, 21:42. Просмотров 385. Ответов 15
Метки нет (Все метки)

Здрасти. У меня есть много обьектов класса przedmiot. Какой цикл может в main.cpp помочь исполнить функцию выписывания "p_wypisz" для всех одновременно?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
list lista_przedmiotow;
    przedmiot p1("1I", "Podstawy programowania", "wyklad");
    przedmiot p2("2I", "Podstawy programowania", "laboratorium");
    przedmiot p3("3I", "Podstawy programowania", "projekt");
    przedmiot p4("4I", "Matematyka dyskretna", "wyklad");
    przedmiot p5("5I", "Matematyka dyskretna", "cwiczenie");
    przedmiot p6("6I", "Architektura system komputerowych", "wyklad");
    przedmiot p7("7I", "Architektura system komputerowych", "laboratorium");
    przedmiot p8("1T", "Geografia", "wyklad");
    przedmiot p9("2T", "Geografia", "cwiczenie");
    przedmiot p10("3T", "Turyzm i biznes hotelowy", "wyklad");
    przedmiot p11("4T", "Turyzm i biznes hotelowy", "cwiczenie");
    przedmiot p12("5T", "Turyzm i biznes hotelowy", "projekt");
    przedmiot p13("6T", "Plywanie", "DL");
    przedmiot p14("1K", "Kosmetologia", "wyklad");
    przedmiot p15("2K", "Kosmetologia", "cwiczenie");
    przedmiot p16("3K", "Kosmetyczny biznes", "wyklad");
    przedmiot p17("4K", "Kosmetyczny biznes", "cwiczenie");
    przedmiot p18("5K", "Kosmetyczny biznes", "Projekt");
    p1.p_wypisz();
Чтобы "p1.p_wypisz()" выполнилось не только для p1, а для всех обьектов przedmiot.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.02.2014, 21:42
Ответы с готовыми решениями:

Использование потокового итератора для пользовательских обьектов
Надо с помощю итератора ofstream_iterator вывести содержимое множины, в которой...

Быстрая сортировка для массива обьектов пользовательского класса
Насколько я знаю в Си++ есть встроеная ф-ция быстрой сортировки. Как нею...

Поиск по классу с полями char* для массива обьектов class a[i]
Есть класс: aero.h #ifndef AERO_H #define AERO_H #include <string>...

Как вернуть массив обьектов для дальнейшей работы с ним?
#include <iostream> class Ex { public: Ex(char *);//конструктор ...

Написать функцию для класса, возращающую данный из вектора обьектов класса по итератору вектора
День=добрый как написать функцию для класса возращающую данный из вектора...

15
Enotniy
98 / 99 / 31
Регистрация: 15.01.2014
Сообщений: 283
09.02.2014, 21:51 2
sandrwe, создайте list<przedmiot> L обьектов ваших (добавляйте L.push_back(p1);), а потом цикл
C++
1
2
for ( auto it : L)
  it.p_wypisz()
0
sandrwe
0 / 0 / 0
Регистрация: 08.02.2014
Сообщений: 25
09.02.2014, 22:04  [ТС] 3
Что я делаю не так?
0
Миниатюры
Цикл для обьектов  
Enotniy
98 / 99 / 31
Регистрация: 15.01.2014
Сообщений: 283
09.02.2014, 22:08 4
sandrwe, весь код пожалуйста

Добавлено через 59 секунд
sandrwe, если ваш компилятор не поддерживает c++11 то вам придётся сделать цикл с итераторами
0
sandrwe
0 / 0 / 0
Регистрация: 08.02.2014
Сообщений: 25
09.02.2014, 22:11  [ТС] 5
C++
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
#include <iostream>
#include "student.h"
#include "kierunek.h"
#include "przedmiot.h"
#include "list.h"
#include "ocena.h"
 
using namespace std;
 
int main()
{
    list lista_przedmiotow;
    przedmiot p1("1I", "Podstawy programowania", "wyklad");
    przedmiot p2("2I", "Podstawy programowania", "laboratorium");
    przedmiot p3("3I", "Podstawy programowania", "projekt");
    przedmiot p4("4I", "Matematyka dyskretna", "wyklad");
    przedmiot p5("5I", "Matematyka dyskretna", "cwiczenie");
    przedmiot p6("6I", "Architektura system komputerowych", "wyklad");
    przedmiot p7("7I", "Architektura system komputerowych", "laboratorium");
    przedmiot p8("1T", "Geografia", "wyklad");
    przedmiot p9("2T", "Geografia", "cwiczenie");
    przedmiot p10("3T", "Turyzm i biznes hotelowy", "wyklad");
    przedmiot p11("4T", "Turyzm i biznes hotelowy", "cwiczenie");
    przedmiot p12("5T", "Turyzm i biznes hotelowy", "projekt");
    przedmiot p13("6T", "Plywanie", "DL");
    przedmiot p14("1K", "Kosmetologia", "wyklad");
    przedmiot p15("2K", "Kosmetologia", "cwiczenie");
    przedmiot p16("3K", "Kosmetyczny biznes", "wyklad");
    przedmiot p17("4K", "Kosmetyczny biznes", "cwiczenie");
    przedmiot p18("5K", "Kosmetyczny biznes", "Projekt");
    lista_przedmiotow.push_back(p1);
    for (auto it : lista_przedmiotow)
    {
            it.p_dodaj();
    }
    return 0;
}

П.С. Использую CodeBlocks
0
Megabar
22 / 22 / 7
Регистрация: 01.12.2013
Сообщений: 93
09.02.2014, 22:14 6
sandrwe, попробуйте
C++
1
2
for (std::list<przedmiot>::iterator it=mylist.begin(); it != mylist.end(); ++it)
    it->p_dodaj();
Добавлено через 1 минуту
Цитата Сообщение от sandrwe Посмотреть сообщение
C++
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
#include <iostream>
#include "student.h"
#include "kierunek.h"
#include "przedmiot.h"
#include "list.h"
#include "ocena.h"
 
using namespace std;
 
int main()
{
    list lista_przedmiotow;
    przedmiot p1("1I", "Podstawy programowania", "wyklad");
    przedmiot p2("2I", "Podstawy programowania", "laboratorium");
    przedmiot p3("3I", "Podstawy programowania", "projekt");
    przedmiot p4("4I", "Matematyka dyskretna", "wyklad");
    przedmiot p5("5I", "Matematyka dyskretna", "cwiczenie");
    przedmiot p6("6I", "Architektura system komputerowych", "wyklad");
    przedmiot p7("7I", "Architektura system komputerowych", "laboratorium");
    przedmiot p8("1T", "Geografia", "wyklad");
    przedmiot p9("2T", "Geografia", "cwiczenie");
    przedmiot p10("3T", "Turyzm i biznes hotelowy", "wyklad");
    przedmiot p11("4T", "Turyzm i biznes hotelowy", "cwiczenie");
    przedmiot p12("5T", "Turyzm i biznes hotelowy", "projekt");
    przedmiot p13("6T", "Plywanie", "DL");
    przedmiot p14("1K", "Kosmetologia", "wyklad");
    przedmiot p15("2K", "Kosmetologia", "cwiczenie");
    przedmiot p16("3K", "Kosmetyczny biznes", "wyklad");
    przedmiot p17("4K", "Kosmetyczny biznes", "cwiczenie");
    przedmiot p18("5K", "Kosmetyczny biznes", "Projekt");
    lista_przedmiotow.push_back(p1);
    for (auto it : lista_przedmiotow)
    {
            it.p_dodaj();
    }
    return 0;
}

П.С. Использую CodeBlocks
у вас добавляется только один элемент
C++
1
lista_przedmiotow.push_back(p1);
надо добавить все p1, p2, ...
0
sandrwe
0 / 0 / 0
Регистрация: 08.02.2014
Сообщений: 25
09.02.2014, 22:18  [ТС] 7
Ругается что list не есть членом std.
0
Enotniy
98 / 99 / 31
Регистрация: 15.01.2014
Сообщений: 283
09.02.2014, 22:20 8
sandrwe,
C++
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
#include <iostream>
#include <list>
#include "student.h"
#include "kierunek.h"
#include "przedmiot.h"
#include "list.h"
#include "ocena.h"
 
using namespace std;
 
int main()
{
    list<przedmiot> lista_przedmiotow;
    przedmiot p1("1I", "Podstawy programowania", "wyklad");
    przedmiot p2("2I", "Podstawy programowania", "laboratorium");
    przedmiot p3("3I", "Podstawy programowania", "projekt");
    przedmiot p4("4I", "Matematyka dyskretna", "wyklad");
    przedmiot p5("5I", "Matematyka dyskretna", "cwiczenie");
    przedmiot p6("6I", "Architektura system komputerowych", "wyklad");
    przedmiot p7("7I", "Architektura system komputerowych", "laboratorium");
    przedmiot p8("1T", "Geografia", "wyklad");
    przedmiot p9("2T", "Geografia", "cwiczenie");
    przedmiot p10("3T", "Turyzm i biznes hotelowy", "wyklad");
    przedmiot p11("4T", "Turyzm i biznes hotelowy", "cwiczenie");
    przedmiot p12("5T", "Turyzm i biznes hotelowy", "projekt");
    przedmiot p13("6T", "Plywanie", "DL");
    przedmiot p14("1K", "Kosmetologia", "wyklad");
    przedmiot p15("2K", "Kosmetologia", "cwiczenie");
    przedmiot p16("3K", "Kosmetyczny biznes", "wyklad");
    przedmiot p17("4K", "Kosmetyczny biznes", "cwiczenie");
    przedmiot p18("5K", "Kosmetyczny biznes", "Projekt");
    lista_przedmiotow.push_back(p1);
    lista_przedmiotow.push_back(p2);
    lista_przedmiotow.push_back(p3);
    lista_przedmiotow.push_back(p4);
    lista_przedmiotow.push_back(p5);
    lista_przedmiotow.push_back(p6);
    lista_przedmiotow.push_back(p7);
    lista_przedmiotow.push_back(p8);
    lista_przedmiotow.push_back(p9);
    lista_przedmiotow.push_back(p10);
    lista_przedmiotow.push_back(p11);
    lista_przedmiotow.push_back(p12);
    lista_przedmiotow.push_back(p13);
    lista_przedmiotow.push_back(p14);
    lista_przedmiotow.push_back(p15);
    lista_przedmiotow.push_back(p16);
    lista_przedmiotow.push_back(p17);
    lista_przedmiotow.push_back(p18);
    for (auto it : lista_przedmiotow)
    {
        it.p_dodaj();
    }
    return 0;
}
вроде бы последняя версия кодеблока поддеживает последний стандарт

Добавлено через 36 секунд
sandrwe, библиотеку лист надо подключить отдельно
0
sandrwe
0 / 0 / 0
Регистрация: 08.02.2014
Сообщений: 25
09.02.2014, 22:23  [ТС] 9
Как?
0
Megabar
22 / 22 / 7
Регистрация: 01.12.2013
Сообщений: 93
09.02.2014, 22:23 10
Цитата Сообщение от sandrwe Посмотреть сообщение
Ругается что list не есть членом std.
воспользуйтесь подключением хедеров принятыми в С++
C++
1
2
#include <list>
using namespace std;
0
Enotniy
98 / 99 / 31
Регистрация: 15.01.2014
Сообщений: 283
09.02.2014, 22:25 11
sandrwe, я написал вам пример, он должен работать
1
sandrwe
0 / 0 / 0
Регистрация: 08.02.2014
Сообщений: 25
09.02.2014, 22:34  [ТС] 12
Но разве можно подключить этот лист так?
C++
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
#pragma once
#include<vector>
#include "student.h"
#include "ocena.h"
#include "kierunek.h"
#include "przedmiot.h"
 
using namespace std;
 
class list
{
protected:
    vector<student> s_list;
    vector<ocena> o_list;
    vector<kierunek> k_list;
    vector<przedmiot> p_list;
public:
    list();
    ~list();
    void s_dodaj(student a);
    void s_zapisz();
    void s_czytaj();
    void s_wypisz();
    void o_dodaj(ocena o);
    void o_zapisz();
    void o_czytaj();
    void o_wypisz();
    void k_dodaj(kierunek k);
    void k_zapisz();
    void k_czytaj();
    void k_wypisz();
        void p_dodaj(przedmiot p);
    void p_zapisz();
    void p_czytaj();
    void p_wypisz();
};
0
Enotniy
98 / 99 / 31
Регистрация: 15.01.2014
Сообщений: 283
09.02.2014, 22:37 13
sandrwe, я не понимаю что вы написали, вы пытаетесь переопределить класс лист? зачем? не нравится лист используйте vector
0
Megabar
22 / 22 / 7
Регистрация: 01.12.2013
Сообщений: 93
09.02.2014, 22:38 14
sandrwe, а класс przedmiot что делает?

Ваш класс list совпадает с именем list из std, используйте std::list
0
sandrwe
0 / 0 / 0
Регистрация: 08.02.2014
Сообщений: 25
09.02.2014, 22:40  [ТС] 15
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#pragma once
#include "kierunek.h"
#include <string>
 
class przedmiot:public kierunek
{
protected:
    char p_id[10];
    char p_nazwa[30];
    char p_forma[10];
public:
    przedmiot();
    przedmiot(char pid[10], char pnazwa[30], char pforma[10]);
    char* p_get_id(){return p_id;};
    char* p_get_nazwa(){return p_nazwa;};
    char* p_get_forma(){return p_forma;};
    void p_wypisz();
    ~przedmiot();
};
0
Enotniy
98 / 99 / 31
Регистрация: 15.01.2014
Сообщений: 283
09.02.2014, 22:45 16
sandrwe, вы наверное не понимаете зачем нужен обьект list? это очередь обьектов. вы помещаете ваши обьеты przedmiot в очередь, как в массив. а потом пробегаетесь по этому массиву. просто каждый элемент массива не число, а обьект типа przedmiot. Не понятно зачем вы выкладываете куски кода, лучше пишите, что не понятно
0
09.02.2014, 22:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.02.2014, 22:45

Почему не работает цикл while для заполнения и do while для вывода массива?
//--------------------------------------------------------------------------- ...

массив обьектов
здравствуйте! подскажите пожалуйста, что такое обьект массивов? ( искал в...

Количество обьектов в файле
У меня есть метод, который достает из файла поля обьектов и обрабатывает в...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru