| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| Деление на 1000 и премахване на задните нули, как? http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=2782 |
Страница 1 от 1 |
| Автор: | milenjs [ Нед Авг 20, 2006 11:26 am ] | |||||||||
| Заглавие: | Деление на 1000 и премахване на задните нули, как? | |||||||||
Колеги наложи ми се да правя такова нещо от един масив с число в аски да направя друг масив но разделен на хиляда и премахнати задните нули, т.е - 1010 - 1,01; 455000 - 455; 34567 - 34,567. Направих го, но програмирането не ми е силна черта и ми изглежда много хамалски. Ако някой се сеща за по елегантен начин?
|
||||||||||
| Автор: | Nikola Kirov [ Нед Авг 20, 2006 12:02 pm ] |
| Заглавие: | |
Ами то в някои други теми си говорихме и за тоя недостатък да ползваш подобията на език за програмиране. Като ти потрябва помощ няма кой да помага. Иначе като гледам дъжината на кода не е чак хамалско решението. Сега Rumen сигурно ще се набере и ще ти напише сигурно друго решение да ме опровергае но това няма да промени ситуацията |
|
| Автор: | milenjs [ Нед Авг 20, 2006 3:01 pm ] |
| Заглавие: | |
Не е чак най-подходящия език за сложни неща но за аматьори като мен върши работа, а и не остава време да се впусна в нещо по сериозно. То за това и програмите ми са някаква смесица 50/50 протон/асемблер... Интересува ме подходящ алгоритъм без значение езика, важна е идеята, щот като гледам по някога елементарни хватки вършат работата на сумати писани ама въпроса е да се сетиш навреме... Между другото тази задачка да си я напиша на асм ми е в пъти по лесно може би немога да се отуча да мисля на асм когато пиша нещо |
|
| Автор: | Реконструктор [ Пон Авг 21, 2006 10:18 am ] |
| Заглавие: | |
Това не го разбрах. На примерите е просто делене на 1000. |
|
| Автор: | milenjs [ Пон Авг 21, 2006 10:45 am ] |
| Заглавие: | |
Рек, така си е - просто деление на 1000 и премахване след това на задните нули + премахване на запетайката в стринга ако е последна, т.е. да не се получи примерно 12, .Не искам да ползвам обаче плаваща запетайка. Идеята ми в общи линии е следната - преброявам цифрите в стринга, от тях изваждам 3 и това число ми дава след коя цифра е запетайката. След това прехвърлям от началния стринг цифрите в изходния като поставям запетайката на вече известното и място. Накрая обшождам изходния стринг отзад напред и следя и премахвам нулите до първото число. При намирането му или намирането на запетая излизам и съм готов. Работи си перфектно, но както казах ми се вижда хамалско решение... Нека някой програмист да предложи нещо по елегантно /най-вече с по-малко код/ че като гледам как заплашително ми свършва програмната памет |
|
| Автор: | Реконструктор [ Пон Авг 21, 2006 11:12 am ] |
| Заглавие: | |
Ами по начало деленето на цели числа си дава пак цяло число?! |
|
| Автор: | milenjs [ Пон Авг 21, 2006 11:28 am ] |
| Заглавие: | |
22/7 не е цяло число. 123450 / 1000 = 123,450 на мен ми трябва като стринг "123,45". Това е идея обаче - да деля целочисленно на 1000 и да ползвам резултата и остатъка от делението. Дали обаче ще стане по компактно - трябва да се пробва. |
|
| Автор: | Реконструктор [ Пон Авг 21, 2006 11:40 am ] |
| Заглавие: | |
В този бейсик няма ли ф-ята Format? |
|
| Автор: | milenjs [ Пон Авг 21, 2006 11:59 am ] |
| Заглавие: | |
Цъ, няма нищо подходящо, търся принципно решение без готови функции |
|
| Автор: | logi [ Пет Авг 25, 2006 5:35 pm ] |
| Заглавие: | |
А втория цикъл прави това за което е предназначен, щото аз като го гледам ми се струва че винаги дава само цялата част. |
|
| Автор: | milenjs [ Пет Авг 25, 2006 8:58 pm ] |
| Заглавие: | |
Втория цикъл премахва излишните нули (аски 48) от дясно като терминира стринга с /0 докато стигне до първото число или ако поледното е запетайка (аски 44). Както казах кода си работи, върши работа и май ще остана на принципа че нещо което работи не се пипа /засега |
|
| Автор: | logi [ Пет Авг 25, 2006 10:53 pm ] |
| Заглавие: | |
Вярно, не бях обърнал внимание къде точно е break-а. Аз бих го реализирал като при претърсването за края на низа намирам и къде е последната различна от 0 цифра. После цикъл за копиране на цифрите преди запетаята. Проверка дали позицията на последната различна от 0 цифра е по-голяма от позицията на запетаята, и ако е така добавяна на запетая и цикъл за копиране до позицията на последната различна от 0 цифра. Това решение не е принципно по-просто, само подредбата е по-различна. |
|
| Автор: | milenjs [ Пет Авг 25, 2006 11:10 pm ] |
| Заглавие: | |
Благодаря за идеята logi, и така става. Искаше ми се да видя такова решение че като го видеш да се плеснеш по главата и да кажеш брех мама му как лесно ставало а аз какво правя, но май за някои неща просто такова няма.... с тези изразни средства де. |
|
| Страница 1 от 1 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|