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

Не могу спроецировать файл!!! ((( - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Что такое абстрактный объект? http://www.cyberforum.ru/cpp-beginners/thread132702.html
Что такое обстрактный объект? Как удалить символ из файла на языке С++?
C++ Работа с массивом Здравствуйте уважаемые форумчане. Вопрос у меня такой: Я в цикле провожу вычисления, у меня получается большое число, пример 123456789. Я передаю это число в функцию и счетчик. Вот в функции начинаются проблемы. В функции нужно переданное число поместить в массив таким образом чтобы число было в конце массива, т.е. перед ним были нули. Я тут что-то запутался, как это сделать помогите. ... http://www.cyberforum.ru/cpp-beginners/thread132697.html
Динамические масивы C++
Помогите пожалуста. Составить программу, которая вставляет в непустой список L, элементы которого упорядочены по не убыванию, новый элемент Е так, чтобы сохранилась упорядоченность.
C++ Строки последовательности
Дана стрка, что содержит от 1 до 30 слов, в каждом из которых от 1 до 5 строчных латинских букв, между соседними словом точка. Напечатать те слова, перед которыми в последовательности находиться только меньше, а за ними только больше( за алфавитом ) слова. Ввести с файла строку и передать таким образом, чтоб вместо знаков ? были знаки! Напишите пожалуйста прогу
C++ функции http://www.cyberforum.ru/cpp-beginners/thread132667.html
Написать функцию sogl, которая возвращает 1, если символ, полученный функцией в качестве аргумента, является согласной буквой русского алфавита, и 0 — в противном случае.
C++ Создать структуру Создать структуру винчестеры, которая содержит информацию о продаваемых в компьютерной фирме винчестерах: производитель, объем, скорость доступа, и т. д. Описать массив из таких структур и заполнить его информацией. Описать поиск в структуре по объему диска: у пользователя запрашивается необходимый ему объем и на экран выводится информация обо всех винчестерах, удовлетворяющих условию. Все... подробнее

Показать сообщение отдельно
|| Flashka ||
 Аватар для || Flashka ||
2 / 2 / 0
Регистрация: 03.03.2010
Сообщений: 94
20.05.2010, 10:26     Не могу спроецировать файл!!! (((
Всем привет!! )) У меня вот такая проблемка:

Разработать две программы – сервер и клиент.
Клиент принимает от пользователя элементы целочисленного вектора (одномерный массив), а также значение ключа для поиска, и отсылает серверу через отображаемый файл.
Сервер принимает вектор и ключ из отображаемого файла, затем осуществляет поиск элемента по ключу любым известным методом, кроме прямого (линейного) поиска, и выводит результат на экран.

Сервер:
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
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_CTYPE,"Russian");
    printf("\n\nОжидание...\n\n");
 
    int arrayOfNumbers[MAX_QUANTITY];
        int tmp, searchingNumber, position;
        int  theLeftElement
             ,ridhtElement
             ,number     = NULL
             ,buffer     = NULL
             ,variable1  = NULL
             ,variable2  = NULL;
       int sizeOfaFile = NULL;
       int* numberOfaFile;
       bool CorrectnessCheck;
 
       numberOfaFile = (int *) malloc (sizeOfaFile);
 
       HANDLE Mapping;
       DWORD NumberOfBytesRead;
 
 
    Mapping = CreateFileMapping( File
                                , NULL         
                                , PAGE_READWRITE  
                                , 0               
                                , sizeOfaFile * sizeof(int)    
                                , L"Mas"
                               ); 
    Map1 = (int *)MapViewOfFile(Mapping, FILE_MAP_ALL_ACCESS, 0, 0, sizeOfaFile * sizeof(int));
 
    memcpy (arrayOfNumbers, Map1, sizeOfaFile * sizeof(int)); //копируем массив данных в память
 
    Mapping = CreateFileMapping( File
                                 , NULL         
                                 , PAGE_READWRITE  
                                 , 0               
                                 , sizeof(searchingNumber)    
                                 , L"Mas"
                                 );         
        
    Map2 = (int *)MapViewOfFile(Mapping, FILE_MAP_ALL_ACCESS, 0, 0, sizeof(searchingNumber));
 
    memcpy (&searchingNumber, Map2, sizeof(searchingNumber)); //копируем массив данных в память
 
    printf("\nПолучено\n");
 
    printf("\nВектор: %d\n", arrayOfNumbers);
    printf("Ключ: %d\n", searchingNumber);
 
    cout << endl;
    position = searchBinary(arrayOfNumbers
                            , searchingNumber, 0
                            , MAX_QUANTITY - 1
                            );
    position != -1 ? cout << "Искомая позиция: " << position+1
                   : cout << "Нет такого элемента!"
                   ;
    UnmapViewOfFile (Map1);
    UnmapViewOfFile (Map2);
    CloseHandle (Mapping);
    CloseHandle (File);
    cin.get();
}
int searchBinary(int* p_Array, int g_KeySearch, int head, int tail)
{ 
    int currPosition = ELEMENT;
    if ((tail == head) && (p_Array[tail] != g_KeySearch )) 
    {
        return ELEMENT;
    }
    else 
    {
        currPosition = (head+tail)/2;
        if (g_KeySearch == p_Array[currPosition])
        {
            return currPosition;
        }
        else 
        {
            if (g_KeySearch > p_Array[currPosition]) 
            {
                currPosition = searchBinary(p_Array, g_KeySearch, head, currPosition);
            }
            else
            {
                currPosition = searchBinary(p_Array, g_KeySearch, currPosition+1, tail);
            }
        }
    }
}
Клиент:
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
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_CTYPE,"Russian");
 
    int arrayOfNumbers[MAX_QUANTITY];
    int tmp, searchingNumber = NULL, position;
    int  theLeftElement
        ,ridhtElement
        ,number     = NULL
        ,buffer     = NULL
        ,variable1  = NULL
        ,variable2  = NULL;
    int sizeOfaFile = NULL;
    int *numberOfaFile;
    bool CorrectnessCheck;
 
     do
    {
        cout << "\nВведите размер массива: ";
        cin.clear();
        cin >> sizeOfaFile;
        fflush(stdin);
 
        if(!cin.good())
        {
                cout<<"\n>>Ошибка!!! Размер должен быть числом!\n";
                cout<<"\n>>Пожалуйста, введите число. \n";
                CorrectnessCheck = false; 
        }
            else CorrectnessCheck = true; 
            }
      while (!CorrectnessCheck); 
 
     numberOfaFile = (int *) malloc (sizeOfaFile);
 
      cout << "\nВведите элементы массива: ";
 
    for( int theLeftElement=0; theLeftElement<
             sizeOfaFile; ++theLeftElement)
    {
            do
            {
                cin.clear();
                cin >> arrayOfNumbers[theLeftElement];
                fflush(stdin);
            if(!cin.good())
            {
              cout<<"\n>>Ошибка!!! Элементы должны быть числом!\n";
              cout<<"\n>>Пожалуйста, введите число. \n";
              CorrectnessCheck = false; 
            }
            else CorrectnessCheck = true; 
            }while (!CorrectnessCheck);
     } 
 
    // просматриваем элемент от начала до конца, массив начинается с 0
    for (theLeftElement = 0; theLeftElement < 
         MAX_QUANTITY-1; theLeftElement++) 
    {
        // просматриваем массив со следующего от текущего положения элемента
        for (ridhtElement = theLeftElement+1; ridhtElement < 
             MAX_QUANTITY; ridhtElement++) 
        {
            // если левый элемент меньше чем правый, то меняем их местами
            // т.о. меньшие элементы всплывают к концу массива
            if (arrayOfNumbers[theLeftElement] < 
                arrayOfNumbers[ridhtElement]) 
            {
                tmp = arrayOfNumbers[theLeftElement];
                arrayOfNumbers[theLeftElement] = arrayOfNumbers[ridhtElement];
                arrayOfNumbers[ridhtElement] = tmp; 
            }
        }
            if (arrayOfNumbers[theLeftElement] != buffer) 
            {
                buffer = arrayOfNumbers[theLeftElement];
                variable2 = 1;
            }
            else 
            {
                variable2++;
            if (variable2 > variable1)
            {
            number = buffer;
            variable1 = variable2;
            }
        }
 
    }
    
    for (theLeftElement=0; theLeftElement < sizeOfaFile; theLeftElement++) 
    {
        cout << arrayOfNumbers[theLeftElement] << " ";
    }
 
        do
        {    
            cout << endl << endl << "Введите ключ для поиска: ";
            cin.clear();
            cin >> searchingNumber;
            fflush(stdin);
 
            if(!cin.good())
            {
                cout<<"\n>>Ошибка!!! Ключ должны быть числом!\n";
                cout<<"\n>>Пожалуйста, введите число. \n";
                CorrectnessCheck = false; 
            }
            else CorrectnessCheck = true; 
            }while (!CorrectnessCheck);
 
     cout << endl;
 
    
 
     Mapping = CreateFileMapping( File
                                , NULL         
                                , PAGE_READWRITE  
                                , 0               
                                , sizeOfaFile * sizeof(int)    
                                , L"Mas"
                               ); 
 
    // Размещаем проекцию Mapping в адресном пространстве нашего процесса; Map - получает адрес размещения
    Map1 = (int *)MapViewOfFile(File, FILE_MAP_ALL_ACCESS, 0, 0, sizeOfaFile * sizeof(int));
 
    memcpy (Map1, arrayOfNumbers, sizeOfaFile * sizeof(int)); //копируем массив данных в память
 
    Mapping = CreateFileMapping( File
                               , NULL         
                               , PAGE_READWRITE  
                               , 0               
                               , sizeof(searchingNumber)    
                               , L"Mas2"
                              );         
        
     Map2 = (int *)MapViewOfFile(File, FILE_MAP_ALL_ACCESS, 0, 0, sizeof(searchingNumber));
 
     memcpy (&searchingNumber, Map2,  sizeof(searchingNumber)); //копируем массив данных в память
 
     printf("Массив записан...");
 
     printf("\nВектор: %d\n", arrayOfNumbers);
     printf("Ключ: %d\n", searchingNumber);
 
     getch();
 
     UnmapViewOfFile (Map1);
     UnmapViewOfFile (Map2);
     CloseHandle (Mapping);
     CloseHandle (File);
     return NULL;
}
Вот какая-то фигня с проецированием файла! Например ввожу элементы и ключ для поиска, а проецирует он мне вообще не понятно что и всегда одно и тоже!!! (( Помогите пожалуйста исправить... )))
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 14:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru