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

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

Войти
Регистрация
Восстановить пароль
 
Skround
0 / 0 / 0
Регистрация: 19.09.2013
Сообщений: 1
#1

Ошибка: левый операнд должен быть левосторонним значением - C++

22.09.2013, 19:38. Просмотров 885. Ответов 7
Метки нет (Все метки)

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
154
155
156
157
158
159
160
161
162
163
164
165
166
    #include "stdafx.h"
#include "Tic Tac Toe.h"
 
#define MAX_LOADSTRING 100
 
// Глобальные переменные:
HINSTANCE hInst;                                // текущий экземпляр
TCHAR szTitle[MAX_LOADSTRING];                  // Текст строки заголовка
TCHAR szWindowClass[MAX_LOADSTRING];            // имя класса главного окна
RECT rect;
HBITMAP hbitX, hbitO;
int x, y;
struct Cell // структура для одной ячейки на поле
{
    bool fill;
    int left, top, right, bottom;
    char flag ;
};
int coord [36] = {20,20,145,125,165,20,290,125,310,20,450,125,20,140,145,290,165,140,290,290,310,140,450,290,20,280,145,450,165,280,290,450,310,280,450,450}; //массив координат для вставки битмапа
Cell cells [3][3];
// Отправить объявления функций, включенных в этот модуль кода:
ATOM                MyRegisterClass(HINSTANCE hInstance);
BOOL                InitInstance(HINSTANCE, int);
LRESULT CALLBACK    WndProc(HWND, UINT, WPARAM, LPARAM);
INT_PTR CALLBACK    About(HWND, UINT, WPARAM, LPARAM);
 
int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,
                     _In_opt_ HINSTANCE hPrevInstance,
                     _In_ LPTSTR    lpCmdLine,
                     _In_ int       nCmdShow)
{
    UNREFERENCED_PARAMETER(hPrevInstance);
    UNREFERENCED_PARAMETER(lpCmdLine);
 
    // TODO: разместите код здесь.
    MSG msg;
    HACCEL hAccelTable;
    // Инициализация глобальных строк
    LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
    LoadString(hInstance, IDC_TICTACTOE, szWindowClass, MAX_LOADSTRING);
    MyRegisterClass(hInstance);
    for (int i = 0, z = 0; i<3; i++)
    {
        for(int j=0; j<3 && z < 36; j++)
        {
            cells[i][j].fill=false;
            cells[i][j].left = coord[z++];
            cells[i][j].top = coord[z++];
            cells[i][j].right = coord[z++];
            cells[i][j].bottom = coord[z++];
        }
    }
    // Выполнить инициализацию приложения:
    if (!InitInstance (hInstance, nCmdShow))
    {
        return FALSE;}
    hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_TICTACTOE));
 
    // Цикл основного сообщения:
    while (GetMessage(&msg, NULL, 0, 0))
    {
        if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
    }
    return (int) msg.wParam;
}
//  ФУНКЦИЯ: MyRegisterClass()
//  НАЗНАЧЕНИЕ: регистрирует класс окна.
ATOM MyRegisterClass(HINSTANCE hInstance)
{
    WNDCLASSEX wcex;
 
    wcex.cbSize = sizeof(WNDCLASSEX);
    wcex.style          = CS_HREDRAW | CS_VREDRAW;
    wcex.lpfnWndProc    = WndProc;
    wcex.cbClsExtra     = 0;
    wcex.cbWndExtra     = 0;
    wcex.hInstance      = hInstance;
    wcex.hIcon          = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_TICTACTOE));
    wcex.hCursor        = LoadCursor(NULL, IDC_ARROW);
    wcex.hbrBackground  = (HBRUSH)(COLOR_WINDOW+1);
    wcex.lpszMenuName   = MAKEINTRESOURCE(IDC_TICTACTOE);
    wcex.lpszClassName  = szWindowClass;
    wcex.hIconSm        = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
 
    return RegisterClassEx(&wcex);
}
//   ФУНКЦИЯ: InitInstance(HINSTANCE, int)
//   НАЗНАЧЕНИЕ: сохраняет обработку экземпляра и создает главное окно.
//   КОММЕНТАРИИ:
//        В данной функции дескриптор экземпляра сохраняется в глобальной переменной, а также
//        создается и выводится на экран главное окно программы.
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
   HWND hWnd;
   hInst = hInstance; // Сохранить дескриптор экземпляра в глобальной переменной
   hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPED | WS_SYSMENU | WS_MINIMIZEBOX,
     CW_USEDEFAULT, 0,450 /*CW_USEDEFAULT*/, 450, NULL, NULL, hInstance, NULL); //указать размер окна
 
   if (!hWnd)
   {
      return FALSE;
   }
 
   ShowWindow(hWnd, nCmdShow);
   UpdateWindow(hWnd);
   return TRUE;
}
//  ФУНКЦИЯ: WndProc(HWND, UINT, WPARAM, LPARAM)
//  НАЗНАЧЕНИЕ:  обрабатывает сообщения в главном окне.
//  WM_COMMAND  - обработка меню приложения
//  WM_PAINT    -Закрасить главное окно
//  WM_DESTROY   - ввести сообщение о выходе и вернуться.
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    int wmId, wmEvent;
    PAINTSTRUCT ps;
    HDC hdc;
    HDC hDC = GetDC(hWnd);
    HDC hMemDC = CreateCompatibleDC(hDC);
    switch (message)
    {
    case WM_COMMAND:
        wmId    = LOWORD(wParam);
        wmEvent = HIWORD(wParam);
        // Разобрать выбор в меню:
        switch (wmId)
        {
        case IDM_ABOUT:
            DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
            break;
        case IDM_EXIT:
            DestroyWindow(hWnd);
            break;
        default:
            return DefWindowProc(hWnd, message, wParam, lParam);
        }
        break;
 
    case WM_LBUTTONDOWN:
        x=LOWORD(lParam);
        y=HIWORD(lParam);
        for (int i=0; i<3; i++)
        {
            for(int j=0; j<3; j++)
            {
                if (x >= cells[i][j].left && x<= cells[i][j].right && y >= cells[i][j].top && y <= cells[i][j].bottom && cells[i][j].fill = false)
                { cells[i][j].flag = 'x';}
            }
        }
        break;
    case WM_RBUTTONDOWN:
        x=LOWORD(lParam);
        y=HIWORD(lParam);
        for (int i=0; i<3; i++)
        {
            for(int j=0; j<3; j++)
            {
                if (x >= cells[i][j].left && x<= cells[i][j].right && y >= cells[i][j].top && y <= cells[i][j].bottom && cells[i][j].fill = false)
                { cells[i][j].flag = 'o';}
            }
        }
        break;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.09.2013, 19:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка: левый операнд должен быть левосторонним значением (C++):

Ошибка: Левый операнд должен быть левосторонним значением - C++
#include&lt;iostream&gt; using namespace std; int main(int nNumberofArgs, char* pzArgs) { int Number ; cout &lt;&lt; &quot;Enter a number from 1...

Ошибка: Левый операнд должен быть левосторонним значением - C++
Здравствуйте, не могу понять, в чем суть ошибки. Ругается на это и подобные выражения best.fio.f=mas.fio.f; Слышал, можно избежать...

Ошибка: Левый операнд должен быть левосторонним значением - C++
int MenuMain() { int count = 3; char ** list = new char * ; list = new char = Rus(&quot;Провести распознавание&quot;); list = new...

Ошибка: Левый операнд должен быть левосторонним значением - C++
#include &quot;stdafx.h&quot; #include &lt;windows.h&gt; #include &lt;iostream&gt; #include &lt;clocale&gt; #include &lt;stdlib.h&gt; #include &lt;cstring&gt; #include...

Ошибка: левый операнд должен быть левосторонним значением - C++
Ребят, проблема такая: редактирую код быстрой сортировки, выдает ошибку (см. выше), подскажите пожалуйста в чем может быть проблема int...

Ошибка при ветвлении: левый операнд должен быть левосторонним значением - C++
if (x1_bi_answer &amp;&amp; x2_bi_answer &amp;&amp; x3_bi_answer &amp;&amp; x4_bi_answer != NULL) { cout &lt;&lt; &quot;Answer:\n&quot;; cout &lt;&lt; &quot;x1 = &quot; &lt;&lt;...

7
User409368
191 / 168 / 6
Регистрация: 09.09.2013
Сообщений: 524
22.09.2013, 19:51 #2
Цитата Сообщение от Skround Посмотреть сообщение
левый операнд должен быть левосторонним значением
все правильно) левый операнд должен быть левосторонним значением
0
alsav22
5431 / 4826 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.09.2013, 20:01 #3
Тут что происходит?
C++
1
if (x >= cells[i][j].left && x<= cells[i][j].right && y >= cells[i][j].top && y <= cells[i][j].bottom && cells[i][j].fill = false)
Добавлено через 1 минуту
Может так:
C++
1
if (x >= cells[i][j].left && x<= cells[i][j].right && y >= cells[i][j].top && y <= cells[i][j].bottom && cells[i][j].fill == false)
0
Croessmah
Пришел
Эксперт CЭксперт С++
13759 / 7839 / 893
Регистрация: 27.09.2012
Сообщений: 19,247
Записей в блоге: 3
Завершенные тесты: 1
22.09.2013, 20:02 #4
возьмите в скобки присвоение(если это присвоение, а не сравнение "=="):
C++
1
if (x >= cells[i][j].left && x<= cells[i][j].right && y >= cells[i][j].top && y <= cells[i][j].bottom && ( cells[i][j].fill = false ) )
P.S. посмотрите в таблицу приоритетов операций
0
alsav22
5431 / 4826 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.09.2013, 20:08 #5
Цитата Сообщение от Croessmah Посмотреть сообщение
если это присвоение, а не сравнение "=="
Скорее всего, сравнение...
0
Croessmah
22.09.2013, 20:10
  #6

Не по теме:

Цитата Сообщение от alsav22 Посмотреть сообщение
Скорее всего сравнение
скорее всего
Цитата Сообщение от alsav22 Посмотреть сообщение
присвоение дальше...
присвоение flag, а не fill

0
alsav22
5431 / 4826 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.09.2013, 20:13 #7
Цитата Сообщение от Croessmah Посмотреть сообщение
присвоение flag, а не fill
Я понимаю, но с присвоением там смысл теряется. Слишком сложно. И куда, тогда этот && деть:
C++
1
y <= cells[i][j].bottom && cells[i][j].fill = false
Навряд ли...
0
Croessmah
Пришел
Эксперт CЭксперт С++
13759 / 7839 / 893
Регистрация: 27.09.2012
Сообщений: 19,247
Записей в блоге: 3
Завершенные тесты: 1
22.09.2013, 20:14 #8
Цитата Сообщение от alsav22 Посмотреть сообщение
И куда, тогда этот && деть:
ну да, бессмысленная вещь получается )))
разве что ленивостью пользоваться, но тогда тело условия смысла не имеет )))
0
22.09.2013, 20:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.09.2013, 20:14
Привет! Вот еще темы с ответами:

левый операнд-должен быть левосторонним значением - C++
Вычислить и вывести на экран в виде таблицы значения функции F на интервале от Xнач. до Xкон. с шагом dX. #include &lt;cstdio&gt; #include...

Левый операнд должен быть левосторонним значением - C++
выдает ошибку : 1&gt;c:\users\dandel1onka\documents\visual studio...

Левый операнд должен быть левосторонним значением - C++
Пролистал форум, не смог найти ответа. #include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;iostream&gt; int main () { double...

Функция swap. error C2106: =: левый операнд должен быть левосторонним значением - C++
Выдает ошибки: error C2106: =: левый операнд должен быть левосторонним значением в чем причина? зарание спасибо:) int max; ...


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

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

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