11 / 11 / 6
Регистрация: 03.04.2011
Сообщений: 631
1

Что за ошибка с else?

29.04.2012, 09:55. Показов 2256. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
доброго времени суток возникла такая проблема у меня в программе два условие первое через if второе хотел чтоб выполнялось если первое не выполниться сделал через else но при запуске выделяет else и пишет такую ошибку Misplaced else подскажите в чем проблема
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
#include <vcl.h>
#pragma hdrstop
 
#include "krest.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
static int counterO=0,counterX=0;
bool Bel;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
StringGrid1->Visible=false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::StringGrid1SelectCell(TObject *Sender, int ACol, int ARow,
                  bool &CanSelect)
{
        if (StringGrid1->Cells[ACol][ARow]=="") if (RadioButton1->Checked)
        {
         StringGrid1->Cells[ACol][ARow]="  X "; Bel=false;
        }
        if (StringGrid1->Cells[ACol][ARow]=="") if (RadioButton2->Checked)
        {
         StringGrid1->Cells[ACol][ARow]="  O ";
        }
        counterX=0;counterO=0;
        if(Bel==false){
        for (int i=0;i<9;i++)
        for (int j=0;j<9;j++){
        if (StringGrid1->Cells[i][j]=="  X ")counterX++;
        else counterX=0;
        if ((counterX==3)&&((i<5)&&(j<5)))
        if( StringGrid1->Cells[i-3][j-3]!="  O ")
        StringGrid1->Cells[i-3][j-3]="  O ";Bel=true;
        else -вот этот выделяет
          if ((counterX==3)&&((i<9)&&(j<9))) {
          if( StringGrid1->Cells[i+1][j+1]!="  O ")
          StringGrid1->Cells[i+1][j+1]="  O ";Bel=true;}
                      }}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.04.2012, 09:55
Ответы с готовыми решениями:

Что это за ошибка, когда маткад не понимает, что такое у
Помогите плиз не понимаю что за ошибка маткад не понимает что такое у

Что такое перегрузка оператора? Что у меня в коде за ошибка?
Что же я написал?? Что оно не компилится? Что значит error C2275: Superclass: недопустимое...

Подскажите, что не правильно: компилятор пишет, что ошибка есть
Подскажите, что не правильно: компилятор пишет, что ошибка естьprogram name; var...

Ошибка компилятора. Что сделать, что бы среда работала?
http://i064.***********/1210/33/00be8b0c26e9t.jpg Что сделать что бы среда работала нормально?

13
Практикантроп
4824 / 2717 / 525
Регистрация: 23.09.2011
Сообщений: 5,777
29.04.2012, 09:59 2
вот это
Цитата Сообщение от lexflax Посмотреть сообщение
StringGrid1->Cells[i-3][j-3]=" O ";Bel=true;
нужно в фигурные скобки забрать (перед else).
1
Супер-модератор
8783 / 2536 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
29.04.2012, 10:01 3
lexflax, у меня один вопрос - как вы читаете свои исходники? вам удобно? я, к примеру, компилятор очень понимаю - черт ногу сломит... где форматирование кода?
0
11 / 11 / 6
Регистрация: 03.04.2011
Сообщений: 631
29.04.2012, 10:13  [ТС] 4
спасибо ник
0
238 / 229 / 58
Регистрация: 27.10.2011
Сообщений: 249
29.04.2012, 14:00 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
void __fastcall TForm1::StringGrid1SelectCell(TObject *Sender, int ACol,
      int ARow, bool &CanSelect)
{
  if(StringGrid1->Cells[ACol][ARow] == "")
    if(RadioButton1->Checked)
      {
        StringGrid1->Cells[ACol][ARow] = "  X ";
        Bel = false;
      }
  if(StringGrid1->Cells[ACol][ARow] == "")
    if(RadioButton2->Checked)
      {
        StringGrid1->Cells[ACol][ARow] = "  O ";
      }
  counterX = 0;
  counterO = 0;
  if(!Bel)
    {
      for(int i = 0; i < 9; i++)
        for(int j = 0; j < 9; j++)
          {
            if(StringGrid1->Cells[i][j] == "  X ")
              counterX++;
            else
              counterX = 0;
            if(counterX == 3 && (i < 5 && j < 5))
              if(StringGrid1->Cells[i - 3][j - 3] != "  O ")
                {
                  StringGrid1->Cells[i - 3][j - 3] = "  O ";
                  Bel = true;
                }
              else
                if(counterX == 3 && (i < 9 && j < 9))
                  {
                    if(StringGrid1->Cells[i + 1][j + 1] != "  O ")
                      StringGrid1->Cells[i + 1][j + 1] = "  O ";
                    Bel = true;
                  }
          }
    }
}
0
LK
Заблокирован
29.04.2012, 15:22 6
Sergey-K, поправьте меня со скобками, где я не прав, по вашей логике:
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
void __fastcall TForm1::StringGrid1SelectCell(TObject *Sender, int ACol,
      int ARow, bool &CanSelect)
{
  if(StringGrid1->Cells[ACol][ARow] == "") {
    if(RadioButton1->Checked) {
      StringGrid1->Cells[ACol][ARow] = "  X ";
      Bel = false;
    }
  } // можно убрать
  if(StringGrid1->Cells[ACol][ARow] == "") { // можно убрать
    if(RadioButton2->Checked) { // можно else if
      StringGrid1->Cells[ACol][ARow] = "  O ";
    }
  }
  counterX = 0;
  counterO = 0;
  if(!Bel) {
    for(int i=0;i<9;i++) {
      for(int j=0;j<9;j++) {
        if(StringGrid1->Cells[i][j]=="  X ") {
          counterX++;
        }
        else {
          counterX = 0;
        }
        if(counterX==3&&(i<5&&j<5)) {
          if(StringGrid1->Cells[i-3][j-3] != "  O ") {
            StringGrid1->Cells[i-3][j-3] = "  O ";
            Bel = true;
          }
          else if(counterX==3&&(i<9&&j<9)) {
            if(StringGrid1->Cells[i+1][j+1]!="  O ") {
              StringGrid1->Cells[i+1][j + 1]= "  O ";
              Bel = true;
            }
          }
        }
      }
    }
  }
}
0
Практикантроп
4824 / 2717 / 525
Регистрация: 23.09.2011
Сообщений: 5,777
29.04.2012, 15:40 7
хоть вопрос и не ко мне, но вот здесь неверно:
Цитата Сообщение от LK Посмотреть сообщение
if(StringGrid1->Cells[ACol][ARow] == "") { // можно убрать if(RadioButton2->Checked) { // можно else if
- else if исключает первое условие, а в этой записи используется их комбинация.
0
LK
Заблокирован
29.04.2012, 15:45 8
И я о том же. Что получится в
C++
1
StringGrid1->Cells[ACol][ARow]
, если выбраны оба чекбоксы?
C++
1
"  X "+"  0 "
?
0
238 / 229 / 58
Регистрация: 27.10.2011
Сообщений: 249
29.04.2012, 15:46 9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
if(StringGrid1->Cells[ACol][ARow] == "")
  {
    if(RadioButton1->Checked)
      {
        StringGrid1->Cells[ACol][ARow] = "  X ";
        Bel = false;
      }
    if(RadioButton2->Checked)
      StringGrid1->Cells[ACol][ARow] = "  O ";
  }
counterX = 0;
counterO = 0;
//
0
Практикантроп
4824 / 2717 / 525
Регистрация: 23.09.2011
Сообщений: 5,777
29.04.2012, 15:48 10
я чекбоксов не вижу, а как выбрать оба радиобатона?! .. научите?
0
238 / 229 / 58
Регистрация: 27.10.2011
Сообщений: 249
29.04.2012, 15:52 11
Но я имел ввиду логические ошибки здесь:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
if(counterX == 3 && (i < 5 && j < 5))
  if(StringGrid1->Cells[i - 3][j - 3] != "  O ")
    {
      StringGrid1->Cells[i - 3][j - 3] = "  O ";
      Bel = true;
    }
  else
    if(counterX == 3 && (i < 9 && j < 9)) //??
      {
        if(StringGrid1->Cells[i + 1][j + 1] != "  O ")
          StringGrid1->Cells[i + 1][j + 1] = "  O "; //??
        Bel = true; //??
      }
0
LK
Заблокирован
29.04.2012, 16:06 12
Точно, нет чекбоксов .
И почему я не могу выбрать два радиобатона, если они не в группе?
0
Практикантроп
4824 / 2717 / 525
Регистрация: 23.09.2011
Сообщений: 5,777
29.04.2012, 16:33 13
Цитата Сообщение от LK Посмотреть сообщение
почему я не могу выбрать два радиобатона, если они не в группе?
я думаю, - когда "родитель" общий, то считается, что они сгруппированы; ведь свойства Group у радиобатонов нет. Если отсутствует групбокс, то родитель - форма.
0
LK
Заблокирован
29.04.2012, 16:42 14
Исходя из Вашей же логики, я предложил проверку выбора радиокнопки, что имхо, логичнее отсутствия такой проверки в варианте от ТС .
0
29.04.2012, 16:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.04.2012, 16:42
Помогаю со студенческими работами здесь

Ошибка 678:удаленный компьютер не отвечает.что это?что нужно сделать чтобы работало?
ЧТО ЭТО?КАК С ЭТИМ БОРОТЬСЯ?

Ошибка MEM.ALL ERR: hMem08 - что это за ошибка?
В моём проекте спустя часа 2-3 появляется вылазит ошибка вида: MEM.ALL ERR: hMem08 = 7AB7608,...

Доработка программы, нужно что бы после того как юзер введет вместо числа что то другое вылезала ошибка
#include &lt;stdio.h&gt; #include &lt;windows.h&gt; int main(void) { SetConsoleOutputCP(1251); ...

Коллеги!В чем ошибка понятие не имею, что-то упускаю, но не знаю что. Кто-то гвоорил делать через счетчик, только
Вивести числа следующим образом: 25 25.5 24.8 26 26.5 25.8 …...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru