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

Реализовать односвязный список данных вида "Страна, город, количество населения" - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
OcbMuHor
Заблокирован
15.06.2011, 11:28     Реализовать односвязный список данных вида "Страна, город, количество населения" #1
Поставлена задача реализовать односвязный список данных вида
Страна город количество населенияОбеспечить выполнение операций:
добавление элемента в список
удаление элемента из списка
разделение списка на два по признаку: Страна, которая имеет города числом жителей >=k, <k
подсчет числа всех жителей списка
распечатка списка (поток вывода уточняю, скорее всего вывод на принтер)

собственно вот наработки. кто что подскажет, укажет ошибки...
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
#include <iostream>
 
class List
{
private:
    struct node
        {
            char coutry[20];
            char city[20];
            long int city_people;
            node *next;
        };
    node *phead;
    node *current;
public:
    void spy_push()
    {
        phead = new node ();
        current = phead;
        unsigned short k, tmp = 0;
        std::cout << "Dlina spyska" << std::endl;
        std::cin >> k;
        do
        {
            tmp++;
            std::cout << "\nCounty: ";
            std::cin >> current->coutry;
            std::cout << "\nCity: ";
            std::cin >> current->city;
            std::cout << "\nCity people : ";
            std::cin >> current->city_people;
            current->next = new node();
            if (tmp == k) current->next = 0;
            current = current->next;
        } while (tmp < k);
    }
 
    void spy_print()
    {
        for (current=phead; current!=0; current=current->next)
        {
            std::cout << "Coutry: " << current->coutry << "City: " << current->city
            << "City_people: " << current->city_people << std::endl;
        }
    }
 
    void people_value()
    {
        unsigned long long int value = 0;
        for (current=phead; current!=0; current=current->next)
        {
            value = value + current->city_people;
        }
        std::cout << "Value of the people list off" << value << std::endl;
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.06.2011, 11:28     Реализовать односвязный список данных вида "Страна, город, количество населения"
Посмотрите здесь:

Реализовать односвязный список для хранения данных вида: ФИО, группа, средний балл. C++
C++ Реализовать односвязный список для хранения
Даны результаты переписи населения. Покажите список населения которые родились после 1990года. C++
Односвязный кольцевой список, реализовать C++
C++ Реализовать односвязный список студентов
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Aneron
 Аватар для Aneron
157 / 156 / 12
Регистрация: 20.04.2010
Сообщений: 570
15.06.2011, 11:37     Реализовать односвязный список данных вида "Страна, город, количество населения" #2
это тупо описание класса. и нет возможности проверить его работоспособность.
напиши программу чтоб проверить твой класс. потом посмотрим.
OcbMuHor
Заблокирован
15.06.2011, 12:10  [ТС]     Реализовать односвязный список данных вида "Страна, город, количество населения" #3
Цитата Сообщение от Aneron Посмотреть сообщение
это тупо описание класса. и нет возможности проверить его работоспособность.
напиши программу чтоб проверить твой класс. потом посмотрим.
Я конечно мало что понимаю, всё грызем, грызём... но что мешает описать все функции в теле класса?
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
15.06.2011, 17:00     Реализовать односвязный список данных вида "Страна, город, количество населения" #4
OcbMuHor, как ваш пост стыкуется с предложением описать функцию main?
OcbMuHor
Заблокирован
15.06.2011, 17:10  [ТС]     Реализовать односвязный список данных вида "Страна, город, количество населения" #5
Цитата Сообщение от silent_1991 Посмотреть сообщение
OcbMuHor, как ваш пост стыкуется с предложением описать функцию main?
я не вижу пока необходимости вообще написания тела программы. На данном этапе у меня стоит задача реализовать функции. Ну если это поможет. то вот пожалуйста. Код переписан полностью
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
#include <iostream>
 
struct node
{
    char country[20];
    char city[20];
    long int city_people;
    node *next;
    node *prev;
};
 
 
int main()
 {
     node *pbeg = first();
     node *pend = pbeg;
 }
 
// формирование первого элемента
node *first()
{
    node *tmp = new node ();
    std::cout << "Country: "; std::cin >> tmp->country;
    std::cout << "City: "; std::cin >> tmp->city;
    std::cout << "City_people: "; std::cin >>tmp->city_people;
    tmp->next = NULL;
    tmp->prev = NULL;
    return tmp;
}
// добавление элемента в конец списка
void Insert_to_end (node **pend)
{
    node *tmp = new node();
    std::cout << "Country: "; std::cin >> tmp->country;
    std::cout << "City: "; std::cin >> tmp->city;
    std::cout << "City_people: "; std::cin >>tmp->city_people;
    tmp->next = NULL;
    tmp->prev = *pend;
    *pend = tmp;
}
// поиск элемента по символьному ключу страна И город
node *find1 (node const *pbeg, char key1[20], char key2[20])
{
    node *tmp = pbeg;
    while (tmp)
    {
        if ((tmp->country == key1)&&(tmp->city == key2)) break;
        tmp = tmp->next;
    }
    return tmp;
}
/* поиск элемента по символьному ключу страна или город
node *find2 (node const *pbeg, char key[20])
{
    node *tmp = pbeg;
    while (tmp)
    {
        if (tmp->country == key) break;
        if (tmp->city == key) break;
        tmp = tmp->next;
    }
    return tmp;
}*/
 
 
// поиск элемента по целочисленному ключу
node *find3 (node const *pbeg, long int key)
{
    node *tmp = pbeg;
    while (tmp)
    {
        if (tmp->city_people == key) break;
        tmp = tmp->next;
    }
    return tmp;
}
// удаление элемента
bool remoove (node **pbeg, node **pend, char key1[20], char key2[20])
{
    if (node *pkey = find1(*pbeg, key1, key2))
    {
        if (pkey == *pbeg)
        {
            *pbeg = (*pbeg)->next;
            (*pbeg)->prev=0;}
        else if (pkey == *pend)
        {
            *pend = (*pend)->next;
            (*pend)->next = 0;}
        else
        {
            (pkey->prev)->next = pkey->next;
            (pkey->next)->prev = pkey->prev;
        }
        delete pkey;
        return true;
    }
    return false;
}
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
15.06.2011, 17:23     Реализовать односвязный список данных вида "Страна, город, количество населения" #6
OcbMuHor, не понял, а в честь чего вы так резко перешли от объектно-ориентированного к процедурному программированию?
После реализации функций их надо проверить. Как вы собрались проверять их без точки входа - функции main.
Aneron
 Аватар для Aneron
157 / 156 / 12
Регистрация: 20.04.2010
Сообщений: 570
15.06.2011, 17:23     Реализовать односвязный список данных вида "Страна, город, количество населения" #7
тупой и банальный вопрос. как ты будешь проверять свой код на корректность работы?
OcbMuHor
Заблокирован
15.06.2011, 17:45  [ТС]     Реализовать односвязный список данных вида "Страна, город, количество населения" #8
Цитата Сообщение от Aneron Посмотреть сообщение
тупой и банальный вопрос. как ты будешь проверять свой код на корректность работы?
Это вопрос риторический...
OcbMuHor
Заблокирован
16.06.2011, 21:25  [ТС]     Реализовать односвязный список данных вида "Страна, город, количество населения" #9
Ну собственно вот и int main() маялся долго, пришел к такому пути решения. Не работает кейс 4. Вопросы такие:
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
#include <iostream>
#include <string>
 
struct Node
{
    std::string Country;
    std::string City;
    long int City_people;
    Node *next;
};
 
int main()
{
    unsigned short i=0, k, n, l=0;
    Node *phead = new Node();
    Node *tmp;
    tmp = phead;
    long long int count=0;
    std::string key_Country;
    long int key_City_peoiple;
    std::cout <<"The long of List: ";
    std::cin >> k;
    do
    {
        i++;
        std::cin >> tmp->Country;
        std::cin >> tmp->City;
        std::cin >> tmp->City_people;
        tmp->next = new Node();
        if (i ==k) tmp->next = NULL;
        tmp = tmp->next;
    } while (i<k);
    std::cout << "\nFor continuation of work pus a keychar:";
    std::cout << "\n1: For the output a list.";
    std::cout << "\n2: For the input new intem (to the end of list)";
    std::cout << "\n3: For the delete item";
    std::cout << "\n4: For the make two lists on a sign: list Country, City_people < n, ";
    std::cout << "\nand list Country, City_people >=n. after maked two lists output";
    std::cout << "\n5: For the count all people of the list";
    std::cout << "\n6: For the exit of programm" << std::endl;
    std::cin >> k;
    switch (k)
    {
    case 1: for (tmp = phead; tmp != NULL; tmp = tmp->next)
            {
                std::cout << tmp->Country << "  " << tmp->City << "  " << tmp->City_people
                    << std::endl;
            }; 
    case 2: tmp = phead;
            do
            {
                tmp = tmp->next;
                if (tmp == NULL){
                    tmp = new Node();
                    std::cin >> tmp->Country;
                    std::cin >> tmp->City;
                    std::cin >> tmp->City_people;
                    tmp->next =NULL;
                    tmp=tmp->next;
                }
            } while (tmp != NULL);
    case 3: std::cout << "\nPlease select a nomber of list you want to delete" << std::endl;
            std::cin >> n;
            i=0;
            for (tmp = phead; tmp != NULL; tmp = tmp->next)
            {
                i++;
                if (i == n){
                    if (tmp != NULL){
                        if (tmp == phead){
                            phead = tmp->next;
                            delete (tmp);
                            tmp = phead; break;
                        }
                        else{
                            Node *tmp1 = new Node();
                            tmp1 = tmp->next;
                            delete (tmp);
                            tmp = tmp1;
                            delete (tmp1); break;
                        }
                    }
                    else break;
                }
            }
    case 4: Node *phead1, *phead2;
            Node *tmp1, *tmp2;
            phead1 = new Node();
            tmp1 = phead1;
            phead2 = new Node();
            tmp2 = phead2;
            i = 0;
            k = 0;
            std::cout << "\nPlease select a key from country: ";
            std::cin >> key_Country;
            std::cout << "\nPlease select a key from City people amount: ";
            std::cin >> key_City_peoiple;
            for (tmp = phead; tmp!=NULL; tmp=tmp->next)
            {
                if (tmp->Country == key_Country){
                    if (tmp->City_people < key_City_peoiple){
                        i++;
                        tmp1->Country = tmp->Country;
                        tmp1->City = tmp->City;
                        tmp1->City_people = tmp->City_people;
                        tmp1->next = new Node();
                        tmp1 = tmp1->next;
                        tmp1->=NULL;
                    }
                    else{
                        k++;
                        tmp2->Country = tmp->Country;
                        tmp2->City = tmp->City;
                        tmp2->City_people = tmp->City_people;
                        tmp2->next = new Node();
                        tmp2 = tmp2->next;
                        tmp2->next = NULL;
                    }
                }
            }
            for (tmp1 = phead1; l<i; tmp1=tmp1->next)
            {
                l++;
                if (l == i-1) tmp1->next = NULL;
            }
            l=0;
            for (tmp2 = phead2; l<k; tmp2=tmp2->next)
            {
                l++;
                if (l == k-1) tmp2->next = NULL;
            }
            std::cout <<"\nOutput List where people of Cities < " << key_City_peoiple;
                std::cout << std::endl;
            for (tmp1=phead1; tmp1!=NULL; tmp1=tmp1->next){
                std::cout << tmp1->Country << "  " << tmp1->City << "  ";
                std::cout << tmp1->City_people << std::endl;
            }
            std::cout <<"\nOutput List where people of Cities >= " << key_City_peoiple;
                std::cout << std::endl;
            for (tmp2=phead2; tmp2!=NULL; tmp2=tmp2->next){
                std::cout << tmp2->Country << "  " << tmp2->City << "  ";
                std::cout << tmp2->City_people << std::endl;
            }
    case 5: std::cout << "\n5: The count all people of the list is: ";
            for (tmp = phead; tmp != NULL; tmp = tmp->next)
            {
                count = count + tmp->City_people;
            }
            std::cout << count << std::endl;
    case 6: break;
    default: std::cout << "Mabe you mistake? please, try again." <<std::endl;
    }
return 0;
}
1. как бы так сообразить можно было рекурсию на switch, т.е. по завершении выполнения одного из условий или ввода не того символа вернуть выполнение программы на строку №33.
2. ошибка в кейс 4
[IMG]http://i.***********/i5/30/31/1633130/Bezymeny-1.jpg[/IMG]
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
16.06.2011, 21:27     Реализовать односвязный список данных вида "Страна, город, количество населения" #10
OcbMuHor, 1. Про циклы слышали?
OcbMuHor
Заблокирован
16.06.2011, 21:32  [ТС]     Реализовать односвязный список данных вида "Страна, город, количество населения" #11
Цитата Сообщение от silent_1991 Посмотреть сообщение
OcbMuHor, 1. Про циклы слышали?
В чем издевка?
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
16.06.2011, 21:36     Реализовать односвязный список данных вида "Страна, город, количество населения" #12
OcbMuHor, какие издёвки? Вполне конкретный вопрос. В вашей формулировке "как бы так сообразить можно было рекурсию на switch, т.е. по завершении выполнения одного из условий или ввода не того символа вернуть выполнение программы на строку №33" - это то же самое, что в моей "цикл".
OcbMuHor
Заблокирован
17.06.2011, 01:21  [ТС]     Реализовать односвязный список данных вида "Страна, город, количество населения" #13
а про это. ну это не основной вопрос. думаю что с рекурсией не так сложно обстоят дела, просто устал, может кто уже писал функции подскажет. А по второму вопросу есть что?

Добавлено через 3 часа 42 минуты
короче вот готовый список с функциями. единственное, что не работает кейс удаления элемента списка. Помогите пожалуйста его подкорректировать с возможностью удалить любой элемент.
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
#include <iostream>
#include <string>
 
struct Node
{
    std::string Country;
    std::string City;
    unsigned long long int City_people;
    Node *next;
};
 
int main()
{
    unsigned short i=0, k, n, l=0;
    Node *phead = new Node();
    Node *tmp;
    tmp = phead;
    unsigned long long int count=0;
    std::string key_Country;
    long int key_City_peoiple;
    std::cout <<"The long of List: ";
    std::cin >> k;
    do
    {
        i++;
        std::cin >> tmp->Country;
        std::cin >> tmp->City;
        std::cin >> tmp->City_people;
        tmp->next = new Node();
        if (i ==k) tmp->next = NULL;
        tmp = tmp->next;
    } while (i<k);
    do
    {
        std::cout << "\nFor continuation of work pus a keychar:";
        std::cout << "\n1: For the output a list.";
        std::cout << "\n2: For the input new intem (to the end of list)";
        std::cout << "\n3: For the delete item";
        std::cout << "\n4: For the make two lists on a sign: list Country, City_people < n, ";
        std::cout << "\nand list Country, City_people >=n. after maked two lists output";
        std::cout << "\n5: For the count all people of the list";
        std::cout << "\n6: For the exit of programm" << std::endl;
        std::cin >> k;
        switch (k)
            {
                        //вывод
                case 1: for (tmp = phead; tmp != NULL; tmp = tmp->next)
                        {
                                std::cout << tmp->Country << "  " << tmp->City << "  " << tmp->City_people;
                                std::cout << std::endl;
                        } break;
                        //добавление элемента
                case 2: tmp = phead;
                        do
                        {
                            tmp = tmp->next;
                            if (tmp->next == NULL){
                                tmp->next = new Node();
                                tmp = tmp->next;
                                std::cin >> tmp->Country;
                                std::cin >> tmp->City;
                                std::cin >> tmp->City_people;
                                tmp->next = NULL;
                            }
                        } while (tmp->next!= NULL);
                        break;
                        //удаление элемента
                case 3: std::cout << "\nPlease select a nomber of list you want to delete" << std::endl;
                        std::cin >> n;
                        i=0;
                        for (tmp = phead; tmp != NULL; tmp = tmp->next)
                        {
                            i++;
                            if (i == n-1){
                                if (tmp != NULL){
                                    if (tmp == phead){
                                        phead = tmp->next;
                                        delete (tmp);
                                        tmp = phead; break;
                                    }
                                    else{
                                        Node *tmp1 = new Node();
                                        tmp1->Country = (tmp->next)->Country;
                                        tmp1->City = (tmp->next)->City;
                                        tmp1->City_people = (tmp->next)->City_people;
                                        tmp->next = (tmp->next)->next;
                                        tmp = tmp1;
                                        delete (tmp1); break;
                                    }
                                }
                                else break;
                            }
                        };
                        break;
                        //вывод двух списков по признаку: Страна: города с населением <n, города с населением >= n
                case 4: std::cout << "\nPlease select a key from country: ";
                        std::cin >> key_Country;
                        std::cout << "\nPlease select a key from City people amount: ";
                        std::cin >> key_City_peoiple;
                        std::cout <<"\nOutput List where people of Cities < " << key_City_peoiple;
                        std::cout << std::endl;
                        for (tmp = phead; tmp!=NULL; tmp=tmp->next)
                        {
                                if (tmp->Country == key_Country){
                                    if (tmp->City_people < key_City_peoiple){
                                        std::cout << tmp->Country << "  " << tmp->City << "  ";
                                        std::cout << tmp->City_people << std::endl; 
                                    }
                                }
                        }
                        std::cout <<"\nOutput List where people of Cities >= " << key_City_peoiple;
                        std::cout << std::endl;
                        for (tmp = phead; tmp!=NULL; tmp=tmp->next)
                        {
                            if (tmp->Country == key_Country){
                                if (tmp->City_people >= key_City_peoiple){
                                    std::cout << tmp->Country << "  " << tmp->City << "  ";
                                    std::cout << tmp->City_people << std::endl; 
                                }
                            }
                        }
                        break;
                        //подсчет всех жителей в списке
                case 5: std::cout << "\n5: The count all people of the list is: ";
                        for (tmp = phead; tmp != NULL; tmp = tmp->next)
                        {
                            count = count + tmp->City_people;
                        }
                        std::cout << count << std::endl;
                        //выход из программы
                case 6: break;
                        //сообщение об ошибке при вводе ключа
                default: std::cout << "Mabe you mistake? please, try again." <<std::endl;
        }
    } while (k!=6);
return 0;
}
Aneron
 Аватар для Aneron
157 / 156 / 12
Регистрация: 20.04.2010
Сообщений: 570
17.06.2011, 13:05     Реализовать односвязный список данных вида "Страна, город, количество населения" #14
удаление произвольного элемента.
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
case 3: 
    std::cout << "\nPlease select a nomber of list you want to delete" << std::endl;
    std::cin >> n;
    i = 1;
    for (tmp = phead; tmp != NULL;)
    {
        if (i == n)
        {
            if (tmp == phead)
            {                   
                delete phead;
                phead = NULL;
                break;
            }
            else
            {
                if(tmp->next)
                    tmp_pr->next = tmp->next;
                else
                    tmp_pr->next = NULL;
                delete tmp; 
                break;
            }
        }
        ++i;
        tmp_pr = tmp;
        tmp = tmp->next;
    }           
    break;
Добавлено через 5 минут
Цитата Сообщение от OcbMuHor Посмотреть сообщение
распечатка списка (поток вывода уточняю, скорее всего вывод на принтер)
скорее всего в файл. сомневаюсь что вы сможете сделать распечатку на принтер. думаю и препод в этом сомневается. поэтому вряд ли бы дал распечатку на принтере в кач-ве задания.
OcbMuHor
Заблокирован
17.06.2011, 13:12  [ТС]     Реализовать односвязный список данных вида "Страна, город, количество населения" #15
скорее всего в файл. сомневаюсь что вы сможете сделать распечатку на принтер. думаю и препод в этом сомневается. поэтому вряд ли бы дал распечатку на принтере в кач-ве задания.
Да, там вывод в задании дефолт. А сели бы и на принтер? с файловым i\o я работал с принтером должно быть по аналогии как-то? чисто теоретически, интересуюсь.

По кейсу: если вопрос стоит так что удалить из линейного списка можно только последний элемент, то лишние переменные тут вообще получаются ни к месту?
Aneron
 Аватар для Aneron
157 / 156 / 12
Регистрация: 20.04.2010
Сообщений: 570
17.06.2011, 13:23     Реализовать односвязный список данных вида "Страна, город, количество населения" #16
tmp_pr - указатель на предыдущий элемент.
если даже ты будешь удалять последний элемент, то тебе так или иначе нужно перебить связь с предпоследним. иначе могут возникнуть ошибки.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.06.2011, 22:02     Реализовать односвязный список данных вида "Страна, город, количество населения"
Еще ссылки по теме:

C++ Реализовать односвязный список и вектор
Попытка реализовать односвязный линейный список C++
Реализовать односвязный список для хранения и операций с данными вида "Количество внешних связей" C++

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

Или воспользуйтесь поиском по форуму:
OcbMuHor
Заблокирован
17.06.2011, 22:02  [ТС]     Реализовать односвязный список данных вида "Страна, город, количество населения" #17
Цитата Сообщение от Aneron Посмотреть сообщение
tmp_pr - указатель на предыдущий элемент.
если даже ты будешь удалять последний элемент, то тебе так или иначе нужно перебить связь с предпоследним. иначе могут возникнуть ошибки.
Я только к вечеру понял что к чему и как работает. Все не мог понять, а дело в том что указатели неизменны, а я во всю им пытаюсь присвоить новые значения. Топик можно закрывать.
Yandex
Объявления
17.06.2011, 22:02     Реализовать односвязный список данных вида "Страна, город, количество населения"
Ответ Создать тему
Опции темы

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