Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
 Аватар для Tankist 90
0 / 0 / 2
Регистрация: 27.04.2015
Сообщений: 349

Создание класса-группы

16.02.2017, 12:12. Показов 2348. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую. Вот столкнулся с темой "Иерархия объектов и группа. Итераторы." Перелопатив половину Рунета, конкретной информации я так и не нашёл. Создалось только общее понятие. В лабе задание: Создать класс-группу "Имена рабочих заданного цеха." Написать для класса-группы метод итератор. Если кто знает принцип, демонстрационный код, пожалуйста...
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.02.2017, 12:12
Ответы с готовыми решениями:

Итератор для класса-группы
Доброго времени суток. Нужна помощь. Выполняя лабы по методичке вновь возникла проблема с пониманием логики автора. Необходимо передать в...

Возможно ли создание объекта шаблонного класса в функции этого класса?
Доброго времени суток, уважаемые форумчане :) Мне по лабам задали задание - реализовать шаблон контейнера (множество) с операциями...

Создание класса-списка на основе кода со списком без класса
Здравствуйте. Не могли бы вы показать, как оформить этот код в виде класса. Смысл задания: это засунуть в список большое число(здесь я...

7
 Аватар для avgoor
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
16.02.2017, 14:29
Цитата Сообщение от Tankist 90 Посмотреть сообщение
Перелопатив половину Рунета, конкретной информации я так и не нашёл
Ничего удивительного. Итератор - это абстрактное понятие, концепция. Если говорить об итераторах в C++, и в STL - тут немного конкретнее. Задача состоит в написании итератора, который можно передать, скажем в std::copy()? Тогда прочитайте здесь.
В качестве примера: не далее как вчера, будучи злым написал итератор для вывода на консоль треугольника из звездочек: тыц
0
 Аватар для Tankist 90
0 / 0 / 2
Регистрация: 27.04.2015
Сообщений: 349
17.02.2017, 16:20  [ТС]
Я здесь нашёл пример с организацией списка, и у меня возникла пара вопросов по данному коду:
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
struct link
{
    int data;
    link* next;
};
 
class linklist
{
 private:
    link* first; // начало списка
    link* rear; // конец списка
 
 public:
    linklist()
    { 
        first = NULL;
        rear = NULL;
    }
    
    void additem(int d)
    {
       link *newlink = new link; // новый элемент списка
       newlink -> data = d;
       newlink -> next = NULL;
        
       if (first == NULL) // если список пустой, то в начало
            first = newlink; // first начало списка
       else  rear -> next = newlink; // если список не пустой, то в конец
       
       rear = newlink; // rear конец списка
    }
    
    void display()
    {
        link *temp = first;
        while(temp)
        {
            cout << temp -> data << endl;
            temp = temp -> next;
        }
    }
};
Переменная data здесь вызывается через указатель, как метод структуры. Вопрос: как данная переменная может хранить несколько значений?
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
18.02.2017, 02:17
Цитата Сообщение от Tankist 90 Посмотреть сообщение
Вопрос: как данная переменная может хранить несколько значений?
Она хранит одно значение.
Цитата Сообщение от Tankist 90 Посмотреть сообщение
Переменная data здесь вызывается через указатель, как метод структуры.
Значение указателя меняется:
Цитата Сообщение от Tankist 90 Посмотреть сообщение
C++
1
temp = temp -> next;
На каждой итерации цикла указатель temp будет содержать адрес следующей в списке структуры link, со своей data.
0
 Аватар для Tankist 90
0 / 0 / 2
Регистрация: 27.04.2015
Сообщений: 349
21.02.2017, 17:20  [ТС]
В этом коде display() является итератором?
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
21.02.2017, 17:35
Цитата Сообщение от Tankist 90 Посмотреть сообщение
В этом коде display() является итератором?
display() - функция-член.
0
 Аватар для Tankist 90
0 / 0 / 2
Регистрация: 27.04.2015
Сообщений: 349
23.02.2017, 14: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
37
38
39
40
41
42
struct link
{
    char data[50];
    link* next;
};
 
class linklist
{
 private:
    link* first;
    link* rear; 
 
 public:
    linklist()
    { 
        first = NULL;
        rear = NULL;
    }
    
    void additem(char d)
    {
       link *newlink = new link; 
       newlink -> data[50] = d;
       newlink -> next = NULL;
        
       if (first == NULL)
            first = newlink; 
       else  rear -> next = newlink; 
       
       rear = newlink; 
    }
    
    void display()
    {
        link *temp = first;
        while(temp)
        {
            cout << temp -> data << endl;
            temp = temp -> next;
        }
    }
};
Вот главная функция:
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
int main()
{
    setlocale(0,"");
 
 linklist m;
 char a[50];
 int i;
 
 cout<<"Введите элементы списка, если захотите закончить, введите - 0:\n";
 
 for(i=0;i<5;i++)
 {
     cin>>a;
     if(*a == 0)break; // не работает...
     m.additem(*a);
 }
 
 cout<<"Ваш список:\n";
 m.display();
 
 
 system("pause");
 return 0;
 }
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
23.02.2017, 14:41
Лучший ответ Сообщение было отмечено Tankist 90 как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
    void additem(char d[])
    {
       link *newlink = new link; 
       strcpy(newlink -> data, d);
       newlink -> next = NULL;
        
       if (first == NULL)
            first = newlink; 
       else  rear -> next = newlink; 
       
       rear = newlink; 
    }
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int main() 
{
    setlocale(0,"");
 
     linklist m;
     char a[50];
     int i;
 
     cout<<"Введите элементы списка, если захотите закончить, введите - 0:\n";
 
     for(i=0;i<5;i++)
     {
         cin >> a;
         if(*a == '0')break;
         m.additem(a);
     }
 
     cout<<"Ваш список:\n";
     m.display();
 
    system("pause");
    return 0;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.02.2017, 14:41
Помогаю со студенческими работами здесь

Построение описания класса, создание и уничтожение объектов этого класса
Построить описание класса, содержащего информацию о почтовом адресе организации. Предусмотреть возможность раздельного изменения...

Явное создание экземпляра класса и явная специализация шаблона класса
Всем добрый день! Не могу разобраться - эти две технологии дают один и тот же результат? В каких случаях применять одно и другое?...

Создание объекта класса с полем являющимся объектом другого класса
Bill a; cin&gt;&gt;a;//тут я ввел с помощью перегруженного оператора ElementSpiska c; //поля у Spiska(Bill A,int,string,int) ...

Создание указателя типа базового класса на экземпляр производного класса
Добрый день! Иногда видел коды, где создавался указатель типа базового класса на объект класса - наследника, для чего это может применяться?

Пример класса с конструктором и деструктором, создание экземпляра класса через конструктор с параметрами
Привести пример класса с конструктором и деструктором, созданием экземпляра класса с помощью конструктора с параметрами.


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru