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

Не выводится содержимое динамического списка - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 5.00
lexflax
10 / 10 / 1
Регистрация: 03.04.2011
Сообщений: 627
14.10.2012, 14:38     Не выводится содержимое динамического списка #1
доброго времени суток.
структура с типом стринг, трем элементам структуры присваивается значение потом при попытки вывести одно из значений, тоесть обратится к списку через указатель выдает ошибку в строке вывода.
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
#include <vcl.h>
#pragma hdrstop
#include<iostream.h>
#include <tchar.h>
#include <string.h>
//---------------------------------------------------------------------------
 
struct lfile{
string name;
string data;
string upd;
    lfile*next;
}*start,*p;
void create_list(string a,string b,string c){
p = new lfile;
p->name=a;
p->data=b;
p->upd=c;
p->next = NULL;
start = p;
return;
}
char main(){
 setlocale(LC_ALL, "rus");
string a,b,c;
printf("Введите значение для первого элемента, создаваемого списка: ");
a="kot";
b="dog";
c="got";
cout<<p->name; \\ вот тут выдает ошибку
return 0;
}
ошибка такая [BCC32 Error] probstrukt.cpp(32): E2094 'operator<<' not implemented in type 'ostream' for arguments of type 'string'
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
16.10.2012, 15:17     Не выводится содержимое динамического списка #21
lexflax, оно еще и непрактично тем, что в структуре содержится 3 переменных одинакового типа, а Вы их используете для одного и того же: для заполнения, а потом для вывода. Не проще ли в таком случае завести 1 переменную типа string и добавлять очередной элемент только в нее. Например, в цикле 1-10 можно добавить сразу 10 элементов только через одну функцию. И выводить тоже через одну. Так намного удобней и проще.
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
#include <vcl.h>
#pragma hdrstop
#include<iostream.h>
#include <tchar.h>
#include <string>
//---------------------------------------------------------------------------
#include <conio.h>
struct lfile
{
 string data;
 lfile*next;
}*start,*p,*q;
 
void add(string a)
{ 
 p = new lfile;
 p->data=a;
 p->next = start;
 start = p;
}
 
void new_element(string a)
{
 lfile *q;
 q = new lfile;
 q->data=a;
 q->next = p->next;
 p->next = q;
}
 
void print()
{
 cout<<endl;
 while (start)
  {
   cout<<start->data<<endl;
   start=start->next;
  }
}
 
int main()
{
 setlocale(LC_ALL, "rus");
 string a;
 cout<<"Vvedite znachenie pervogo elementa v sozdavaemom spiske: ";
 for (int i=0; i<3; i++)
  {
   cin>>a;
   add(a);
  }
 print();
 cout<<"dobavit eshe element: ";
 for (int i=0; i<3; i++)
  {
   cin>>a;
   add(a);
  }
 print();
 getch();
 return 0;
}
И, да: была ошибка в первой функции: p->next = NULL;
Указатель на следующий элемент должен указывать на start. А Вы и не заметили, потому что выводили только первые добавленные элементы. От этого сути в списке никакой.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nixy
ComfyMobile
 Аватар для Nixy
399 / 280 / 8
Регистрация: 24.07.2012
Сообщений: 916
16.10.2012, 17:00     Не выводится содержимое динамического списка #22
Цитата Сообщение от BumerangSP Посмотреть сообщение
От этого сути в списке никакой.
Что вы привязались со своим списком, унего органихзовано все в виде СТЕКА
Тем более он сделал процедуру добавления , котороая правильно работает, и которую тоже можно в цикл загнать, он только не знал как ему выводить из СТЕКА, я ему написал
оно еще и непрактично тем, что в структуре содержится 3 переменных одинакового типа, а Вы их используете для одного и того же: для заполнения, а потом для вывода
а по поводу 3 переменных одинакого типа, это тоже абсурд, переменные делятся в первую очердь по именам, а уж потом по типам, и то, что тут он пока только учится поэтому использование переменных такое простое, возможно они необходимы для другого
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
16.10.2012, 17:16     Не выводится содержимое динамического списка #23
Nixy, да не стек это никакой, а односвязный список, раз он так легко элементы просматривает. А то, что Вы увидели там указатель на следующий элемент, так это не только в стеке бывает. У стека есть только добавление, проверка на пустоту и выборка с удалением просмотренного элемента.
void create_list(string a,string b,string c){
p = new lfile;
p->name=a;
p->data=b;
p->upd=c;
p->next = NULL;
start = p;
return;
}
Вы это компилировали, проверяли? Попробуйте туда добавить эти 3 элемента больше одного раза.
Тем более, это был как бы совет, нежели указание. Работая со списком, нужно, в первую очередь видеть его работу. В данном случае это больше похоже на просто присваивание значений динамическим переменным, а не очередность (я все про ту же первую функцию).
Nixy
ComfyMobile
 Аватар для Nixy
399 / 280 / 8
Регистрация: 24.07.2012
Сообщений: 916
16.10.2012, 17:26     Не выводится содержимое динамического списка #24
В том то и дело что это стек из за того что у первого элемента будет в next NULL записан. НА нем стек и кончается он на дне, и да я тестил вот
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
#include "windows.h"
#include<iostream.h>
#include <string>
 
    struct lfile{
        string name;
        string data;
        string upd;
        lfile*next;
    }*start,*p,*q;
 
    lfile *getFile(int index, lfile *curFile){
      if (index){
         index--;
         return getFile(index,curFile->next);
      }
      else
        return  curFile;
    }
    void create_list(string a,string b,string c){
        p = new lfile;
        p->name=a;
        p->data=b;
        p->upd=c;
        p->next = NULL;
        start = p;
        return;
    }
    void new_element(string a,string b,string c){
        lfile *q;
        q = new lfile;
        q->name= a;
        q->data=b;
        q->upd=c;
        q->next = p->next;
        p->next = q;
    return;
    }
    int main(){
        SetConsoleCP(1251);
        SetConsoleOutputCP(1251);
        setlocale(LC_ALL, "rus");
        string a,b,c;
        cout<<"Vvedite znachenie pervogo elementa v sozdavaemom spiske: ";
        cin>>a>>b>>c;
        cout<<endl;
        create_list(a,b,c);
        for (int i = 0; i < 3; i++) {
 
        cout<<"dobavit eshe element: ";
        cin>>a>>b>>c;
        cout<<endl;
        new_element(a,b,c);
        }
        for (int i = 0; i < 4; i++) {
            cout<<getFile(i,p)->name<<endl<<getFile(i,p)->data;
            cout<<endl<<getFile(1,p)->upd;
        }
 
        system("pause");
        return 0;
    }
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
16.10.2012, 17:51     Не выводится содержимое динамического списка #25
Все правильно? Просто способ вывода странный какой-то) Вижу четырежды число 9, хотя вводил 1 раз, и 0 троек, хотя вводил дважды.
Миниатюры
Не выводится содержимое динамического списка  
Nixy
ComfyMobile
 Аватар для Nixy
399 / 280 / 8
Регистрация: 24.07.2012
Сообщений: 916
16.10.2012, 18:08     Не выводится содержимое динамического списка #26
Цитата Сообщение от BumerangSP Посмотреть сообщение
Все правильно? Просто способ вывода странный какой-то) Вижу четырежды число 9, хотя вводил 1 раз, и 0 троек, хотя вводил дважды.
там затесалась ошибка
C++
1
cout<<endl<<getFile(1,p)->upd;
нужно заменить на
C++
1
cout<<endl<<getFile(i,p)->upd;
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
16.10.2012, 18:17     Не выводится содержимое динамического списка #27
Ок. Теперь о порядке вывода: раз элементы в стек (раз уж Вы говорите, что стек). Вроде с конца как бы. Почему сначала выводятся элементы, формирующие его? А как же удаление после выборки?

Не по теме:

Все, вроде это окончательный пост)

Nixy
ComfyMobile
 Аватар для Nixy
399 / 280 / 8
Регистрация: 24.07.2012
Сообщений: 916
16.10.2012, 18:23     Не выводится содержимое динамического списка #28
А удаляем сверху, на 2 курсе, у моего одногрупника по стекам, была к.р , я ему помогал с этим, очередь должна знать адрес как начала, так и конца, а стек знает адрес конца, и следующего

Добавлено через 36 секунд
Цитата Сообщение от BumerangSP Посмотреть сообщение
Не по теме:
Все, вроде это окончательный пост)
возможно у ТС будут еще вопросы
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
16.10.2012, 18:31     Не выводится содержимое динамического списка #29
Nixy,
возможно у ТС будут еще вопросы

Не по теме:

У ТС возможно, я свой пост несколько раз правил, окончательный вариант моего поста)



очередь должна знать адрес как начала, так и конца, а стек знает адрес конца, и следующего
Очередь должна знать адрес предыдущего и следующего элемента, а стек - следующего.

Не по теме:

Где Вы это читали? Ссылку можно?



Что касаемо кода: ввожу, например, 111, 222, 333, 444. По правильному (как у стека), вывод должен начинаться с четверок, т.е. с конца, притом удаляясь со стека.
Nixy
ComfyMobile
 Аватар для Nixy
399 / 280 / 8
Регистрация: 24.07.2012
Сообщений: 916
16.10.2012, 18:35     Не выводится содержимое динамического списка #30
если внимательно глянешь на функцию вывода , я ее сделал таким образом ,чтоб проше было для понимания, 1 элемент стека, это тот который лежит нижним в самом дне, и собственно 0 по номеру эллемент он будет 111 , другое дело , если необходимо организовать удаление с выводом то картина поменяется, когда я говорю про список я подразумеваю очередь может чо подзабыл, и это разные вещи
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
16.10.2012, 18:39     Не выводится содержимое динамического списка #31
Nixy, к чему это? Должно быть правильно сразу, а не проще. Первым ввели, последним вышло. Это принцип LIFO и не нужно его менять, пусть даже и визуально.

Добавлено через 2 минуты
Когда мы говорим про список, мы подразумеваем список. Он бывает односвязным еще, или кольцевым, а не только двусвязным, похожим на очередь.
Nixy
ComfyMobile
 Аватар для Nixy
399 / 280 / 8
Регистрация: 24.07.2012
Сообщений: 916
16.10.2012, 18:43     Не выводится содержимое динамического списка #32
фактически я так и делаю, вы тогда разверните цикл, ведь я и говорю ,что первым кто вошел, у него номер ячейки 0 , а цикл выводит от 0 до 4 поэтому и разворот, выводи от 4 до 0 тогда будет как у стека, я сделал процедуру просто взятия элемента из стека, а не совсем вывода, а про списки, значит забыл, возможно тогда и вы правы, тут спорить не буду, но мой стек работает )
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
16.10.2012, 18:55     Не выводится содержимое динамического списка #33
Nixy,
просто взятия элемента из стека, а не совсем вывода
Берем и выводим. Т.е. манипуляция с элементов была, а это значит, что его необходимо убрать, т.е. удалить.
что первым кто вошел, у него номер ячейки 0 , а цикл выводит от 0 до 4 поэтому и разворот, выводи от 4 до 0 тогда будет как у стека
Все вроде верно, но вот суть я не уловил) У первого индекс 0, у последнего 3. Выводим, начиная с конца. Т.е. первыми должны быть последние 3 введенных элемента.

Это ладно, суть не в этом. Просто я хотел указать на то, как работает стек. ТС все равно по условию нужен динамический список.
lexflax
10 / 10 / 1
Регистрация: 03.04.2011
Сообщений: 627
21.10.2012, 11:59  [ТС]     Не выводится содержимое динамического списка #34
доброго времени суток всем, читал на сайте про динамический список от туда взял пару функций чуть подправил пытался понять, но все равно не запускается и дает ошибки, кроме того я не знаю как грамотно выстраить обращение к функции в части 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
#include <vcl.h>
#pragma hdrstop
#include<iostream.h>
#include <tchar.h>
#include <string>
//---------------------------------------------------------------------------
#include <conio.h>
struct lfile{
char name;
char date;
lfile*next;};
struct golovahvost {
        lfile* head; // Первый элемент (голова) списка
        lfile* tail; // Последний элемент (хвост) списка
    };
 // Создание пустого списка
void constr_list(golovahvost  &l)
{
    l.head = NULL;
}
// Проверка списка на пустоту
bool chk_empty(golovahvost  &l)
{
    return (l.head==NULL);
}
 // Включение в список нового компонента
void comp_in(golovahvost &l, char* n, char* v)
{
    lfile* c = new lfile();
    strcpy_s(c->name, 20, n);
    strcpy_s(c->date, 10, v);
    c->next = NULL;
    if (chk_empty(l))
        l.head = c;
    else
        l.tail->next = c;
    l.tail = c;
}
// Поиск компонента в списке по имени
lfile* search(golovahvost &l, char *n)
{
    while (l.head != NULL)
    {
        if (!strcmp(l.head->name,n))
            return l.head;
        l.head = l.head->next;
    }
    return l.head;
}
 
main(){
setlocale(LC_ALL, "rus");
golovahvost vars; // Динамический список
constr_list(vars);
char a,b,c;
cout<<"Vvedite znachenie pervogo elementa v sozdavaemom spiske: "<<endl;
cin>>a>>b;
void comp_in(golovahvost &l, char* a, char* b)
create_list(a,b,c);
cout<<endl<<"vvedite eshe element: ";
cin>>a>>b>>c;
new_element(a,b,c);
cout <<"pervi element"<<endl<<cout<<p->name<<endl<<p->data<<endl<<p->upd;
 
cout<<"vtoroi element"<<endl<<p->next->name<<endl<<p->next->data<<endl<<p->next->upd;
getch();
return 0;
}
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
21.10.2012, 13:03     Не выводится содержимое динамического списка #35
lexflax, вместо strcpy просто присваивайте, это ж символы. И раз уж символ передается через указатели, то * нужно писать каждый раз перед ними.
Ну, и не объявленные функции, которые используются в main, тоже есть, типа create_list().
lexflax
10 / 10 / 1
Регистрация: 03.04.2011
Сообщений: 627
21.10.2012, 13:20  [ТС]     Не выводится содержимое динамического списка #36
вот сейчас так выглядит код, компилируется, но как организовать 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
#include <vcl.h>
#pragma hdrstop
#include<iostream.h>
#include <tchar.h>
#include <string>
//---------------------------------------------------------------------------
#include <conio.h>
struct lfile{
char name;
char date;
lfile*next;};
struct golovahvost {
        lfile* head; // Первый элемент (голова) списка
        lfile* tail; // Последний элемент (хвост) списка
    };
 // Создание пустого списка
void constr_list(golovahvost  &l)
{
    l.head = NULL;
}
// Проверка списка на пустоту
bool chk_empty(golovahvost  &l)
{
    return (l.head==NULL);
}
 // Включение в список нового компонента
void comp_in(golovahvost &l, char n, char v)
{
    lfile* c = new lfile();
    c->name= n;
    c->date= v;
    c->next = NULL;
    if (chk_empty(l))
        l.head = c;
    else
        l.tail->next = c;
    l.tail = c;
}
// Поиск компонента в списке по имени
lfile* search(golovahvost &l, char n)
{
    while (l.head != NULL)
    {
        if (l.head->name!=n)
            return l.head;
        l.head = l.head->next;
    }
    return l.head;
}
 
main(){
setlocale(LC_ALL, "rus");
golovahvost vars; // Динамический список
constr_list(vars);
char a,b,c;
cout<<"Vvedite znachenie pervogo elementa v sozdavaemom spiske: "<<endl;
cin>>a>>b;
void comp_in(golovahvost &l, char* a, char* b);
cout<<endl<<"vvedite eshe element: ";
cin>>a>>b;
getch();
return 0;
}
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
21.10.2012, 13:59     Не выводится содержимое динамического списка #37
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
#include <vcl.h>
#pragma hdrstop
#include<iostream>
#include <tchar.h>
#include <string>
//---------------------------------------------------------------------------
#include <conio.h>
 
struct lfile{
char name;
char date;
lfile*next;};
struct golovahvost {
        lfile* head; // Первый элемент (голова) списка
        lfile* tail; // Последний элемент (хвост) списка
    };
 // Создание пустого списка
void constr_list(golovahvost  &l)
{
    l.head = NULL;
}
// Проверка списка на пустоту
bool chk_empty(golovahvost  &l)
{
   if (l.head==NULL) 
    return true;
   else
    return false;
}
 // Включение в список нового компонента
void comp_in(golovahvost &l, char n, char v)
{
    lfile* c = new lfile;
    c->name= n;
    c->date= v;
    c->next = NULL;
    if (chk_empty(l))
        l.head = c;
    else
        l.tail->next = c;
    l.tail = c;
}
// Поиск компонента в списке по имени
llfile* search(golovahvost &l, char n)
{
    while (l.head != NULL)
    {
        if (l.head->name==n) //нужно учесть, что ищет он только по одному полю name
            return l.head;
        l.head = l.head->next;
    }
 cout<<"element not found"<<endl;  
 getch(); 
 exit(1);
}
 
void print(golovahvost l)
{
 while (l.head)
  {
   cout<<l.head->name<<" "<<l.head->date<<" ";
   l.head=l.head->next;
  }
}
 
main(){
setlocale(LC_ALL, "rus");
golovahvost vars; // Динамический список
constr_list(vars);
char a,b,c;
cout<<"Vvedite znachenie pervogo elementa v sozdavaemom spiske: "<<endl;
cin>>a>>b;
comp_in(vars, a, b);
cout<<endl<<"vvedite eshe element: ";
cin>>a>>b;
comp_in(vars, a, b);
print(vars);
cout<<"\nElement for search:  ";
cin>>a;
lfile* el=new lfile;
el=search(vars,a);
cout<<el->name;
cout<<" Adress: "<<el<<endl;
 
getch();
return 0;
}
lexflax
10 / 10 / 1
Регистрация: 03.04.2011
Сообщений: 627
21.10.2012, 16:29  [ТС]     Не выводится содержимое динамического списка #38
Цитата Сообщение от BumerangSP Посмотреть сообщение
cout<<el->name;
cout<<" Adress: "<<el<<endl;
выводит адрес как я понял какой то... а как именно содерживое вывести?
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
21.10.2012, 16:36     Не выводится содержимое динамического списка #39
lexflax, выводит содержимое (cout<<el->name) и его адрес (cout<<" Adress: "<<el<<endl).
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.10.2012, 16:43     Не выводится содержимое динамического списка
Еще ссылки по теме:

Создать шаблон динамического списка C++
Не выводится содержимое массива C++
C++ Сортировка динамического линейного списка

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

Или воспользуйтесь поиском по форуму:
lexflax
10 / 10 / 1
Регистрация: 03.04.2011
Сообщений: 627
21.10.2012, 16:43  [ТС]     Не выводится содержимое динамического списка #40
при поиске выводит имя первого элемента , а ввожу найти имя второго элемента
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
struct lfile{
char name;
char date;
lfile*next;};
struct golovahvost {
        lfile* head; // Первый элемент (голова) списка
        lfile* tail; // Последний элемент (хвост) списка
    };
 // Создание пустого списка
void constr_list(golovahvost  &l)
{
    l.head = NULL;
}
// Проверка списка на пустоту
bool chk_empty(golovahvost  &l)
{
    return (l.head==NULL);
}
 // Включение в список нового компонента
void comp_in(golovahvost &l, char n, char v)
{
    lfile* c = new lfile();
    c->name= n;
    c->date= v;
    c->next = NULL;
    if (chk_empty(l))
        l.head = c;
    else
        l.tail->next = c;
    l.tail = c;
}
// Поиск компонента в списке по имени
lfile* search(golovahvost &l, char n)
{
    while (l.head != NULL)
    {
        if (l.head->name!=n)
            return l.head;
        l.head = l.head->next;
    }
    return l.head;
}
 
main(){
setlocale(LC_ALL, "rus");
golovahvost vars; // Динамический список
constr_list(vars);
char a,b;
lfile*k=new lfile;
cout<<"Vvedite znachenie pervogo elementa v sozdavaemom spiske: "<<endl;
cin>>a>>b;
comp_in(vars,a,b);
cout<<endl<<"vvedite eshe element: ";
cin>>a>>b;
comp_in(vars,a,b);
cout<<"naiti"<<endl;
cin>>a;
k=search(vars,a);
cout<<k->name;
getch();
return 0;
}
Yandex
Объявления
21.10.2012, 16:43     Не выводится содержимое динамического списка
Ответ Создать тему
Опции темы

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