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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
|| Flashka ||
2 / 2 / 0
Регистрация: 03.03.2010
Сообщений: 94
#1

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

13.05.2010, 20:49. Просмотров 269. Ответов 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 ;
}
Так вот сервер на любые значния выдает одно и то же значение!!! ((( В чем проблема?? Подскажите пожалуйста!! ))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.05.2010, 20:49
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как исправить ошибочку?? )) (C++):

Исправить ошибочку в конце программы - C++
//Даны N точек на плоскости. Найти среди них точки являющиеся вершинами фигуры, содержащей максимальное число заданных точек. //Фигура -...

Наибольший общий делитель!Нужно исправить ошибочку - C++
Наибольший общий делитель (НОД) двух целых чисел является самым большим числом, на которое делится каждое из двух чисел. Напишите функцию...

Найти ошибочку - C++
Здравствуйте! Помогите пожалуйста найти ошибку в программе. Вроде всё написал правильно,выводит,но значение S постоянно равно 1. Если ввожу...

Найти ошибочку. Нахождение суммы цифр вещественного числа - C++
Всем привет! Создал функцию нахождения суммы цифр вещественного числа. Функция практически работает, но, когда я кладу в переменную число...

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

Как подключить функцию? Как это можно исправить? - C++
#include&lt;stdio.h&gt; #include&lt;math.h&gt; #include&lt;conio.h&gt; #include&lt;iostream&gt; #pragma warning(disable: 4996) //функция генерацции ...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.05.2010, 20:49
Привет! Вот еще темы с ответами:

нужно найти ошибки в задаче на языке C/ их в районе 10 как выдает компилятор но я не могу их исправить (не знаю как) - C++
#include &lt;math.h&gt; #include &lt;conio.h&gt; #include &lt;stdio.h&gt; void main() { int xa, ya, xb, yb; cprintf(&quot;vvod xa, ya, xb, yb&quot;); ...

Как исправить! - C++
Здравствуйте! Помогите мне пожалуйста! Вот код: // 4_3.cpp: главный файл проекта. #include &quot;stdafx.h&quot; #include &lt;iostream&gt; ...

Как исправить ошибки? - C++
Задание было :Доделать код,что бы был конструктор с параметром учитель и со своими set- get- функциями...Может опять где чего намудрил...

Как исправить ошибки? - C++
Вот код программы. Помогите исправить ошибки. #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;windows.h&gt; #include &lt;string&gt; ...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru