Вверх ↑
Этот топик читают: Гость
Ответов: 198
Рейтинг: 2
#1: 2013-01-29 11:31:56 ЛС | профиль | цитата
Здравствуйте!

Знаю это вам 10 минут займет, нужна маленькая программка с арифметикой:

Есть файлик текстовой, с данными:

Admin balance:170.0 stat:0
mod balance:57.0 stat:0
Pot balance:198.0 stat:1
Hrom balance:26.0 stat:0

В программе нужна 1 кнопка, которая откроет файлик, отнимет от всех балансов 1% и добавить их сумму в баланс админа, (!) желательно без остатка (строк может быть много)...
Думаю в этой среде сделать такое не сложно, попытаюсь сам сейчас разобраться, если получится сразу же отпишу... если нет, то надеюсь на вашу помощь...

Сорри, если не в той теме отписал, в этом форуме сложнее разобраться, чем в HiAsm... ))
карма: 0

0
vip
#1.1контекстная реклама от партнеров
Гость
Ответов: 17029
Рейтинг: 0
#2: 2013-01-29 12:00:05 правка | ЛС | профиль | цитата


Редактировалось 3 раз(а), последний 2021-05-21 04:59:29
карма: 0

0
Ответов: 198
Рейтинг: 2
#3: 2013-01-29 12:05:54 ЛС | профиль | цитата
95x153x166x188.kubangsm.r писал(а):
зачем так пафосно, можно и просто помогите мне самому влом разбираться

Ну я то не пафосно говорю, я уважаю людей знающих...
Я пытаюсь разобраться, но я не часто имею дела с языками программирования, и поэтому могут уйти многие часы жизни постигая науку методом проб и ошибок...
Конечно, это не мануал от С++ читать, но все же... я даже не знаю, возможно ли тут такое...
карма: 0

0
Разработчик
Ответов: 26066
Рейтинг: 2120
#4: 2013-01-29 12:09:12 ЛС | профиль | цитата
Тема перемещена в другой раздел.

SkyPrinceRus писал(а):
я не часто имею дела с языками программирования

HiAsm не язык программирования как таковой, а графическая оболочка над разными языками программирования. Знание языков программирования на начальном этапе изучения не предполагается
карма: 22

0
Ответов: 9906
Рейтинг: 351
#5: 2013-01-29 12:25:29 ЛС | профиль | цитата
nesco писал(а):
HiAsm не язык программирования как таковой

ОП-па
карма: 9

0
Ответов: 413
Рейтинг: 57
#6: 2013-01-29 12:33:08 ЛС | профиль | цитата
SkyPrinceRus писал(а):
нужна маленькая программка

code_30204.txt
Задание не до конца ясное, не понятно нужно ли процент от баланса админа брать или нет. В схеме все суммировалось и строка с балансом админа заменяется. По примеру, думаю сможешь доделать под себя.

Если от админа процент брать не нужно и суммировать с ним в конце, то схема будет такой:
Add(MainForm,2953706,21,105)
{
}
Add(StrList,10450699,329,210)
{
Point(doReplace)
link(Str,15796485:Value,[])
link(FileName,4519459:Var2,[])
}
Add(Button,14042664,133,98)
{
Top=250
Width=65
Caption="Открыть"
link(onClick,1377368:doExecute,[])
}
Add(ArrayEnum,10730766,343,490)
{
link(onItem,7926257:doSplit,[])
link(onEndEnum,2911326:doEvent1,[(385,503)(385,566)])
link(Array,4489359:Var2,[])
}
Add(ODialog,1377368,182,98)
{
Filter="Тукстовый документ|*.txt*"
FileName="Тукстовый документ.txt"
link(onExecute,13183075:doEvent1,[])
}
Add(Memory,5921908,336,105)
{
}
Add(Hub,13183075,231,98)
{
OutCount=4
link(onEvent1,10450699:doClear,[(302,104)(302,223)])
link(onEvent2,3056013:doWork2,[])
link(onEvent3,10450699:doLoad,[(296,118)(296,244)])
link(onEvent4,7804160:doLoad,[(415,125)(415,356)])
}
Add(Memo,7804160,441,322)
{
Top=5
Width=390
Height=240
link(FileName,4519459:Var3,[(454,152)])
}
Add(Button,5126357,257,476)
{
Left=305
Top=250
Width=85
Caption="Пересчетать"
link(onClick,7212352:doEvent1,[])
}
Add(StrPart,7926257,406,490)
{
Char=":"
link(onSplit,2509880:doSplit,[])
}
Add(StrPart,2509880,448,490)
{
Char=" "
link(onPart,4927789:doEvent,[])
}
Add(MathParse,5337628,665,504)
{
DataCount=3
MathStr="round(%1 - %1/100 + %2 + %3, 0.01)"
link(onResult,16722983:doValue,[(709,510)(709,477)(660,477)(660,440)])
link(X2,16060947:Var2,[])
}
Add(Memory,16722983,672,434)
{
}
Add(Hub,7212352,308,476)
{
OutCount=3
link(onEvent1,11220828:doEvent1,[(336,482)(336,440)])
link(onEvent2,13499133:doReset,[(368,489)(368,454)])
link(onEvent3,10730766:doEnum,[])
}
Add(FormatStr,5436151,777,567)
{
DataCount=1
Mask="Admin balance:%1 stat:0"
link(onFString,15080761:In,[])
link(Str1,7294821:Result,[])
}
Add(LineBreak,13046422,154,245)
{
link(Out,13051351:doEvent1,[])
Primary=[15080761,672,322]
}
Add(DoData,6543310,280,252)
{
Data=Integer(0)
link(onEventData,10450699:doReplace,[])
}
Add(Hub,13051351,245,245)
{
OutCount=4
link(onEvent1,15796485:doValue,[(272,251)(272,167)])
link(onEvent2,6543310:doData,[])
link(onEvent3,7804160:doClear,[(272,265)(272,335)])
link(onEvent4,8685403:doEnum,[(264,272)(264,300)])
}
Add(Memory,15796485,329,161)
{
}
Add(ArrayEnum,8685403,378,294)
{
link(onItem,7804160:doAdd,[(432,300)(432,328)])
link(Array,4489359:Var3,[(384,278)])
}
Add(GetDataEx,4489359,343,273)
{
link(Data,10450699:Array,[])
}
Add(GetDataEx,4519459,336,147)
{
link(Data,5921908:Value,[])
}
Add(Button,5408749,134,161)
{
Left=120
Top=250
Width=65
Caption="Сохранить"
link(onClick,16272977:doExecute,[])
}
Add(SDialog,16272977,182,161)
{
Filter="Тукстовый документ|*.txt*"
FileName="Тукстовый документ.txt"
link(onExecute,1508037:doEvent1,[])
}
Add(HubEx,3056013,252,105)
{
link(onEvent,5921908:doValue,[])
}
Add(Hub,1508037,231,161)
{
link(onEvent1,3056013:doWork3,[(256,167)])
link(onEvent2,10450699:doSave,[(287,174)(287,251)])
}
Add(Switch,13499133,511,441)
{
DataOn=Integer(1)
DataOff=Integer(0)
Point(State)
Point(doOn)
}
Add(IndexToChanel,4927789,511,497)
{
Point(Index)
link(onEvent1,9705462:doEvent1,[(551,503)(551,489)])
link(onEvent2,5337628:doCalc,[])
link(Index,13499133:State,[])
}
Add(Memory,15688061,742,406)
{
}
Add(Hub,11220828,630,434)
{
link(onEvent1,15688061:doClear,[(652,440)(652,419)])
link(onEvent2,16722983:doClear,[])
}
Add(Hub,9705462,560,483)
{
link(onEvent1,15688061:doValue,[(595,489)(595,412)])
link(onEvent2,13499133:doOn,[(586,496)(586,476)(499,476)(499,461)])
}
Add(Math,7294821,777,511)
{
link(Op1,16060947:Var3,[(783,488)])
link(Op2,15688061:Value,[(790,475)(748,475)])
}
Add(GetDataEx,16060947,672,483)
{
link(Data,16722983:Value,[])
}
Add(Hub,2911326,707,560)
{
link(onEvent1,7294821:doOperation,[(749,566)(749,517)])
link(onEvent2,5436151:doString,[])
}


карма: 0

0
файлы: 1code_30204.txt [2.9KB] [416]
Разработчик
Ответов: 26066
Рейтинг: 2120
#7: 2013-01-29 12:36:59 ЛС | профиль | цитата
Galkov писал(а):
ОП-па

Ну и какой это язык программирования, когда у него нет ярковыраженной семантики И разные компоненты, абсолютно одинакового вида могут иметь в разных пакетах совершенно разный код целевого языка.

Пардонсе, но вот это не я писал

Wiki писал(а):
HiAsm или Конструктор программ это прежде всего система визуального проектирования и разработки приложений, не требующая от пользователя знания языков программирования и особенностей функционирования ОС, позволяющая быстро и легко писать (рисовать) небольшие программы.



карма: 22

0
Ответов: 198
Рейтинг: 2
#8: 2013-01-29 12:47:03 ЛС | профиль | цитата
Poputchik писал(а):
Задание не до конца ясное, не понятно нужно ли процент от баланса админа брать или нет. В схеме все суммировалось и строка с балансом админа заменяется. По примеру, думаю сможешь доделать под себя.

Спасибо, добрый человек! Сейчас постараюсь разобраться...
Дело в том, что если отнять от баланса админа и потом снова эту же сумму в сумме с другими отнятыми числами прибавить разницы не будет, я подумал, что проще от всех отнять и к одному прибавить...
карма: 0

0
Ответов: 8888
Рейтинг: 823
#9: 2013-01-29 12:56:04 ЛС | профиль | цитата
SkyPrinceRus писал(а):
проще от всех отнять и к одному прибавить...
Вам в 90-ые годы надо, сейчас поздновато
карма: 19

0
Ответов: 198
Рейтинг: 2
#10: 2013-01-29 13:12:42 ЛС | профиль | цитата
Poputchik писал(а):
Задание не до конца ясное

Да, наверное я криворукий, что даже задание не так поставил...

Нужно было так:

Admin balance:170.0 stat:0
mod balance:57.0 stat:0
Pot balance:198.0 stat:1
Hrom balance:26.0 stat:0

От всех балансов отнять 1%, суммировать эти проценты и добавить админу, а те, что отнятые так и сохранить отнятыми...

В общем:
от баланса: "Admin balance:170.0 stat:0" отнимаем 1%
от баланса: "mod balance:57.0 stat:0" отнимаем 1%
от баланса: "Pot balance:198.0 stat:1" отнимаем 1%
от баланса: "Hrom balance:26.0 stat:0" отнимаем 1%

Суммируем эти проценты (170/100)+(57/100)+(98/100)+(26/100)=3,51
эти 3,51 добавляем админу в баланс...

И все результаты сохраняем:

Admin balance:173,51 stat:0
mod balance:56,43 stat:0
Pot balance:196,02 stat:1
Hrom balance:25,74 stat:0

Вот так должно быть... но я думаю с этими мелочами я сам разберусь, спасибо, что подсказали, как работать с переборами массива


Леонид писал(а):
Вам в 90-ые годы надо, сейчас поздновато

Как я отстал от жизни, аж на слезу пробило
карма: 0

0
Ответов: 413
Рейтинг: 57
#11: 2013-01-29 13:48:17 ЛС | профиль | цитата
SkyPrinceRus писал(а):
эти 3,51 добавляем админу в баланс...

К 170.0 или к админу в баланс с отнятым 1%, судя по
SkyPrinceRus писал(а):
Admin balance:173,51 stat:0

результат не соответствует ни тому ни другому варианту.
Вот для одного варианта (здесь к 168.3):
code_30205.txt
Вот для второго (здесь к 170 прибавляем):
code_30206.txt
Если я не ошибся, то не 3.51, а 4.51 должна сумма процентов получиться
карма: 0

1
файлы: 2code_30205.txt [5.1KB] [438], code_30206.txt [5.1KB] [418]
Голосовали:SkyPrinceRus
Ответов: 198
Рейтинг: 2
#12: 2013-01-29 14:55:33 ЛС | профиль | цитата
Poputchik писал(а):
Если я не ошибся, то не 3.51, а 4.51 должна сумма процентов получиться

Да опечатался, 4.51

То что надо! Спасибо огромное! Дальше я уже все сам доделаю как надо!

Будете в Хабаровске, обязательно пивом угощу!
------------ Дoбавленo в 14.42:
Да, если не трудно подскажите еще, как округлить результаты из Math? Не могу найти
------------ Дoбавленo в 14.53:
А-а, все не надо, нашел уже... Div ))
------------ Дoбавленo в 14.55:
Правда совсем без остатка, но это и лучше, там все равно мелких чисел не будет...
карма: 0

0
Ответов: 8888
Рейтинг: 823
#13: 2013-01-29 16:35:24 ЛС | профиль | цитата
SkyPrinceRus писал(а):
нашел уже... Div
посмотрите сколько формул у MathParse нажав кнопочку с в т. ч. и округление!
code_30208.txt
карма: 19

0
файлы: 1code_30208.txt [438B] [212]
Ответов: 16884
Рейтинг: 1239
#14: 2013-01-30 01:24:56 ЛС | профиль | цитата
......
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1data1.rar [1.2KB] [112]
Ответов: 198
Рейтинг: 2
#15: 2013-01-30 07:04:01 ЛС | профиль | цитата
Спасибо за советы, конечно моя красноречивая речь не дала правильное и точное задание, т. к. хотелось, что бы люди долго не читали )) Да и сам я не знал, что положение адмиан будет меняться, как оказалось, после использования файла в другой программе.

В общем сделал программу на основании предоставленной уважаемым Poputchik. Спасибо ему, что научил пользоваться перебором строк!

Не могу сюда добавить файлы, пишет: "У вас не хватает прав для выполнения этой операции", хотя и упаковал в .rar, хотел поделиться результатом... Если конечно кому может быть интересно...
------------ Дoбавленo в 07.00:
Собственно вот код:

Make(delphi)
ver(4.04 build 184)
Add(MainForm,2953706,21,105)
{
Width=556
Height=462
}
Add(Button,1689517,133,112)
{
Left=30
Top=30
Width=120
Height=35
Caption="Загрузить данные"
link(onClick,12510340:doEvent1,[])
}
Add(Memo,709049,308,84)
{
Left=175
Top=15
Width=350
Height=130
FileName="Баланс.txt"
}
Add(Memo,1649115,781,522)
{
Left=175
Top=150
Width=350
Height=130
FileName="Баланс.txt"
}
Add(ArrayEnum,10730766,322,224)
{
link(onItem,8727575:doSplit,[])
link(onEndEnum,11455724:doEvent1,[])
link(Array,709049:Array,[])
}
Add(StrPart,8727575,434,224)
{
Char=":"
Point(Left)
link(onSplit,16091837:doCompare,[(478,230)(478,272)(422,272)(422,314)])
}
Add(If_else,16091837,434,308)
{
Op2=String(admin balance)
link(onTrue,4286571:doSplit,[(520,314)(520,132)])
link(onFalse,7926257:doSplit,[])
link(Op1,8727575:Left,[])
}
Add(StrPart,7926257,525,315)
{
Char=":"
Point(Left)
link(onSplit,2509880:doSplit,[])
link(Str,16609027:Var2,[])
}
Add(StrPart,2509880,567,315)
{
Char=" "
Point(Right)
Point(Left)
link(onSplit,13083083:doOperation,[(621,321)(621,370)])
}
Add(Math,13083083,637,364)
{
OpType=7
Op2=50
link(onResult,3707098:doEvent1,[])
link(Op1,12966959:Var3,[(643,356)])
}
Add(Math,12159808,630,427)
{
OpType=1
link(onResult,5436151:doString,[(674,433)(674,470)(513,470)(513,489)])
link(Op1,12966959:Var2,[(636,411)(580,411)])
link(Op2,13083083:Result,[])
}
Add(GetDataEx,12966959,574,351)
{
link(Data,2509880:Left,[])
}
Add(FormatStr,5436151,525,483)
{
DataCount=3
Mask="%1:%2.0 %3"
link(onFString,7212352:doEvent2,[(632,489)(632,510)])
link(Str1,7926257:Left,[])
link(Str2,12159808:Result,[(538,465)(636,465)])
link(Str3,2509880:Right,[(545,404)(573,404)])
}
Add(Memory,15688061,763,294)
{
}
Add(Math,7294821,756,364)
{
link(onResult,15688061:doValue,[(800,370)(800,340)(750,340)(750,300)])
link(Op2,16474984:Var2,[])
}
Add(Hub,3707098,693,364)
{
link(onEvent1,7294821:doOperation,[])
link(onEvent2,12159808:doOperation,[(742,377)(742,420)(618,420)(618,433)])
}
Add(StrPart,4286571,574,126)
{
Char=":"
Point(Left)
link(onSplit,16151577:doSplit,[])
link(Str,16609027:Var1,[(580,121)(531,121)])
}
Add(StrPart,16151577,616,126)
{
Char=" "
Point(Right)
Point(Left)
link(onSplit,5518028:doValue,[(656,132)(656,258)])
}
Add(GetDataEx,16609027,525,277)
{
Angle=3
link(Data,10730766:Item,[(328,282)])
}
Add(FormatStr,16328745,903,287)
{
DataCount=3
Mask="%1:%2.0 %3"
link(onFString,7212352:doEvent1,[(940,293)(940,445)(694,445)(694,503)])
link(Str1,4286571:Left,[(909,223)(580,223)])
link(Str2,10873381:Result,[(916,207)(863,207)(863,408)(832,408)])
link(Str3,16151577:Right,[(923,184)(622,184)])
}
Add(Hub,7212352,707,497)
{
InCount=2
OutCount=1
link(onEvent1,1649115:doAdd,[(730,503)(730,528)])
}
Add(Memory,5518028,665,252)
{
Point(Data)
link(Data,16151577:Left,[(671,219)(629,219)])
}
Add(Math,10873381,826,364)
{
link(onResult,16328745:doString,[(880,370)(880,293)])
link(Op1,16474984:Var3,[(832,334)])
link(Op2,5518028:Value,[(839,288)(671,288)])
}
Add(GetDataEx,16474984,763,329)
{
link(Data,15688061:Value,[])
}
Add(Hub,11455724,364,231)
{
OutCount=6
link(onEvent1,10873381:doOperation,[(602,237)(602,370)])
link(onEvent2,1872525:doClear,[(618,244)(618,597)])
link(onEvent3,1872525:doLoad,[(618,251)(618,618)])
link(onEvent4,2755335:doString,[(606,258)(606,475)])
link(onEvent5,1649115:doSave,[(580,265)(580,563)])
link(onEvent6,1872525:doSave,[(618,272)(618,625)])
}
Add(Hub,12510340,224,112)
{
OutCount=5
link(onEvent1,709049:doLoad,[])
link(onEvent2,1649115:doClear,[(290,125)(290,535)])
link(onEvent3,5518028:doClear,[(452,132)(452,265)])
link(onEvent4,15688061:doClear,[(500,139)(500,307)])
link(onEvent5,10730766:doEnum,[(280,146)(280,230)])
}
Add(Memo,1872525,858,584)
{
Left=175
Top=285
Width=350
Height=130
FileName="Доход.txt"
}
Add(Time,16319379,882,385)
{
Format="D.M h:m"
}
Add(FormatStr,2755335,854,469)
{
Mask="%1 Налог = %2"
link(onFString,1872525:doAdd,[(898,475)(898,533)(846,533)(846,590)])
link(Str1,16319379:FormatTime,[(860,457)(888,457)])
link(Str2,16474984:Var1,[(867,415)(760,415)(760,334)])
}

------------ Дoбавленo в 07.04:
Только финальная версия работает при открытии формы, и форму закрывает...
Собственно, что и требовалось...

Сорри за коряво расставленные модули, после того как все начало получаться уже лень было что-то двигать

Второй раз уже пригодился ваш "HiAsm не язык программирования как таковой", спасибо разработчикам
карма: 0

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)