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

Как реализовать работу со списком строк и списком цифр в классе List? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Паркет http://www.cyberforum.ru/cpp-beginners/thread162869.html
есть паркет (см. рисунок) даны кординати нижней левой и правой верхней точки (в даном случае 4 4 и 12 10) закрашеной области. нужно определить сколько внутри этой области прямоугольников 1х1, 1х2, 1х3, 1х4, 1х5. в даном случае 6 1 0 0 8 соответственно. закрашеная область может быть произвольной
C++ Link error на inline функцию Почему выдает ошибку undefined reference to `OldCat::GetAge() const' на inline ф-цию при ее вызове? Убираю inline, все компилится нормально. Функция простая: inline int OldCat::GetAge() const { cout << "Calling function GetAge..." << endl; return itsAge; } http://www.cyberforum.ru/cpp-beginners/thread162841.html
C++ Какая должна быть структура сложного (объемного) проекта?
Работа программы начинается с выполнения функции main(). В самой программе куча функций и классов. Как организовать структуру достаточно сложного проекта (программы), чтобы не "утонуть" в ней? Насколько я понимаю, удобнее всего каждый осмысленный блок выделять в отдельный файл + хедеры также отдельным блоком, чтобы не мешались :) То есть получается нечто такое: main.cpp - укрупненная логика...
C++ #include <list> - конфликт using namespace std с другими инклюдами
Всем привет. Появилась надобность использовать списки, однако #include <list> подключается только вместе с using namespace std. Мои инклюды #pragma once #include "network.h" #include <d3dx9.h> #include "L_text.h" #include "L_smesh.h" #include "L_camera.h" #include "L_terrain.h"
C++ WMI и Dev-C++ http://www.cyberforum.ru/cpp-beginners/thread162784.html
Мне нужно узнать объем видеопамяти на эту тему на гуглил что нужно использовать Win32_VideoConfiguration Class, но компилятор ругается на кучу ошибок даже на этом примере http://msdn.microsoft.com/en-us/library/aa390423(v=VS.85).aspx
C++ Стражи включения Что значат эти строчки, #ifndef _CIRCL_H #define _CIRCL_H #endif /* _CIRCL_H */ понял так: если не дефинирована _CIRCL_H подробнее

Показать сообщение отдельно
hatter
1 / 1 / 0
Регистрация: 01.09.2010
Сообщений: 134
01.09.2010, 15:42     Как реализовать работу со списком строк и списком цифр в классе List?
Добрый день!
Проблема такая
Есть класс-список:

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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
class Node
{
    friend class List; //разрешение списку обращаться к своим закрытым частям
public:
    int value;
 
private:
    Node* p_next;
    Node* p_prev;
};
 
class List
{
private:
    Node* p_first;
    Node* p_last;
 
private:
    void copy(const List& list)
    {
        Node* p = NULL;
        while (p = list.get_next(p))
        {
            add(p->value);
        }
    }
public:
    List() : p_first(NULL), p_last(NULL)
    {
        //p_first = NULL;
        //p_last = NULL;
    }
    List(const List& list):  p_first(NULL), p_last(NULL)
    {
        copy(list);
    }
 
    List& operator= (const List& list)
    {
        if(this != &list)
        {
            clear();
            copy(list);
        }
 
        return *this;
    }
 
    ~List()
    {
        clear();
    }
 
    void clear()
    {
        while (p_first)
        {
            Node* p = p_first;
            p_first = p->p_next;
            delete p;
        }
        p_last = NULL;
    }
 
 
    void add(int k)
    {
        Node* p = new Node;
        p->p_prev = p_last;
        p->p_next = NULL;
        p->value = k;
 
        if (p_first == NULL)
        {
            p_last = p;
            p_first = p;
        }
        else
        {
            p_last->p_next = p;
            p_last = p;
        }
    }
    Node* get_next(Node* p) const
    {
        return p != NULL ? p->p_next /*правильное условие*/ : p_first /*неправильное условие*/;
    }
    void print()
    {
        cout << "forward:" << endl;
        for (Node* node = p_first; node != NULL; node = node->p_next)//for (Node* node = p_first; node; node = node->p_next)
        {
            cout << node->value <<" ";
        }
    }
 
 
};
 
void user_print(List& list)
{
    Node* p = NULL;
    while (p = list.get_next(p))
    {
        cout << p->value <<" ";
    }
    cout << endl;
}
/*class Iterator
{
private:
List* list;
 
public:
int get_next()
{
 
return 0;
}
};*/
//
 
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    List L1;
    for( int i=0; i<11; i++)
    {
        L1.add(i+1);
    }
    //L1.print();
    //функция принт:
    user_print(L1);
 
    List L2 = L1; //то же самое, что List L2(L1)
    user_print(L2);
    L2.add(100);
    user_print(L1);
    user_print(L2);
    
    L1 = L2;
    cout << "L1 = L2" <<endl;
    user_print(L1);
    user_print(L2);
 
    L2.add(255);
    cout << "L1 = L2 (255)" <<endl;
    user_print(L1);
    user_print(L2);
 
    cout << "L1 = L1 " <<endl;
    L1 = L1;
    user_print(L1);
 
    getchar ();
    return 0;
}
В нем нужно реализовать программу для работы со списком строк и списком целых чисел.
Образно должно это выглядеть так:
При запуске в окошке появляется надпись -
Введите 5 строк - вводим их,
После этого появляется надпись -
Введите 5 цифр - вводим их,
После этого снова появляется надпись -
Какой из 2-х списков отобразить ? (допустим N1 или N2)
И, в зависимости от того, какое из 2-х значений мы набираем (N1 , N2) на экран должен выводиться один из 2-х введенных нами ранее списков.


Подскажите, как это организовать? Если возможно, с кодом!
Буду очень благодарен .


P.S. Пытался применить подобный код

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
#include <iostream>
#include <list>
#include <string>
 
using namespace std;
 
int main()
{
  list<int> lint;
  list<string> lstr; 
  int n;
  string s;
 
  for (int i=1; i<=5; ++i) 
    {cin>>n; lint.push_back(n);}
  for (int i=1; i<=5; ++i) 
    {cin>>s; lstr.push_back(s);}
 
  cout<<"Enter 1 or 2 as a num of list"<<endl;
  cin>>n;
  switch(n)
  {
    case 1: 
      for (list<int>::iterator iter =lint.begin(); iter!=lint.end(); ++iter )
        {cout<<*iter;} break;
    case 2:
      for (list<string>::iterator iter =lstr.begin(); iter!=lstr.end(); ++iter )
        {cout<<*iter;} break;
    default: 
      cerr<<"Error!"<<endl;
      return -1;
  }
  getchar();
  return 0;
}
Но он видимо работает с классом list из стандартной библиотеки std и в моем классе не реализуется.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 11:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru