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;};
}
};
}
поправил табуляцию, разбил комментарий на строки — Кодт
Я не знаком с .NET, но у меня возникает ряд сомнений. Во-первых, может быть нет такой конструкии, как while...do, а есть конструкиця просто while. Во-вторых, мне представляется, что как и в обычном С++ знак оператора = означает присваивание, а оператор сравнения имеет вид ==
while(b>=8) // это заголовок цикла while(expression) statement
// а это тело циклаdo { ..... } // так начинается стейтмент dostatementwhile(expression)
// компилятор ожидает увидеть здесь хвостовой while
; // а вместо этого видит новый пустой стейтмент
Короче говоря, do здесь лишнее.
Ну и, как Сыроежка уже отметил, оператор = это присваивание, а не сравнение. Ещё один привет паскалистам.
Присваивание ненулевого числа всегда будет давать истину, присваивание нуля — соответственно, ложь.
И напоследок. Я очень надеюсь, что это не продакшен-код.
Потому что выводить число в восьмеричной системе счисления ТАКИМ способом — это чистейшая индусятина.
Открой для себя стандартные средства:
itoa(n, buffer, 8)
sprintf(buffer, "%o", n)
и что там ещё есть в дотнете и в C++/CLI — какие-нибудь String::Format
Здравствуйте, Programador, Вы писали:
P>или еще одного while нехватает
Ну я же телепат, а не только теоретик. Здесь много чего не хватает, но в целом — здесь лишнее всё!