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

У меня сейчас экзамен кто как может hel_p программа на массивы. - C++

Восстановить пароль Регистрация
 
stels009
 Аватар для stels009
15 / 15 / 0
Регистрация: 05.04.2011
Сообщений: 401
25.01.2012, 09:07     У меня сейчас экзамен кто как может hel_p программа на массивы. #1
Написать программу заполнения одномерного массива случайными числами из заданного диапазона. Из полученного массива все четные положительные числа занести во второй массив, а все не четные отрицательные в третий. В каждом из полученных массивов подсчитать количество инверсий. Определить во втором массиве количество элементов являющихся степенью 5. Второй и Третий массивы каждый записать в отдельный файл.

Часть программы я сделаю сам но у меня затруднение на счет инверсии и ещеб мне хатяб 1 метод сортировки.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
25.01.2012, 09:24     У меня сейчас экзамен кто как может hel_p программа на массивы. #2
Цитата Сообщение от stels009 Посмотреть сообщение
В каждом из полученных массивов подсчитать количество инверсий
Не понял, о чём речь. Лучше уточните у преподавателя (или подождём кого-нибудь более проницательного).

Цитата Сообщение от stels009 Посмотреть сообщение
метод сортировки
Вот пузырьковая:
C++
1
2
3
4
5
6
7
8
template<typename T>
void bubble_sort(T *arr, size_t size)
{
    for (size_t i = 0; i < size; ++i)
        for (size_t j = 1; j < size - i; ++j)
            if (arr[j - 1] > arr[j])
                std::swap(arr[j - 1], arr[j]);
}
stels009
 Аватар для stels009
15 / 15 / 0
Регистрация: 05.04.2011
Сообщений: 401
25.01.2012, 09:39  [ТС]     У меня сейчас экзамен кто как может hel_p программа на массивы. #3
Я так понимаю что инверсию надо подсчитать во 2 и 3 массиве.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
25.01.2012, 09:41     У меня сейчас экзамен кто как может hel_p программа на массивы. #4
stels009, это сложно не понять. Я не понял, что именно надо подсчитать. Только не говорите "количество инверсий".
stels009
 Аватар для stels009
15 / 15 / 0
Регистрация: 05.04.2011
Сообщений: 401
25.01.2012, 10:46  [ТС]     У меня сейчас экзамен кто как может hel_p программа на массивы. #5
Вообщем вот шаблон по катором я сейчас делаю вообщем сейчас надо отсортировать на четность и не четность вроде просто ноя чета застрял место указал стрелками.

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
#include<iostream>  
#include<iomanip>
#include<math.h>
#include<conio.h>
#include<String.h>
#include<ctype.h>
#include<stdlib.h>
#include<windows.h>
using namespace std;   
 
 
void sort(int* a, int n)
{
    for ( int i = 1; i < n; i++ ) // отсчитываем проходы по массиву
        for ( int j = 0; j < n-i; j++ ) // проходим по массиву
        {   
            int er=0;
            er = a[j] % 2
                if(er = 0)
                {
                    for(n=0;<<<<<<<<<<<<<<<<<<<<<<<
                }
        }
}
 
int main()
{   
    if(SetConsoleCP(1251)==0)
    {
        cerr<<"Fialed to set codepage!"<<endl;
    }
    if(SetConsoleOutputCP(1251)==0)
    {
        cerr<<"Failed to set OUTPUT page!"<<endl;
    }   
 
int n=50;
cout<<"Введите размер массива: ";
cin>>n;
    int *a=new int[n];
    int *b=new int[n];
    
    // заполняем массив случайными числами и выводим на экран
int RANGE_MIN = 0; // Минимальный элемент
cout<<"Введите минимальный дапазон: ";
cin>>RANGE_MIN;
int RANGE_MAX = 99; // Максимальный элемент
cout<<"Введите максимальный диапазон: ";
cin>>RANGE_MAX;
cout<<"Исходный массив:\n";
    //Пример взят из справки ms-help: //MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.en/dv_vccrt/html/75d9df25-7aaf-4a88-b940-2775559634e8.htm
    for ( int i = 0; i < n; i++ )
    {
        a[i] = (int)(((double) rand() / (double) RAND_MAX) * RANGE_MAX + RANGE_MIN); 
        cout << setw(4) << a[i]; 
    }
    cout <<endl;
// Вызываем функцию сортировки и передаем ей указатель на массив и размер массива:
    sort( a, n); 
    printf("\nМассив, отсортированный по возрастанию:\r\n");
    // для вывода массива на экран требуется цикл:
    for (int i = 0; i < n; i++)
    {
        printf("%4d", a[i]); // выводим элемент массива на экран
    }
    printf("\r\n"); 
    _getch();
    return 0;
}
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
25.01.2012, 10:56     У меня сейчас экзамен кто как может hel_p программа на массивы. #6
stels009, блин, вы же на экзамене! Вам помощь нужна или нет? Если нет, то зачем мы тут беседы ведём? А если нужна, то выражайте мысли чётче, пожалуйста. Что значит "отсортировать на чётность и нечётность"?
-=ЮрА=-
Заблокирован
Автор FAQ
25.01.2012, 11:12     У меня сейчас экзамен кто как может hel_p программа на массивы. #7
Цитата Сообщение от stels009 Посмотреть сообщение
аписать программу заполнения одномерного массива случайными числами из заданного диапазона. Из полученного массива все четные положительные числа занести во второй массив, а все не четные отрицательные в третий. В каждом из полученных массивов подсчитать количество инверсий. Определить во втором массиве количество элементов являющихся степенью 5. Второй и Третий массивы каждый записать в отдельный файл.
- ниже код на Си
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
#define n1 25
#define beg -10
#define end 120
 
int sortarr(int n, int * arr)//Îòñîðòèðóåò Г¬Г*Г±Г±ГЁГў ГЁ âîçâðГ*ГІГЁГІ ÷èñëî ïåðåñòГ*Г*îâîê
//ГЄГ*ГЄ Гї ГЇГ®Г*ГїГ« èìåГ*Г*Г® ÷èñëî ïåðåñòГ*Г*îâîê ГЇГ®Г*ГЁГ¬Г*ГҐГІГ±Гї ïîä ГЁГ*âåðñèÿìè
{
    int i, j, buf, count = 0;
    for(    i = 0; i < n; i++)
    for(j = i + 1; j < n; j++)
    {
        if(arr[i] < arr[j])
        {
            buf = arr[i];
            arr[i] = arr[j];
            arr[j] = buf;
            count = count + 1;
        }
    }
    return count;
}
 
int main()
{
    int i;
    //ÑêГ*æåì Г¬Г*Г±Г±ГЁГўГ» Г¬Г*ГЄГ± ГЁГ§ n1 ýëåìåГ*òîâ
    int arr1[n1];
    int arr2[n1];
    int arr3[n1];
    //ÄåéñòâèòåëüГ*îå ÷èñëî ýëåìåГ*òîâ Гў Г¬Г*Г±Г±ГЁГўГ*Гµ
    int n2 = 0;//ÏîêГ* ìû Г*ГҐ Г§Г*Г*ГҐГ¬ ñêîëüêî áóäåò Г·ГЁГ±ГҐГ« ГўГ® 2-Г¬
    int n3 = 0;//ГЁ Гў 3-Г¬ Г¬Г*Г±Г±ГЁГўГ*Гµ
    
    
    time_t t;
    srand(time(&t));//Г€Г*Г*Г·ГҐ îò Г§Г*ГЇГіГ±ГЄГ* ГЄ Г§Г*ГЇГіГ±ГЄГі ñëó÷ Г·ГЁГ±Г«Г* áóäóò ïîâòîðÿòüñÿ
    //Ôîðìèðóåì Г¬Г*Г±Г±ГЁГўГ»
    for(i = 0; i < n1; i++)
    {
        arr1[i] = beg + rand()%(end - beg);
        if(arr1[i] % 2 == 0)
        {
            if(0 <= arr1[i])
            {
                arr2[n2] = arr1[i];
                n2 = n2 + 1;
            }
        }
        else
        {
            if(arr1[i] < 0)
            {
                arr3[n3] = arr1[i];
                n3 = n3 + 1;
            }
        }
    }
    //×èñëî ГЁГ*âåðñèé Гў Г¬Г*Г±Г±ГЁГўГ*Гµ
    int nInv1 = sortarr(n1, arr1);
    int nInv2 = sortarr(n2, arr2);
    int nInv3 = sortarr(n3, arr3);
    printf("Array 1\n");
    for(i = 0; i < n1; i++)
        printf("%d ",arr1[i]);
    printf("Num of inversions\n");
    printf("arr1 : %d\n",nInv1);
    printf("arr2 : %d\n",nInv2);
    printf("arr3 : %d\n",nInv3);
    system("pause");
    return 0;
}
Миниатюры
У меня сейчас экзамен кто как может hel_p программа на массивы.  
stels009
 Аватар для stels009
15 / 15 / 0
Регистрация: 05.04.2011
Сообщений: 401
25.01.2012, 11:13  [ТС]     У меня сейчас экзамен кто как может hel_p программа на массивы. #8
Это значит есть 1 исходный массив из не го надо взять все четные положительные во 2й массив засунуть а е четные отрицательные в 3й.
-=ЮрА=-
Заблокирован
Автор FAQ
25.01.2012, 11:15     У меня сейчас экзамен кто как может hel_p программа на массивы. #9
stels009, в моем коде нет лишь записи в файл, думаю это глубоко тривиальная задача, в остальном думаю это как раз то что вам надо...
Успехов вам на экзамене!

Добавлено через 45 секунд
stels009,
Цитата Сообщение от stels009 Посмотреть сообщение
Это значит есть 1 исходный массив из не го надо взять все четные положительные во 2й массив засунуть а е четные отрицательные в 3й.
- смотри мой код там уже всё это есть + сортировка с подсчётом перестановок(инверсий)

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
if(arr1[i] % 2 == 0)
* * * * * * * * {
* * * * * * * * * * * * if(0 <= arr1[i])
* * * * * * * * * * * * {
* * * * * * * * * * * * * * * * arr2[n2] = arr1[i];
* * * * * * * * * * * * * * * * n2 = n2 + 1;
* * * * * * * * * * * * }
* * * * * * * * }
* * * * * * * * else
* * * * * * * * {
* * * * * * * * * * * * if(arr1[i] < 0)
* * * * * * * * * * * * {
* * * * * * * * * * * * * * * * arr3[n3] = arr1[i];
* * * * * * * * * * * * * * * * n3 = n3 + 1;
* * * * * * * * * * * * }
* * * * * * * * }
stels009
 Аватар для stels009
15 / 15 / 0
Регистрация: 05.04.2011
Сообщений: 401
25.01.2012, 11:16  [ТС]     У меня сейчас экзамен кто как может hel_p программа на массивы. #10
Вот примерно так я сделал
C++
1
2
3
4
5
6
7
8
9
10
11
            er = a[j] / 2;
                if(er != 0)
                {
                    ++tv;
                    c[tv]=a[j];
                }
                else
                {
                    ++tt;
                    b[tt]= a[j];
                }
-=ЮрА=-
Заблокирован
Автор FAQ
25.01.2012, 11:18     У меня сейчас экзамен кто как может hel_p программа на массивы. #11
stels009, ты что прикалываешся???Я кому старался - пост 7???
Ну не хочешь брать готовый код, сдавай сам...
stels009
 Аватар для stels009
15 / 15 / 0
Регистрация: 05.04.2011
Сообщений: 401
25.01.2012, 11:32  [ТС]     У меня сейчас экзамен кто как может hel_p программа на массивы. #12
-=ЮрА=- простите но просто в институте иннет тормазнутый воопщем я взял ваш пример вот что получилось:
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
#include<iostream>  
#include<iomanip>
#include<math.h>
#include<conio.h>
#include<String.h>
#include<ctype.h>
#include<stdlib.h>
#include<windows.h>
using namespace std;   // Используем стандартное пространство имён
 
/* Функция, выполняющая перестановку значений двух переменных (обратите внимание на то, что аргументы должны быть объявлены как ссылки): */
void swap(int& a, int& b)
{
        int c;
        c=a; a=b; b=c;
}
 
void sort(int* a, int n, int* b, int* c)
{int er=0,tt=0, tv=0, rr=0;
    for ( int i = 1; i < n; i++ ) // отсчитываем проходы по массиву
        for ( int j = 0; j < n-i; j++) // проходим по массиву
        {   
        if(a[i] % 2 == 0)
            {
                if(0 <= a[i])
                {
                b[tt] = a[i];
                tv = tv + 1;
                }
            }
            else
            {
                if(a[i] < 0)
                {
                c[rr] = a[i];
                rr = rr + 1;
                }
            }
        
        }
}
 
int main()
{   
    if(SetConsoleCP(1251)==0)
    {
        cerr<<"Fialed to set codepage!"<<endl;
    }
    if(SetConsoleOutputCP(1251)==0)
    {
        cerr<<"Failed to set OUTPUT page!"<<endl;
    }   
 
int n=50;
cout<<"Введите размер массива: ";
cin>>n;
    int *a=new int[n];
    int *b=new int[n];// объявляем массив из 50 элементов
    int *c=new int[n];
    // заполняем массив случайными числами и выводим на экран
int RANGE_MIN = 0; // Минимальный элемент
cout<<"Введите минимальный дапазон: ";
cin>>RANGE_MIN;
int RANGE_MAX = 99; // Максимальный элемент
cout<<"Введите максимальный диапазон: ";
cin>>RANGE_MAX;
cout<<"Исходный массив:\n";
    //Пример взят из справки ms-help: //MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.en/dv_vccrt/html/75d9df25-7aaf-4a88-b940-2775559634e8.htm
    for ( int i = 0; i < n; i++ )
    {
        a[i] = (int)(((double) rand() / (double) RAND_MAX) * RANGE_MAX + RANGE_MIN); // случайные числа из диапазона [-20, 30] 
        cout << setw(4) << a[i]; /* выводим на экран элемент массива (ширина поля вывода – 4 */
    }
    cout <<endl;
// Вызываем функцию сортировки и передаем ей указатель на массив и размер массива:
    sort( a, n, b, c); 
    printf("\nМассив с четными числами:\r\n");
    // для вывода массива на экран требуется цикл:
    for (int i = 0; i < n; i++)
    {
        printf("%4d", b[i]); // выводим элемент массива на экран
    }
        printf("\nМассив с не четными числами:\r\n");
    // для вывода массива на экран требуется цикл:
    for (int i = 0; i < n; i++)
    {
        printf("%4d", c[i]); // выводим элемент массива на экран
    }
    printf("\r\n"); // перевод курсора в начало следующей строки
    _getch();
    return 0;
}
но при выходе он пишит иероглифы...
-=ЮрА=-
Заблокирован
Автор FAQ
25.01.2012, 11:51     У меня сейчас экзамен кто как может hel_p программа на массивы. #13
stels009, твой код ужасен и раздут до ужаса (не обижайся), сейчас перепишу свой на плюсах...Сортировку твою вообще не понял, мой прямой выбор прекрасно сортирует (буду писать именно с ним)
Цитата Сообщение от stels009 Посмотреть сообщение
if(SetConsoleCP(1251)==0)
* * * * {
* * * * * * * * cerr<<"Fialed to set codepage!"<<endl;
* * * * }
* * * * if(SetConsoleOutputCP(1251)==0)
* * * * {
* * * * * * * * cerr<<"Failed to set OUTPUT page!"<<endl;
* * * * }
- есть простая функция system("chcp 1251"); которая заменит всё это, на крайняк измени шрифт своего приложения на LucindaConsole
stels009
 Аватар для stels009
15 / 15 / 0
Регистрация: 05.04.2011
Сообщений: 401
25.01.2012, 11:55  [ТС]     У меня сейчас экзамен кто как может hel_p программа на массивы. #14
всем спс получил д
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.01.2012, 12:05     У меня сейчас экзамен кто как может hel_p программа на массивы.
Еще ссылки по теме:

У меня экзамен Вот прогграмы C++
Народ! Какая то у меня не понятка с проектом 100 раз писал а сейчас лажа C++
Может кто разъяснить как выполнить? C++

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

Или воспользуйтесь поиском по форуму:
-=ЮрА=-
Заблокирован
Автор FAQ
25.01.2012, 12:05     У меня сейчас экзамен кто как может hel_p программа на массивы. #15
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
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
 
int sortarr(int n, int * arr)//Îòñîðòèðóåò Г¬Г*Г±Г±ГЁГў ГЁ âîçâðГ*ГІГЁГІ ÷èñëî ïåðåñòГ*Г*îâîê
//ГЄГ*ГЄ Гї ГЇГ®Г*ГїГ« èìåГ*Г*Г® ÷èñëî ïåðåñòГ*Г*îâîê ГЇГ®Г*ГЁГ¬Г*ГҐГІГ±Гї ïîä ГЁГ*âåðñèÿìè
{
    int i, j, buf, count = 0;
    for(    i = 0; i < n; i++)
    for(j = i + 1; j < n; j++)
    {
        if(arr[i] < arr[j])
        {
            buf = arr[i];
            arr[i] = arr[j];
            arr[j] = buf;
            count = count + 1;
        }
    }
    return count;
}
 
int main()
{
    system("chcp 1251");//Ðóññèôèöèðóåì
    //ÑêГ*æåì Г¬Г*Г±Г±ГЁГўГ» Г¬Г*ГЄГ± ГЁГ§ n1 ýëåìåГ*òîâ
    int i, n1, beg, end;
    cout<<"Ââåäèòå Г°Г*çìåð Г¬Г*Г±Г±ГЁГўГ*: ";cin>>n1;
    int *arr1 = new int[n1];
    int *arr2 = new int[n1];
    int *arr3 = new int[n1];
    cout<<"Ââåäèòå äèГ*ГЇГ*çîГ* ГЈГҐГ*ГҐГ°Г*öèè [beg;end]\n";
    cout<<"beg = ";cin>>beg;
    cout<<"end = ";cin>>end;
    //ÄåéñòâèòåëüГ*îå ÷èñëî ýëåìåГ*òîâ Гў Г¬Г*Г±Г±ГЁГўГ*Гµ
    int n2 = 0;//ÏîêГ* ìû Г*ГҐ Г§Г*Г*ГҐГ¬ ñêîëüêî áóäåò Г·ГЁГ±ГҐГ« ГўГ® 2-Г¬
    int n3 = 0;//ГЁ Гў 3-Г¬ Г¬Г*Г±Г±ГЁГўГ*Гµ
 
    time_t t;
    srand(time(&t));//Г€Г*Г*Г·ГҐ îò Г§Г*ГЇГіГ±ГЄГ* ГЄ Г§Г*ГЇГіГ±ГЄГі ñëó÷ Г·ГЁГ±Г«Г* áóäóò ïîâòîðÿòüñÿ
    //Ôîðìèðóåì Г¬Г*Г±Г±ГЁГўГ»
    cout<<"ÈñõîäГ*ûé Г¬Г*Г±Г±ГЁГў\n";
    for(i = 0; i < n1; i++)
    {
        arr1[i] = beg + rand()%(end - beg);
        cout<<arr1[i]<<" ";
        if(arr1[i] % 2 == 0)
        {
            if(0 <= arr1[i])
            {
                arr2[n2] = arr1[i];
                n2 = n2 + 1;
            }
        }
        else
        {
            if(arr1[i] < 0)
            {
                arr3[n3] = arr1[i];
                n3 = n3 + 1;
            }
        }
    }
    //×èñëî ГЁГ*âåðñèé Гў Г¬Г*Г±Г±ГЁГўГ*Гµ
    int nInv1 = sortarr(n1, arr1);
    int nInv2 = sortarr(n2, arr2);//åñëè n2 == 0 ГІГ® öèêëû ГґГіГ*êöèè ïðîñòî Г*ГҐ îòðГ*áîòГ*ГѕГІ
    int nInv3 = sortarr(n3, arr3);//Г*Г*Г*ëîãè÷Г*Г®
    cout<<"\nÎòñîðòèðîâГ*Г*Г*ûé 1 Г¬Г*Г±Г±ГЁГў\n";
    for(i = 0; i < n1; i++)
        printf("%d ",arr1[i]);
    cout<<"\n×èñëî ГЁГ*âåðñèé : "<<nInv1<<endl;
    if(n2 == 0)
        cout<<"ГЊГ*Г±Г±ГЁГў Г*ГҐ ñîæäåðæèò Г·ВёГІГ*ûõ ïîëîæèòåëüГ*ûõ\n";
    else
    {
        cout<<"\nÎòñîðòèðîâГ*Г*Г*ûé Г¬Г*Г±Г±ГЁГў c Г·ВёГІГ*ûìè Г·ГЁГ±Г«Г*ìè\n";
        for(i = 0; i < n2; i++)
            cout<<arr2[i]<<" ";
        cout<<"\n×èñëî ГЁГ*âåðñèé : "<<nInv2<<endl;
    }
    if(n3 == 0)
        cout<<"ГЊГ*Г±Г±ГЁГў Г*ГҐ ñîæäåðæèò Г*ГҐГ·ВёГІГ*ûõ îòðèöГ*òåëüГ*ûõ\n";
    else
    {
        cout<<"\nÎòñîðòèðîâГ*Г*Г*ûé Г¬Г*Г±Г±ГЁГў c Г*ГҐГ·ВёГІГ*ûõ Г·ГЁГ±Г«Г*ìè\n";
        for(i = 0; i < n3; i++)
            cout<<arr3[i]<<" ";
        cout<<"\n×èñëî ГЁГ*âåðñèé : "<<nInv3<<endl;
    }
    system("pause");
    delete [] arr1;
    delete [] arr2;
    delete [] arr3;
    return 0;
}
Миниатюры
У меня сейчас экзамен кто как может hel_p программа на массивы.  
Вложения
Тип файла: rar main.cpp.rar (973 байт, 2 просмотров)
Yandex
Объявления
25.01.2012, 12:05     У меня сейчас экзамен кто как может hel_p программа на массивы.
Ответ Создать тему
Опции темы

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