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

Надо чтобы, как только встречаются данные о женщине, программа преуменьшала ее возраст - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.76
lav88
2 / 2 / 0
Регистрация: 29.01.2010
Сообщений: 59
05.06.2011, 21:17     Надо чтобы, как только встречаются данные о женщине, программа преуменьшала ее возраст #1
Имеется структура с полями фио, пол и возраст, место работы. Мне надо что бы как только встречаются данные о женщине программа преуменьшала ее возвраст. Как можно по полю пол сделать, что бы программа определяла мужчина это или женщина? (поле пол у меня типа char и все данные у меня считываются из txt файла)

Добавлено через 4 часа 20 минут
Ну что может кто-нибудь помочь мне?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.06.2011, 21:17     Надо чтобы, как только встречаются данные о женщине, программа преуменьшала ее возраст
Посмотрите здесь:

Имеется N мужчин и N женщин. Имеются также данные о предпочтениях каждого мужчины к каждой женщине. C++
Имеется N мужчин и N женщин. Имеются также данные о предпочтениях каждого мужчины к каждой женщине. C++
Из заданной символьной строки выбрать те символы, которые встречаются в ней только один раз, в том порядке, в котором они встречаются в тексте C++
C++ напечатать только те символы, которые встречаются только в одном из слов
Нужно выяснить, какие символы встречаются в обеих строках, так же и те, которые встречаются только в одной C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Amarted
 Аватар для Amarted
157 / 19 / 2
Регистрация: 26.02.2010
Сообщений: 56
05.06.2011, 22:00     Надо чтобы, как только встречаются данные о женщине, программа преуменьшала ее возраст #2
А что собственно сложного-то?
допустим структуру:
C++
1
2
3
4
5
6
7
struct men
{
char* name;
int age;
char sex;
char* work;
}
Бонально проверяем пол( w - женский, m - мужской), если w то отнимаем возраст ...:
C++
1
2
3
4
men Janna;
//считываются данные с файла...
if (Janna.sex == 'w')
    cout<<Janna.age-3;
В чём проблема?
Либо я что-то не так понял?
lav88
2 / 2 / 0
Регистрация: 29.01.2010
Сообщений: 59
05.06.2011, 22:19  [ТС]     Надо чтобы, как только встречаются данные о женщине, программа преуменьшала ее возраст #3
я так и делал примерно, но он у меня на эту строчку ругается постоянно
if(spisok[x].sex == 'w')
вот этому я спрашиваю, то что может делаю что то не то

Добавлено через 4 минуты
а когда эту же строчку меняю, что бы он выбор делал по возрасту
if(spisok[x].age>40)
то все работает и никак я не могу понять что не так
lav88
2 / 2 / 0
Регистрация: 29.01.2010
Сообщений: 59
06.06.2011, 21:00  [ТС]     Надо чтобы, как только встречаются данные о женщине, программа преуменьшала ее возраст #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
#include <stdio.h>
#include <conio.h>
main(){
//clrscr;
struct sotrudniki {
int nomer;
char fam[15];
char name[15];
char patronymic[15];
char sex;
int age;
}
spisok[10];
FILE *infile,*outfile;
infile=fopen("D:\spisok.txt","r");
if (infile==NULL){
printf("osibka\n");
getchar();
return(0);}
outfile=fopen("D:\spisok2.txt","w");
int x=-1;
char c,c1[50];
 
while (!feof(infile)){
x++;
fscanf(infile,"%d%s%s%s%s%d\n",&spisok[x].nomer,&spisok[x].fam,
&spisok[x].name,&spisok[x].patronymic,&spisok[x].sex,&spisok[x].age);
}
printf("\spisok:\n");
x=0;
while(x!=10){
printf("%2d %14s %10s %15s %3s %3d\n",spisok[x].nomer,spisok[x].fam,
spisok[x].name,spisok[x].patronymic,spisok[x].sex,spisok[x].age);
x++;}
printf("women\n");
x=0;
while(x!=10){
    if(spisok[x].sex=='w')
    {
printf("%2d %14s %10s %15s %3s %3d\n",spisok[x].nomer,spisok[x].fam,
spisok[x].name,spisok[x].patronymic,spisok[x].sex,spisok[x].age);
fprintf(outfile,"%2d %14s %10s %15s %3s %3d\n",spisok[x].nomer,spisok[x].fam,
spisok[x].name,spisok[x].patronymic,spisok[x].sex,spisok[x].age);
}
x++;}
 
fclose(outfile);
getchar();
}
Миниатюры
Надо чтобы, как только встречаются данные о женщине, программа преуменьшала ее возраст  
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
06.06.2011, 23:04     Надо чтобы, как только встречаются данные о женщине, программа преуменьшала ее возраст #5
Цитата Сообщение от lav88 Посмотреть сообщение
я так и делал примерно, но он у меня на эту строчку ругается постоянно
if(spisok[x].sex == 'w')

Не по теме:

Ругается на секс с женщиной?
Вы женщина?


Тут, возможно, пол ещё не был символьной переменной...

C
1
2
fscanf(infile,"%d%s%s%s%s%d\n",&spisok[x].nomer,&spisok[x].fam,
&spisok[x].name,&spisok[x].patronymic,&spisok[x].sex,&spisok[x].age);
Для fam, name и patronymic оператор & использовать не надо, так как это уже указатели.
А раз sex переменная, а не массив, то, наверное, для неё нужен шаблон %c

Добавлено через 2 минуты
И чтобы обратный слеш в строке воспринимался именно как обратный слеш, его надо бы удваивать.
lav88
2 / 2 / 0
Регистрация: 29.01.2010
Сообщений: 59
14.06.2011, 02:47  [ТС]     Надо чтобы, как только встречаются данные о женщине, программа преуменьшала ее возраст #6
помоги мне еще с этой программой. Мне надо отсортировать данную структуру по возрасту. Я произвел отдельно сортировку возраста, а как теперь по итогу сортировки мне поменять и строки местами, а то в структуре меняется только все данные остаются теми же значениями, только возраст отсортирован
код программы
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
// 2.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
 
int main(array<System::String ^> ^args)
{
    struct sotrudniki {
int nomer;
char fam[15];
char name[15];
char patronymic[15];
char sex;
int age;
}
 
spisok[10];
FILE *infile,*outfile;
infile=fopen("f:\spisok.txt","r");
if (infile==NULL){
printf("osibka\n");
getchar();
return(0);
}
outfile=fopen("f:\spisok2.txt","w");
int x=-1;
char c,c1[50];
 
while (!feof(infile)){
x++;
fscanf(infile,"%d %s %s %s %c %d\n",&spisok[x].nomer,spisok[x].fam,
spisok[x].name,spisok[x].patronymic,&spisok[x].sex,&spisok[x].age);
}
printf("\spisok:\n");
x=0;
while(x < 10){
printf("%2d %14s %10s %15s %3c %3d\n",spisok[x].nomer,spisok[x].fam,
spisok[x].name,spisok[x].patronymic,spisok[x].sex,spisok[x].age);
x++;}
printf("posle ymen'sheniya vozvrasta woman\n");
x=0;
while(x < 10){
    if(spisok[x].sex=='w')
    {
 spisok[x].age=spisok[x].age-15;
}
printf("%2d %14s %10s %15s %3c %3d\n",spisok[x].nomer,spisok[x].fam,
spisok[x].name,spisok[x].patronymic,spisok[x].sex,spisok[x].age);
fprintf(outfile,"%2d %14s %10s %15s %3c %3d\n",spisok[x].nomer,spisok[x].fam,
spisok[x].name,spisok[x].patronymic,spisok[x].sex,spisok[x].age);
x++;}
for(int i = 0; i < x; i++)     
printf("%3d",spisok[i].age);
for(int i = 0; i < x; i++){
      for(int j = 0; j <=i; j++)
       {
             if(spisok[j].age < spisok[j+1].age)
           {
                 int foo = spisok[j].age;
                      spisok[j].age = spisok[j+1].age;
                       spisok[j+1].age = foo;
          }
            
      }
      
}
printf("\n");
for(int j = 0; j < x; j++)  
   printf("%2d %14s %10s %15s %3c %3d\n",spisok[j].nomer,spisok[j].fam,
spisok[j].name,spisok[j].patronymic,spisok[j].sex,spisok[j].age);
   
fclose(outfile);
getchar();
    return 0;
}
Добавлено через 3 часа 26 минут
почему я не могу произвести акую операцию spisok[j].name = spisok[j+1].name;
выдает ошибку error C2106: =: левый операнд должен быть левосторонним значением
как ее можно исправить?
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
14.06.2011, 02:54     Надо чтобы, как только встречаются данные о женщине, программа преуменьшала ее возраст #7
Цитата Сообщение от lav88 Посмотреть сообщение
почему я не могу произвести акую операцию spisok[j].name = spisok[j+1].name;
выдает ошибку error C2106: =: левый операнд должен быть левосторонним значением
как ее можно исправить?
Потому, что это массив. Раз там ASCIIZ-строка, то поможет функция strcpy. Для массивов общего вида потребуется memcpy (или memmove)

Добавлено через 3 минуты
Правда вместо strcpy правильнее пользоваться только её безопасной версией strncpy
tylix
14.06.2011, 03:04
  #8

Не по теме:


Какой хороший прогмер, все девушки будут его любить... Они вводят что им 30, а прога раз, и омолаживает на лет так 10 )

lav88
2 / 2 / 0
Регистрация: 29.01.2010
Сообщений: 59
14.06.2011, 09:07  [ТС]     Надо чтобы, как только встречаются данные о женщине, программа преуменьшала ее возраст #9
а можете показать на коде как функцией strcpy пользоваться?
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
14.06.2011, 09:14     Надо чтобы, как только встречаются данные о женщине, программа преуменьшала ее возраст #10
C++
1
2
3
4
5
6
7
8
#include <iostream>
#include <cstring>
int main(){
    char s1[]="qwerty",s2[strlen(s1)];
    strcpy(s2,s1);
    std::cout << s2;
    return 0;
}
Добавлено через 32 секунды
Либо так
C++
1
2
3
4
5
6
7
#include <iostream>
#include <cstring>
int main(){
    char s1[]="qwerty",s2[strlen(s1)];
    std::cout << strcpy(s2,s1); //s2 при этом изменяется
    return 0;
}
lav88
2 / 2 / 0
Регистрация: 29.01.2010
Сообщений: 59
14.06.2011, 09:21  [ТС]     Надо чтобы, как только встречаются данные о женщине, программа преуменьшала ее возраст #11
а как мне сделать с помощью него, что бы 2 текстовых массива поменялись месами(а не олько что бы один заменился другим)?
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
14.06.2011, 09:28     Надо чтобы, как только встречаются данные о женщине, программа преуменьшала ее возраст #12
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include <cstring>
int main(){
    char s1[]="qwerty",s2[]="abcdef",s3[strlen(s1)];
    strcpy(s3,s1);
    strcpy(s1,s2);
    strcpy(s2,s3);
    std::cout << s1 << std::endl << s2; 
    return 0;
}
dihlofos
Бродяга
 Аватар для dihlofos
302 / 256 / 17
Регистрация: 27.08.2010
Сообщений: 553
14.06.2011, 09:40     Надо чтобы, как только встречаются данные о женщине, программа преуменьшала ее возраст #13
diagon, хммм, а вот размер s3 разве не должен быть strlen(s1)+1? Там же ещё под нуль-символ место нужно.
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
14.06.2011, 09:44     Надо чтобы, как только встречаются данные о женщине, программа преуменьшала ее возраст #14
В случае с обычным свапом это не критично вроде...
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include <cstring>
int main(){
        char s1[]="qwerty",s2[]="abcdef",s3[strlen(s1)];
        strcpy(s3,s1);
        strcpy(s1,s2);
        strcpy(s2,s3);
        std::cout << (int) s1[strlen(s1)] << ' ' << (int) s1[strlen(s1)];
        return 0;
}
В g++ вывод: 0 0
Т.е. в концах строк стоят нули. И свапаются нормально.
Хотя на всякий случай лучше давать место под нуль, тут согласен.
pito211
 Аватар для pito211
186 / 173 / 8
Регистрация: 22.03.2010
Сообщений: 612
14.06.2011, 10:16     Надо чтобы, как только встречаются данные о женщине, программа преуменьшала ее возраст #15
очень сомнительно, что первый вариант рабочий. Размер массива должен быть известен на момент компиляции, то есть должно быть константное выражение
lav88
2 / 2 / 0
Регистрация: 29.01.2010
Сообщений: 59
14.06.2011, 10:23  [ТС]     Надо чтобы, как только встречаются данные о женщине, программа преуменьшала ее возраст #16
я попытался написать в своей программе, то что вы мне показали, но он мне пишет то что не возможно преобразовать char[] в char [15]
Может кто то покажет на моем коде как это должно работать?
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
14.06.2011, 10:53     Надо чтобы, как только встречаются данные о женщине, программа преуменьшала ее возраст #17
Цитата Сообщение от pito211 Посмотреть сообщение
очень сомнительно, что первый вариант рабочий. Размер массива должен быть известен на момент компиляции, то есть должно быть константное выражение
Оно не константное разве? g++ такое понимает, как остальные - хз
Размер s1 вычисляется на этапе компиляции, как и strlen(s1)
я попытался написать в своей программе, то что вы мне показали, но он мне пишет то что не возможно преобразовать char[] в char [15]
Может кто то покажет на моем коде как это должно работать?
Попробуйте объявить так
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include <cstring>
int main(){
        char s1[7]="qwerty",s2[7]="abcdef",s3[7];
        strcpy(s3,s1);
        strcpy(s1,s2);
        strcpy(s2,s3);
        std::cout << s1 << std::endl << s2;
        return 0;
}
pito211
 Аватар для pito211
186 / 173 / 8
Регистрация: 22.03.2010
Сообщений: 612
14.06.2011, 11:53     Надо чтобы, как только встречаются данные о женщине, программа преуменьшала ее возраст #18
Цитата Сообщение от diagon Посмотреть сообщение
Оно не константное разве? g++ такое понимает, как остальные - хз
нет не константное
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
14.06.2011, 12:31     Надо чтобы, как только встречаются данные о женщине, программа преуменьшала ее возраст #19
Имеется в виду, что оно вычисляется на этапе компиляции, так же как и s1[]=... , к примеру.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.06.2011, 12:57     Надо чтобы, как только встречаются данные о женщине, программа преуменьшала ее возраст
Еще ссылки по теме:

Из заданной символьной строки выбрать те символы ,которык встречаются в ней только один раз,в том порядке, в котором они встречаются в тексте и в том C++
Выбрать из текста только те символы, которые встречаются в нем только один раз C++
C++ Программа работает только с одним разрешением экрана, как сделать чтобы она была универсальна

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

Или воспользуйтесь поиском по форуму:
pito211
 Аватар для pito211
186 / 173 / 8
Регистрация: 22.03.2010
Сообщений: 612
14.06.2011, 12:57     Надо чтобы, как только встречаются данные о женщине, программа преуменьшала ее возраст #20
нет, strlen это обычная сишная функция, вызывается как и все остальные. Размер s1 известен на этапе компиляции, размер s2 нет

Assembler
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
char s1[]="qwerty",s3[strlen(s1)],s2[]="abcdef";
0x004013f5  <+69>:              lea    -0x47(%ebp),%ebx
0x004013f8  <+72>:              mov    $0xd974ac,%edx
0x004013fd  <+77>:              mov    $0x7,%eax
0x00401402  <+82>:              mov    %ebx,%edi
0x00401404  <+84>:              mov    %edx,%esi
0x00401406  <+86>:              mov    %eax,%ecx
0x00401408  <+88>:              rep movsb %ds:(%esi),%es:(%edi)
0x0040140a  <+90>:              lea    -0x47(%ebp),%eax
0x0040140d  <+93>:              mov    %eax,(%esp)
0x00401410  <+96>:              [B]call   0xb80bb0 <strlen>[/B]
0x00401415  <+101>:             lea    -0x1(%eax),%ecx
0x00401418  <+104>:             mov    %ecx,-0x20(%ebp)
0x0040141b  <+107>:             mov    %ecx,%eax
0x0040141d  <+109>:             mov    $0x0,%edx
0x00401422  <+114>:             mov    %eax,%ebx
0x00401424  <+116>:             and    $0xff,%bh
0x00401427  <+119>:             mov    %ebx,-0x68(%ebp)
0x0040142a  <+122>:             mov    %edx,%esi
0x0040142c  <+124>:             and    $0xf,%esi
0x0040142f  <+127>:             mov    %esi,-0x64(%ebp)
0x00401432  <+130>:             mov    -0x68(%ebp),%eax
0x00401435  <+133>:             mov    -0x64(%ebp),%edx
0x00401438  <+136>:             add    $0x1,%eax
0x0040143b  <+139>:             adc    $0x0,%edx
0x0040143e  <+142>:             mov    %eax,%edi
0x00401440  <+144>:             and    $0xffffffff,%edi
0x00401443  <+147>:             mov    %edi,-0x70(%ebp)
0x00401446  <+150>:             mov    %edx,%ebx
0x00401448  <+152>:             and    $0xf,%ebx
0x0040144b  <+155>:             mov    %ebx,-0x6c(%ebp)
0x0040144e  <+158>:             mov    -0x70(%ebp),%eax
0x00401451  <+161>:             mov    -0x6c(%ebp),%edx
0x00401454  <+164>:             shld   $0x3,%eax,%edx
0x00401458  <+168>:             shl    $0x3,%eax
0x0040145b  <+171>:             mov    %eax,%esi
0x0040145d  <+173>:             and    $0xffffffff,%esi
0x00401460  <+176>:             mov    %esi,-0x78(%ebp)
0x00401463  <+179>:             mov    %edx,%edi
0x00401465  <+181>:             and    $0xf,%edi
0x00401468  <+184>:             mov    %edi,-0x74(%ebp)
0x0040146b  <+187>:             mov    -0x78(%ebp),%eax
0x0040146e  <+190>:             mov    -0x74(%ebp),%edx
0x00401471  <+193>:             mov    %ecx,%eax
0x00401473  <+195>:             mov    $0x0,%edx
0x00401478  <+200>:             mov    %eax,%ebx
0x0040147a  <+202>:             and    $0xff,%bh
0x0040147d  <+205>:             mov    %ebx,-0x80(%ebp)
0x00401480  <+208>:             mov    %edx,%esi
0x00401482  <+210>:             and    $0xf,%esi
0x00401485  <+213>:             mov    %esi,-0x7c(%ebp)
0x00401488  <+216>:             mov    -0x80(%ebp),%eax
0x0040148b  <+219>:             mov    -0x7c(%ebp),%edx
0x0040148e  <+222>:             add    $0x1,%eax
0x00401491  <+225>:             adc    $0x0,%edx
0x00401494  <+228>:             mov    %eax,%edi
0x00401496  <+230>:             and    $0xffffffff,%edi
0x00401499  <+233>:             mov    %edi,-0x88(%ebp)
0x0040149f  <+239>:             mov    %edx,%ebx
0x004014a1  <+241>:             and    $0xf,%ebx
0x004014a4  <+244>:             mov    %ebx,-0x84(%ebp)
0x004014aa  <+250>:             mov    -0x88(%ebp),%eax
0x004014b0  <+256>:             mov    -0x84(%ebp),%edx
0x004014b6  <+262>:             shld   $0x3,%eax,%edx
0x004014ba  <+266>:             shl    $0x3,%eax
0x004014bd  <+269>:             mov    %eax,%esi
0x004014bf  <+271>:             and    $0xffffffff,%esi
0x004014c2  <+274>:             mov    %esi,-0x90(%ebp)
0x004014c8  <+280>:             mov    %edx,%edi
0x004014ca  <+282>:             and    $0xf,%edi
0x004014cd  <+285>:             mov    %edi,-0x8c(%ebp)
0x004014d3  <+291>:             mov    -0x90(%ebp),%eax
0x004014d9  <+297>:             mov    -0x8c(%ebp),%edx
0x004014df  <+303>:             mov    %ecx,%eax
0x004014e1  <+305>:             inc    %eax
0x004014e2  <+306>:             add    $0xf,%eax
0x004014e5  <+309>:             add    $0xf,%eax
0x004014e8  <+312>:             shr    $0x4,%eax
0x004014eb  <+315>:             shl    $0x4,%eax
0x004014ee  <+318>:             call   0xb78864 <_alloca>
0x004014f3  <+323>:             lea    0x10(%esp),%eax
0x004014f7  <+327>:             add    $0xf,%eax
0x004014fa  <+330>:             shr    $0x4,%eax
0x004014fd  <+333>:             shl    $0x4,%eax
0x00401500  <+336>:             mov    %eax,-0x1c(%ebp)
0x00401503  <+339>:             lea    -0x4e(%ebp),%edx
0x00401506  <+342>:             mov    $0xd974b3,%ebx
0x0040150b  <+347>:             mov    $0x7,%eax
0x00401510  <+352>:             mov    %edx,%edi
0x00401512  <+354>:             mov    %ebx,%esi
0x00401514  <+356>:             mov    %eax,%ecx
0x00401516  <+358>:             rep movsb %ds:(%esi),%es:(%edi)
g++ каким то своим хитрожопым способом выделяет память для s2, я к at&t синтаксису не привык поэтому не могу понять чё он тут делает. Правда я тут вижу вызов _alloca, который выделяет память на стеке.
Yandex
Объявления
14.06.2011, 12:57     Надо чтобы, как только встречаются данные о женщине, программа преуменьшала ее возраст
Ответ Создать тему
Опции темы

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