Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Переобразование чисел 
:(
    Опции темы
Kirgston
Дата 26.3.2009, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 792
Регистрация: 24.12.2007

Репутация: нет
Всего: 2



Всем доброго времени суток. Вот решил написать преобразование из двоичной формы в десятичную...
вот только не пойму почему оно ругается...


AnsiString s1,s2;
s1=Edit1->Text;
s2=s1;
for (int i = s1.Length() , n=1 , i2=0; i >= 0; i--, n*=2,i2++) {
  s2[i2]=s1[i];
  s2[i2]*=n;

}
Edit2->Text=s2;
PM MAIL   Вверх
mrbrooks
Дата 26.3.2009, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 2
Всего: 306



Kirgston, к примеру itoa
PM MAIL   Вверх
mes
Дата 26.3.2009, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(Kirgston @  26.3.2009,  13:50 Найти цитируемый пост)
вот только не пойму почему оно ругается...

неужто ошибку компилятора трудно было скопировать ?! 

у вас в for две секции вместо 3х (забыто ";" )

Цитата(Kirgston @  26.3.2009,  13:50 Найти цитируемый пост)
  s2[i2]*=n;

тут будет не то, что Вы ожидаете.

Это сообщение отредактировал(а) mes - 26.3.2009, 14:55


--------------------
PM MAIL WWW   Вверх
azesmcar
Дата 26.3.2009, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Kirgston, где ругается то?
PM   Вверх
zim22
Дата 26.3.2009, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 24
Всего: 69



Цитата(mes @  26.3.2009,  14:54 Найти цитируемый пост)
у вас в for две секции вместо 3х (забыто ";" )

та не, всё правильно. 3 секции.


--------------------
PM MAIL   Вверх
azesmcar
Дата 26.3.2009, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Код

    int nres = 0;
    for (std::string::const_iterator it = s.begin(); it != s.end(); ++it)
    {
        nres <<= 1;
        nres |= ( *it - 48 );
    }



вот, перевести в билдер несложно.
PM   Вверх
Kirgston
Дата 26.3.2009, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 792
Регистрация: 24.12.2007

Репутация: нет
Всего: 2



)))А нигде не ругается... ничего не пропущено... и т.д. просто вроде всё хорошо. А когда нажимаю на кнопку вылетает 

Access volation at adress ... in module "rtl120.blp" . Read adress ... 


Цитата(mes @  26.3.2009,  14:54 Найти цитируемый пост)
тут будет не то, что Вы ожидаете.

Почему не то? оО. Там будет последнее число * 1, пред последние *2 и т.д.

Потом вывод всего этого на экран

А да надо будет потом в цикле просуммировать вроде...
PM MAIL   Вверх
azesmcar
Дата 26.3.2009, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Код

AnsiString s1 = Edit1->Text;
int nres = 0;
for (int i = 0; i < s1.Length(); ++i) {
        nres <<= 1;
        nres |= ( s1[i] - 48 );
}
Edit2->Text=IntToStr( nres ); 


а вот и перевод, должно работать
PM   Вверх
Kirgston
Дата 26.3.2009, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 792
Регистрация: 24.12.2007

Репутация: нет
Всего: 2



Вот если я всё правильно понял... 

void __fastcall TForm1::SpeedButton17Click(TObject *Sender)
{
AnsiString s1,s2,s_t;
s1=Edit1->Text;
s2=s1;
for (int i = s1.Length() , n=1 , i2=0; i >= 0; i--, n*=2,i2++) {
  s2[i2]=s1[i];
  s_t=IntToStr(StrToInt(s_t)+StrToInt(s2[i2])*n);


}
Edit2->Text=s_t;
}

Вот так вроде оно должно перевести в десятичную 0)))
PM MAIL   Вверх
mes
Дата 26.3.2009, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(Kirgston @  26.3.2009,  14:11 Найти цитируемый пост)
Почему не то? оО. Там будет последнее число * 1, пред последние *2 и т.д.

Потом вывод всего этого на экран


Ну и что будет содержать строка, после выполнения нижеприведенного кода ?
Код

AnsiString s = "1";
s[1]*=2;  // индексы же с единицы у AnsiString ?

 smile


--------------------
PM MAIL WWW   Вверх
GoldFinch
Дата 26.3.2009, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 15
Всего: 26



Цитата(Kirgston @  26.3.2009,  15:17 Найти цитируемый пост)
void __fastcall TForm1::SpeedButton17Click(TObject *Sender)
{
AnsiString s1,s2,s_t;
s1=Edit1->Text;
s2=s1;
for (int i = s1.Length() , n=1 , i2=0; i >= 0; i--, n*=2,i2++) {
  s2[i2]=s1[i];
  s_t=IntToStr(StrToInt(s_t)+StrToInt(s2[i2])*n);


}
Edit2->Text=s_t;
}

это типа код-шутка?
PM MAIL ICQ   Вверх
mes
Дата 26.3.2009, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(zim22 @  26.3.2009,  14:04 Найти цитируемый пост)
та не, всё правильно. 3 секции. 
ага, правильно.. показалось..


--------------------
PM MAIL WWW   Вверх
azesmcar
Дата 26.3.2009, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Kirgston, зачем такой страшный код? чем тебе мой вариант не по душе?
PM   Вверх
mes
Дата 26.3.2009, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(Kirgston @  26.3.2009,  14:17 Найти цитируемый пост)
Вот если я всё правильно понял... 

сомневаюсь, что правильно поняли smile


--------------------
PM MAIL WWW   Вверх
azesmcar
Дата 26.3.2009, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Цитата

индексы же с единицы у AnsiString ?


совсем забыл про это..вроде да, не помню уже
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0669 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.