Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
sandrwe
0 / 0 / 0
Регистрация: 08.02.2014
Сообщений: 25
09.02.2014, 21:42     Цикл для обьектов #1
Здрасти. У меня есть много обьектов класса 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.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Enotniy
 Аватар для Enotniy
96 / 95 / 14
Регистрация: 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()
sandrwe
0 / 0 / 0
Регистрация: 08.02.2014
Сообщений: 25
09.02.2014, 22:04  [ТС]     Цикл для обьектов #3
Что я делаю не так?
Миниатюры
Цикл для обьектов  
Enotniy
 Аватар для Enotniy
96 / 95 / 14
Регистрация: 15.01.2014
Сообщений: 283
09.02.2014, 22:08     Цикл для обьектов #4
sandrwe, весь код пожалуйста

Добавлено через 59 секунд
sandrwe, если ваш компилятор не поддерживает c++11 то вам придётся сделать цикл с итераторами
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
Megabar
22 / 22 / 3
Регистрация: 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, ...
sandrwe
0 / 0 / 0
Регистрация: 08.02.2014
Сообщений: 25
09.02.2014, 22:18  [ТС]     Цикл для обьектов #7
Ругается что list не есть членом std.
Enotniy
 Аватар для Enotniy
96 / 95 / 14
Регистрация: 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, библиотеку лист надо подключить отдельно
sandrwe
0 / 0 / 0
Регистрация: 08.02.2014
Сообщений: 25
09.02.2014, 22:23  [ТС]     Цикл для обьектов #9
Как?
Megabar
22 / 22 / 3
Регистрация: 01.12.2013
Сообщений: 93
09.02.2014, 22:23     Цикл для обьектов #10
Цитата Сообщение от sandrwe Посмотреть сообщение
Ругается что list не есть членом std.
воспользуйтесь подключением хедеров принятыми в С++
C++
1
2
#include <list>
using namespace std;
Enotniy
 Аватар для Enotniy
96 / 95 / 14
Регистрация: 15.01.2014
Сообщений: 283
09.02.2014, 22:25     Цикл для обьектов #11
sandrwe, я написал вам пример, он должен работать
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();
};
Enotniy
 Аватар для Enotniy
96 / 95 / 14
Регистрация: 15.01.2014
Сообщений: 283
09.02.2014, 22:37     Цикл для обьектов #13
sandrwe, я не понимаю что вы написали, вы пытаетесь переопределить класс лист? зачем? не нравится лист используйте vector
Megabar
22 / 22 / 3
Регистрация: 01.12.2013
Сообщений: 93
09.02.2014, 22:38     Цикл для обьектов #14
sandrwe, а класс przedmiot что делает?

Ваш класс list совпадает с именем list из std, используйте std::list
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();
};
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.02.2014, 22:45     Цикл для обьектов
Еще ссылки по теме:

C++ Количество обьектов в файле
C++ Поиск по классу с полями char* для массива обьектов class a[i]
C++ Почему не работает цикл while для заполнения и do while для вывода массива?

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

Или воспользуйтесь поиском по форуму:
Enotniy
 Аватар для Enotniy
96 / 95 / 14
Регистрация: 15.01.2014
Сообщений: 283
09.02.2014, 22:45     Цикл для обьектов #16
sandrwe, вы наверное не понимаете зачем нужен обьект list? это очередь обьектов. вы помещаете ваши обьеты przedmiot в очередь, как в массив. а потом пробегаетесь по этому массиву. просто каждый элемент массива не число, а обьект типа przedmiot. Не понятно зачем вы выкладываете куски кода, лучше пишите, что не понятно
Yandex
Объявления
09.02.2014, 22:45     Цикл для обьектов
Ответ Создать тему
Опции темы

Текущее время: 08:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru