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

Как исправить ошибочку?? )) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ По заданным вещественным массивам http://www.cyberforum.ru/cpp-beginners/thread129343.html
По заданным вещественным массивам A, B и С вычислить (minAi)/maxAi + (maxCi)/min(Ci) + max(B+C)I / min(B+C)i. Помогите чем можете)))
C++ Объединение двух отсортированных списков Ошибка где-то во вставке элементов 2-ого списка в первый, не могу найти #include <iostream> #include <cmath> using namespace std; struct node { int elem; node *sled; node *pred; http://www.cyberforum.ru/cpp-beginners/thread129333.html
C++ Нужно разработать программу для рендеринга
Здравствуйте, кто может помочь с написанием программы: Разработать программу визуализации 3D полигональной модели с нанесением текстуры (Проекции, освещение и отражение, текстура-растровый образ, натягиваемый на объект) за ранее спасибо!!
C++ Траблы с FileVersionInfoSize
Пишу код wstring ws("settings.xml"); LPCWSTR lpPath = ws.c_str(); DWORD dData; DWORD dResult = GetFileVersionInfoSize(lpPath, &dData); Выдает вот такое сообщение error LNK2019: unresolved external symbol _GetFileVersionInfoSizeW@8 referenced in function _main
C++ Посчитать количество символов в строке http://www.cyberforum.ru/cpp-beginners/thread129319.html
Хелп. Я только недавно начал изучать С++. Помогите сделать программу. Нужно посчитать количество всех элементов в строке.
C++ Не работает конструктор наследника класса Есть класс: template <class T> class HashTable { HashTable(int _size) { size = _size; for (int i = 0; i < 1000; i++) Data = 0; } ...... } подробнее

Показать сообщение отдельно
|| Flashka ||
2 / 2 / 0
Регистрация: 03.03.2010
Сообщений: 94

Как исправить ошибочку?? )) - C++

13.05.2010, 20:49. Просмотров 266. Ответов 0
Метки (Все метки)

всем привет!!! )) Помогите исправить ошибочку!! У меня есть 2 программки - сервер и клиент. Клиент принимает элементы вектора и ключ для поиска, и отсылает серверу. Сервер принимает это все и ищет элемент по ключу!

Сервер:
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
#include "stdafx.h"
#include <iostream>
#include <windows.h>
#include <conio.h>
#include <stdio.h>
#include <time.h>
 
#define MAX_QUANTITY 100
#define ELEMENT       -1
#define ONE            1
#define NULL           0
 
using namespace std;
 
HANDLE Mailslot;
DWORD NumberOfBytesRead;
 
int g_KeySearch;
int searchBinary(int* p_Array, int g_KeySearch, int functionAr1, int functionAr2);
 
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;
 
    HANDLE Mailslot;
    DWORD NumberOfBytesRead;
 
    // Создание почтового ящика и бесконечное ожидание сообщений
    if ((Mailslot = CreateMailslot(L"\\\\.\\Mailslot\\slot1", 0,
        MAILSLOT_WAIT_FOREVER, NULL)) == INVALID_HANDLE_VALUE)
    {
        printf("Ошибка при создании %d\n", GetLastError());
        return ONE;
    }
 
    // Бесконечное чтение данных из ПЯ!
    if(ReadFile(Mailslot, &numberOfaFile, sizeof(numberOfaFile), &NumberOfBytesRead,
        NULL) == 0)
    {
        cout<<"Ошибка!!! ";
        getch();
        return ONE;
    }
 
   printf("\nПолучено\n");
 
   cout << endl;
   position = searchBinary(arrayOfNumbers
                            , -858993460, 0
                            , MAX_QUANTITY - 1
                            );
    position != -1 ? cout << "Искомая позиция: " << position+1
                   : cout << "Нет такого элемента!"
                   ;
    CloseHandle (Mailslot);
    getch();
    return NULL;
}
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
#include "stdafx.h"
#include <iostream>
#include <windows.h>
#include <conio.h>
#include <stdio.h>
 
#define MAX_QUANTITY 100
#define ONE            1
#define NULL           0
 
HANDLE Mailslot;
DWORD NumberOfBytesRead;
 
int g_KeySearch;
using namespace std; 
 
int searchBinary(int* p_Array, int g_KeySearch, int functionAr1, int functionAr2);
 
int main(int argc, char* 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;
 
        HANDLE Mailslot;
        DWORD BytesWritten;
    if ((Mailslot = CreateFile(L"\\\\.\\Mailslot\\slot1", GENERIC_WRITE,
        FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,
        NULL)) == INVALID_HANDLE_VALUE)
                    {
        printf("Создание файла с ошибкой %d\n", GetLastError());
                getch ();
        return ONE;
    }
    if (WriteFile(Mailslot, &numberOfaFile,
           sizeof (numberOfaFile), &BytesWritten, NULL) == 0)
    {
        printf("Запись в файл с ошибкой %d\n", GetLastError());
        return ONE;
    }
 
        cout<<"\n Данные переданы... ";
        getch();
    CloseHandle(Mailslot);
    return NULL ;
}
Так вот сервер на любые значния выдает одно и то же значение!!! ((( В чем проблема?? Подскажите пожалуйста!! ))
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru