не пойму почему ошибка в исходном коде??
От: AssAssIn1213  
Дата: 18.02.12 12:14
Оценка: :)))
вот код:
            int n = Convert::ToInt32(edt1->Text);
            int x = n;
            int b=n;
            String^ s ="";
            while (b>=8) do {
                x=x%8;
                if (x=0) {s="0"+s;};
                if (x=1) {s="1"+s;};
                if (x=2) {s="2"+s;};
                if (x=3) {s="3"+s;};
                if (x=4) {s="4"+s;};
                if (x=5) {s="5"+s;};
                if (x=6) {s="6"+s;};
                if (x=7) {s="7"+s;};
                b=b-x;
                b=b/8;
            };
   //--------- ошибка
   // c:\users\virus\documents\visual studio 2010\projects\test4\test4\Form1.h(157):
   // error C2059: синтаксическая ошибка: ;   ????
            if (x=0) {s="0"+s;};
            if (x=1) {s="1"+s;};
            if (x=2) {s="2"+s;};
            if (x=3) {s="3"+s;};
            if (x=4) {s="4"+s;};
            if (x=5) {s="5"+s;};
            if (x=6) {s="6"+s;};
            if (x=7) {s="7"+s;};
        }
    };
}

поправил табуляцию, разбил комментарий на строки — Кодт
visual studio .net
Re: не пойму почему ошибка в исходном коде??
От: Сыроежка  
Дата: 18.02.12 13:12
Оценка:
Здравствуйте, AssAssIn1213, Вы писали:

Я не знаком с .NET, но у меня возникает ряд сомнений. Во-первых, может быть нет такой конструкии, как while...do, а есть конструкиця просто while. Во-вторых, мне представляется, что как и в обычном С++ знак оператора = означает присваивание, а оператор сравнения имеет вид ==
Меня можно встретить на www.cpp.forum24.ru
Re: не пойму почему ошибка в исходном коде??
От: Кодт Россия  
Дата: 18.02.12 15:19
Оценка:
Здравствуйте, AssAssIn1213, Вы писали:

Привет паскалистам!
while(b>=8) // это заголовок цикла while(expression) statement
  // а это тело цикла
  do { ..... } // так начинается стейтмент do statement while(expression)
  // компилятор ожидает увидеть здесь хвостовой while
  ; // а вместо этого видит новый пустой стейтмент


Короче говоря, do здесь лишнее.
Ну и, как Сыроежка уже отметил, оператор = это присваивание, а не сравнение. Ещё один привет паскалистам.
Присваивание ненулевого числа всегда будет давать истину, присваивание нуля — соответственно, ложь.

И напоследок. Я очень надеюсь, что это не продакшен-код.
Потому что выводить число в восьмеричной системе счисления ТАКИМ способом — это чистейшая индусятина.
Открой для себя стандартные средства:
itoa(n, buffer, 8)
sprintf(buffer, "%o", n)
и что там ещё есть в дотнете и в C++/CLI — какие-нибудь String::Format
Перекуём баги на фичи!
Re: не пойму почему ошибка в исходном коде??
От: jahr  
Дата: 18.02.12 16:32
Оценка: :))
Здравствуйте, AssAssIn1213, Вы писали:

AAI> // c:\users\virus\documents\visual studio 2010\projects\test4\test4\Form1.h(157):

AAI> // error C2059: синтаксическая ошибка: ; ????

Встроеннная защита компилятора от вирусописателей.)
Re[2]: не пойму почему ошибка в исходном коде??
От: Programador  
Дата: 18.02.12 16:41
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Короче говоря, do здесь лишнее.


или еще одного while нехватает

while ()do {} while (true);
Re: не пойму почему ошибка в исходном коде??
От: nen777w  
Дата: 18.02.12 16:44
Оценка: +1 :))
ябы тоже отказался компилировать такое, под любым предлогом
Re[2]: не пойму почему ошибка в исходном коде??
От: Programador  
Дата: 18.02.12 16:44
Оценка:
Ну еще можно рекомендовать топикстартеру со switch познакомится
Re[3]: не пойму почему ошибка в исходном коде??
От: Кодт Россия  
Дата: 18.02.12 16:58
Оценка: :))
Здравствуйте, Programador, Вы писали:

P>или еще одного while нехватает

Ну я же телепат, а не только теоретик. Здесь много чего не хватает, но в целом — здесь лишнее всё!
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.