Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 1
Регистрация: 15.12.2015
Сообщений: 19

Visual C++ 2015 и 2010 шаблоны

15.12.2015, 12:38. Показов 821. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
возникла такая, проблема писал программу на Visual C++ 2015, а есть возможность сдать её в Visual C++ 2010
при компиляции моего кода, выдаются ошибки 6 штук, все они, по-моему, связаны с тем, что vs 2010 не поддеривает некоторые библиотеки или что-то в этом роде.
Помогите пожалуйста
Вот код программы
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
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
#include <Windows.h>
#include <time.h>
#include<iostream>
#include<string.h>
using namespace std;
class Transport{
    char  NameTrans[30], skorost[30];
public:
    Transport();//конструктор безпараметра
    Transport(char *NameTr,char *skor);//конструкор с двумя параметрами
    void Print();
    ~Transport();
    char *Get_NameTrans();
    char *Get_skorost();
    Transport &operator=(const Transport &B);
};
template<class T>
class List{
    T Object;
    List<T> *next = NULL;
    List<T> *first = NULL;
    List<T> *Get_last();
    int Size;
public:
    List();
    List(T *B, int n);
    List(const List<T> &B);
    void Input(T object);
    void Print();
    T operator[](int i);
    List<T> operator+(List<T> B);
    bool operator==(List<T> B);
    List<T> &operator=(const List<T> &B);
    ~List();
};
 
template<class T>
List<T> *List<T>::Get_last() {
    if (first) {
        List<T> *cur = first;
        while (cur->next) cur = cur->next;
        return cur;
    }
    else return NULL;
}
 
template<class T>
List<T>::List() {
    Object = NULL;
    next = NULL;
    first = NULL;
    Size = 0;
}
List<Transport>::List() {
    Transport Object;
    next = NULL;
    first = NULL;
    Size = 0;
}
template<class T>
List<T>::List(T *B, int n) {
    List<T> *cur;
    for (int i = 0; i < n; i++) {
        List<T> *Add = new List<T>;
        Add->Object = B[i];
        Add->next = 0;
        if (first) {
            cur->next = Add;
            cur = cur->next;
        }
        else {
            first = Add;
            cur = first;
        }
    }
    Size = n;
}
template<class T>
List<T>::List(const List<T> &B) {
    List<T> *cur2 = B.first;
    List<T> *cur = first;
    for (int i = 0; i < B.Size; i++) {
        List<T> *Add = new List<T>;
        Add->Object = cur2->Object;
        Add->next = 0;
        if (first) {
            cur->next = Add;
            cur = cur->next;
        }
        else {
            first = Add;
            cur = first;
        }
        cur2 = cur2->next;
    }
    Size = B.Size;
}
 
template<class T>
void List<T>::Input(T object) {
    List<T> *Add = new List<T>;
    List<T> *last = Get_last();
    Add->next = 0;
    Add->Object = object;
    Size++;
    if (last) last->next = Add;
    else first = Add;
}
 
template<class T>
void List<T>::Print() {
    if (first) {
        List<T> *cur = first;
        while (cur) {
            cout << cur->Object << " ";
            cur = cur->next;
        }
    }
    else cout << "Список пуст";
    cout << endl << "-----------------------" << endl;
}
void List<Transport>::Print() {
    List<Transport> *cur = first;
    if (first) {
        while (cur) {
            cout << "Название транспорта: " << cur->Object.Get_NameTrans() << " Скорость: " << cur->Object.Get_skorost() << endl;
            cur = cur->next;
        }
    }
    else cout << "Список пуст";
    cout << endl << "-----------------------" << endl;
}
 
template<class T>
T List<T>::operator[](int i) {
    if (i > 0 && i <= Size) {
        List<T> *cur = first;
        int pos = 1;
        while (i != pos) {
            cur = cur->next;
            pos++;
        }
        return cur->Object;
    }
    else throw 1;
}
 
template<class T>
List<T> List<T>::operator+(List<T> B) {
    List<T> Temp;
    List<T> *cur = Temp.first;
    List<T> *cur1 = first;
    List<T> *cur2 = B.first;
    for (int i = 0; i < Size; i++) {
        List<T> *Add = new List<T>;
        Add->Object = cur1->Object;
        Add->next = 0;
        if (Temp.first) {
            cur->next = Add;
            cur = cur->next;
        }
        else {
            Temp.first = Add;
            cur = Temp.first;
        }
        cur1 = cur1->next;
    }
    for (int i = 0; i < B.Size; i++) {
        List<T> *Add = new List<T>;
        Add->Object = cur2->Object;
        Add->next = 0;
        if (Temp.first) {
            cur->next = Add;
            cur = cur->next;
        }
        else {
            Temp.first = Add;
            cur = Temp.first;
        }
        cur2 = cur2->next;
    }
    Temp.Size = Size + B.Size;
    return Temp;
}
template<class T>
List<T> &List<T>::operator=(const List<T> &B) {
    List<T> Temp;
    List<T> *cur1 = B.first;
    List<T> *cur = first;
    if (this != &B) {
        if (Size) {
            List<T> *del = first;
            while (del) {
                first = first->next;
                delete del;
                del = first;
            }
        }
        for (int i = 0; i < B.Size; i++) {
            List<T> *Add = new List<T>;
            Add->Object = cur1->Object;
            Add->next = 0;
            if (first) {
                cur->next = Add;
                cur = cur->next;
            }
            else {
                first = Add;
                cur = first;
            }
            cur1 = cur1->next;
        }
        Size = B.Size;
    }
    return *this;
}
 
template<class T>
bool List<T>::operator==(List<T> B) {
    List<T> *cur1 = first;
    List<T> *cur2 = B.first;
    if (Size == B.Size) {
        while (cur1 && cur2) {
            if (cur1->Object != cur2->Object) return false;
            cur1 = cur1->next;
            cur2 = cur2->next;
        }
    }
    else return false;
    return true;
}
 
bool List<Transport>::operator==(List<Transport> B) {
    List<Transport> *cur1 = first;
    List<Transport> *cur2 = B.first;
    if (Size == B.Size) {
        while (cur1 && cur2) {
            if (strcmp(cur1->Object.Get_NameTrans(), cur2->Object.Get_NameTrans()) || strcmp(cur1->Object.Get_skorost(),cur2->Object.Get_skorost())) return false;
            cur1 = cur1->next;
            cur2 = cur2->next;
        }
    }
    else return false;
    return true;
}
template<class T>
List<T>::~List() {
    List<T> *del = first;
    while (del) {
        first = first->next;
        delete del;
        del = first;
    }
}
Transport::Transport(){
    NameTrans[0] = '\0';
    skorost[0] = '\0';
}
Transport::Transport(char *NameTr, char *skor){
        strcpy(NameTrans, NameTr);
        strcpy(skorost, skor);
}
 
void Transport::Print(){
    if (strlen(NameTrans) && strlen(skorost)){
        cout << "Название транспорта: " << NameTrans << endl;
        cout << "Скорость: " << skorost << endl;
    }
    else throw 1;
}
 
Transport::~Transport(){
}
 
char *Transport::Get_NameTrans(){
    return NameTrans;
}
char *Transport::Get_skorost(){
    return skorost;
}
 
Transport &Transport::operator=(const Transport &B){
    if (this != &B){
        strcpy(NameTrans, B.NameTrans);
        strcpy(skorost, B.skorost);
    }
    return *this;
}
int main() {
    srand(time(0));
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    int n, random;
    char NameTrans[100], skorost[100];
    List<int> A;
    List<int> B;
    cout << "Введите размерность списка 1: ";
    cin >> n;
    for (int i = 0; i < n; i++) {
        random = rand() % 100 - 50;
        A.Input(random);
    }
    cout << "Введите размерность списка 2: ";
    cin >> n;
    for (int i = 0; i < n; i++) {
        random = rand() % 100 - 50;
        B.Input(random);
    }
    system("cls");
    A.Print();
    B.Print();
    List<int> C = A + B;
    C.Print();
    if (A == B) cout << "Списки равны" << endl;
    else cout << "Списки не равны" << endl;
    cout << "Введите элемент списка А, который нужно вывести: ";
    cin >> n;
    try {
        cout << A[n] << endl;
    }
    catch (int)
    {
        cout << "Элемента с данным индексом не существует" << endl;
    }
    cout << "Введите элемент списка B, который нужно вывести: ";
    cin >> n;
    try {
        cout << B[n] << endl;
    }
    catch (int)
    {
        cout << "Элемента с данным индексом не существует" << endl;
    }
    system("pause");
    system("cls");
    cout << "Переход к пользовательскому типу" << endl;
    List<Transport> A1;
    List<Transport> A2;
    cout << "Введите размерность списка 1: ";
    cin >> n;
    for (int i = 0; i < n; i++) {
        cout << "Введите название государства: ";
        cin >> NameTrans;
        cout << "Введите название дату основания: ";
        cin >> skorost;
        Transport Gos(NameTrans, skorost);
        A1.Input(Gos);
    }
    cout << "Введите размерность списка 2: ";
    cin >> n;
    for (int i = 0; i < n; i++) {
        cout << "Введите название транспорта: ";
        cin >> NameTrans;
        cout << "Введите скорость: ";
        cin >> skorost;
        Transport Gos(NameTrans, skorost);
        A2.Input(Gos);
    }
    A1.Print();
    A2.Print();
    List<Transport> A3 = A1 + A2;
    A3.Print();
    cout << "Введите элемент списка 1, который нужно вывести: ";
    cin >> n;
    try {
        A1[n].Print();
    }
    catch (int)
    {
        cout << "Элемента с данным индексом не существует" << endl;
    }
    cout << "Введите элемент списка 2 компл. чисел, который нужно вывести: ";
    cin >> n;
    try {
        A2[n].Print();
    }
    catch (int)
    {
        cout << "Элемента с данным индексом не существует" << endl;
    }
    if (A1 == A2) cout << "Списки равны" << endl;
    else cout << "Списки не равны" << endl;
    system("pause>>void");
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.12.2015, 12:38
Ответы с готовыми решениями:

Чем отличается Microsoft Visual C++ 2010 Express от Visual Studio 2010 Ultimate
Подскажите пожалуйста, в чем разница Microsoft Visual C++ 2010 Express от Visual Studio 2010 Ultimate. Всем ответившим большое спасибо)))

Как удалить стандартные шаблоны в Visual studio 2015?
Где располагаются стандартные шаблоны проектов VS? Подскажите, пожалуйста. (если кому надо знать зачем понадобилось, то я через VS загружал...

Visual Studio 2015 and 2010
Еще раз добрый вечер, такой вопрос, сам я работаю на Visual Studio 2015 , а оказалось, что в универе стоит 2010-2012 версия , откроет ли...

2
Эксперт С++
 Аватар для schdub
3073 / 1411 / 425
Регистрация: 19.01.2009
Сообщений: 3,894
15.12.2015, 21:23
Цитата Сообщение от rischat Посмотреть сообщение
выдаются ошибки 6 штук, все они, по-моему, связаны с тем, что vs 2010 не поддеривает некоторые библиотеки или что-то в этом роде
Какие именно? А под vs2015 все компилируется? То что срузу бросается в глаза, это то что при специализации шаблола (например, строка 122) вы забыли добавилть template<> в начале. И так в нескольких местах. Может еще есть ошибки.
1
0 / 0 / 1
Регистрация: 15.12.2015
Сообщений: 19
16.12.2015, 00:31  [ТС]
само задание следующие:
Класс - однонаправленный список list. Дополнительно перегрузить следующие операции:
() -удалить элемент в заданной позиции, например:
int i;
list L;
L(i);
() - добавить элемент в заданную позицию, например:
int i;
Type c;
list L;
L(с,i);
!= - проверка на неравенство.
класс транспорт содержит в себе название транспорта и его скорость
написал программу вот так:
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
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
#include <iostream>
#include <math.h>
using namespace std;
// Polzovatelskiy klass
class Transport {
    string NameTrans;
    int skorost;
public:
    void set_NameTrans(string Name) { NameTrans=Name; }
    void set_skorost(int sk) {skorost=sk; }
    Transport( string NameTrans="slomai_sebe_komp", int skorost=13): NameTrans(NameTrans), skorost(skorost) { }
    /* friend ostream& operator<<(ostream& os, const Transport& v) {
        os << "(" << v.NameTrans << ", " << v.skorost << ")";
        return os;
    };*/
    /* friend istream& operator>>(istream& in, Transport& v) {
        cout << "NameTrans1: "; in >> v.NameTrans;
        cout << "skorost1: "; in >> v.skorost;
        return in;
    }*/
    };
 
template <class T>
struct Element {
    T val;
    Element<T>* next;
    Element() {
        next = NULL;
    }
};
 
template <class T>
class List {
public:
//конструктор без параметра
    List<T>() 
    {
        p_first = NULL;
        p_last = NULL;
        size = 0;
    };
//конструктор копирования
    List<T>(const List& old_list) 
    {
        p_first = NULL;
        p_last = NULL;
        size = 0;
        Element<T>* p = old_list.p_first;
        while (p != NULL) {
            this->append(p->val);
            p = p->next;
        }
    };
//функция размер
    size_t get_size() const 
    {
        return size;
    }
//деструктор
    ~List<T>() 
    {
        Element<T>* temp;
        while (p_first != NULL) 
        {
            temp = p_first;
            p_first = p_first->next;
            delete temp;// Удаление указателя
        }
    };
//функция добавления
    void append(T& val) 
    {
        if (p_first == NULL) 
        {
            p_last = new Element<T>;
            p_first = p_last;
        } else {
            p_last->next = new Element<T>;
            p_last = p_last->next;
        }
        p_last->val = val;// Присваиваем новое значение
        size++;
    };
  //функция вывода  
    void show_all() {
       static Element<T>* temp_p;// Временный указатель
        temp_p = p_first;
        cout << "[";
        while (temp_p != NULL) {
            cout << temp_p->val << ", ";
            temp_p = temp_p->next;
        }
        cout << "]" << endl;
    }
//перегрузка оператора <<
    friend std::ostream& operator<<(std::ostream& os, const List<T>& list) 
    {
        Element<T>* temp_p;
        temp_p = list.p_first;
        os << "[";
        while (temp_p != NULL) {
            os << temp_p->val << ", ";
            temp_p = temp_p->next;
        }
        os << "]";
        return os;
    }
//перегрузка оператора >>
    friend std::istream& operator>>(std::istream &in, List<T>& list) {
        T temp;
        in >> temp;
        list.append(temp);
        return in;
    }
 List<T>& operator()(int i)//Перегрузка операции удаление по номеру   
   {    if (i>size) 
            {
                cout<<"Введённый индекс превышает размер списка!";
                return *this;
             }
        if (p_first == NULL) return *this;
        if (p_first == p_last) 
        {
            p_first = NULL;
            delete p_last;
            p_last = NULL;
            size = 0;
            return *this;
        }
        int ind=0; Element<T>* p;
        if (ind=i)
        {
            p = p_first->next;// 1 Запоминание удаляемого звена для операции delete
          p_first->next = p->next; // 2 Проведение новой связи в обход удаляемого звена
          delete p;
        }
        else {p_first = p_first->next; ind++;}
        --size;
        return *this;
    }
  List<T>& operator++ (T c,int i)//Перегрузка операции добавления по номеру  
    {
        if (size == 0) 
        {
            append(c);
            return;
        }
        Element<T>* p = new Element<T>;
         p->c = c;int ind=0;
        if (ind=i)
        {  
            p->next = p_first->next; // 3 Проведение связи от нового звена к следующему
           p_first->next = p;       // 4 Проведение связи от "старого" звена к новому
                       
        }
        else {p_first = p_first->next; ind++;}
         ++size;
          return *this;
    }
    bool operator!=(const List<T>& L) const {
        if (size != L.size)
            cout<<"Списки не равны!";
        if (size == L.size) {
 
            Element<T>* p1 = p_first;
            Element<T>* p2 = L.p_first;
            while (p1 != NULL) {
                if (p1->val != p2->val)
                    return false;
                p1 = p1->next;
                p2 = p2->next;
            }
            return true;
        }
        return false;
    }
 
private:
    Element<T>* p_first;
    Element<T>* p_last;
    size_t size;
};
int main () {
    List<Transport> L;
    //Transport(2, 5) + L; // Proverka 1 peregruzki
    cin >> L; // Zapolnim eshe
    cout << L << endl;
    List<Transport> L2 = L;
    cout << "(L != L2): " << (L != L2) << endl; // 3 peregruzka, doljno true
    //--L; // Proverka vtoroy
    cout << "(L != L2): " << (L != L2) << endl; // 3 peregruzka eshe raz, teper' false
 
 
    return 0;
}
ошибки
"operator ++" имеет слишком много формальных параметров
List<T>::operator ++: ошибка в объявлении функции; пропуск основного текста функции

Добавлено через 1 час 3 минуты
вроде всё исправил, но только с утра получится запустить нормально
надеюсь всё получится
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.12.2015, 00:31
Помогаю со студенческими работами здесь

Совместимость компилятора 2015 с visual studio 2010
Сталкивался ли кто-то из здесь присутствующих с проблемой компиляции программы написанной в 2015 в studio 2010 (программа написана на языке...

Открыть проект Visual Studio 2015 в Visual Studio 2010
Здравствуйте не могу открыть проект созданный в Visual Studio 2015 в Visual Studio 2010.

Даунгрейд до Visual Studio 2010 с Visual Studio 2015
В общем, вопрос не особо связан с кодом. Собрал я свой проект в VS 2015 Enterprise, залил на Git и вспомнил, что мне нужна совместимость...

Install Shield 2015 и Visual Studio 2015 Community
Как в Visual Studio 2015 Community интегрировать Install Shield что можно было создавать не исполняемый файл exe а setup для дальнейшей...

50 + лучших бесплатных шаблоны Joomla НА 2015 ГОД
Доброго времени суток. Вот собрал 50 шаблонов хотел с вами поделиться. Все зарубежные шаблоны. очень красивые и...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Номеклатура. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru