Форум: "Прочее";
Текущий архив: 2011.06.19;
Скачать: [xml.tar.bz2];
ВнизИнтересный алгоритм в обычном калькуляторе. Найти похожие ветки
← →
KilkennyCat © (2011-02-25 22:24) [40]
> тут будет ошибка в своевременности прсвоения переменной
> А и Б если А=0 или нет.
да, возможно.
это решается малюсенькой доработкой, как я уже сказал, двойной обработкой "равно" (чтобы не лепить громадье условий и не вводить лишнии переменные)
а проверять это мне лень было, это ж надо делфи запускать... столько баттнов кидать...
← →
Inovet © (2011-02-25 22:25) [41]> [27] Leon-Z © (25.02.11 22:00)
> "польскую запись" - специальный
> алгоритм для вычисления выражений
Оно не вредно, но для двух операндов лишнее, имхо.
← →
KilkennyCat © (2011-02-25 22:25) [42]
> Inovet © (25.02.11 22:23) [38]
я все никак не соберусь найти виденный когда калькулятор с историей и с вмешательством в любой момент истории. он еще красиво так был сделан, типа как крутые с принтером.
← →
Inovet © (2011-02-25 22:29) [43]> [42] KilkennyCat © (25.02.11 22:25)
> типа как крутые с принтером.
Что-то помню такое. Лента лезла из него. Старый вроде бы он.
← →
KilkennyCat © (2011-02-25 22:31) [44]ага.
← →
Fergo © (2011-02-25 22:32) [45]вариант с тагами мне понравился, ща буду кубатурить. спс всем) но если кто нибудь скинет готовый рабочий алгоритм буду признателен..
← →
Inovet © (2011-02-25 22:49) [46]> [42] KilkennyCat © (25.02.11 22:25)
> с вмешательством в любой момент истории
Посмотрел в Win7 - тоже можно в истории править, только пересчитывается правленая строка, а она может быть 123+456/789*159. Вот это выражение прямо в калькулятор скопировал.
← →
Inovet © (2011-02-25 23:02) [47]Делал как-то символьный вычислитель одному студенту. Залил экзешник, проверил на всякий случай http://www.virustotal.com
Название: CompareExpr.rar
Размер: 242.09 кб
Доступен до: 2011-03-27 23:58:13
Ссылка для скачивания файла: http://webfiles.ru/22111831
← →
xmen (2011-02-25 23:29) [48]
> Fergo © (25.02.11 22:10) [29]
>
> нашел ток "обратную польскую запись":
это совсем для других целей ...
← →
Fergo © (2011-02-26 01:30) [49]Так народ, все. догнал сам. спс всем и отдельное спс KilkennyCat за то что напомнил про таги).
Если кому надо вот код...
var
Form1: TForm1;
x,y,z: Extended;
oper: Integer;
Check1, Check2: boolean;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
case (sender as TComponent).tag of
0..9 : Begin
if Check2=true then
Begin
x:=StrToFloat(Edit1.Text);
Check2:=false;
End;
if Check1=true then Edit1.Text:="0";
if Edit1.text ="0" then Edit1.Text:=IntToStr((sender as TComponent).tag) else Edit1.text:= Edit1.text + IntToStr((sender as TComponent).tag);
Check1:=false;
if oper<>0 then y:=StrToFloat(Edit1.Text) else x:=StrToFloat(Edit1.Text);
End;
10 : if pos(".",Edit1.text) < 1 then Edit1.text := Edit1.text + ".";
11..14 : Begin
oper:=(sender as TComponent).tag - 10;
Check1:=true;
if Check2=true then y:=StrToFloat(Edit1.Text);
End;
15 : Begin
if oper<>0 then
if Check2=false then
Begin
case oper of
1 : Edit1.Text:=FloatToStr(x*y);
2 : Edit1.Text:=FloatToStr(x/y);
3 : Edit1.Text:=FloatToStr(x+y);
4 : Edit1.Text:=FloatToStr(x-y);
End;
Check2:=true;
End
Else
Begin
case oper of
1 : Edit1.Text:=FloatToStr(StrToFloat(Edit1.Text)*y);
2 : Edit1.Text:=FloatToStr(StrToFloat(Edit1.Text)/y);
3 : Edit1.Text:=FloatToStr(StrToFloat(Edit1.Text)+y);
4 : Edit1.Text:=FloatToStr(StrToFloat(Edit1.Text)-y);
End;
End;
End;
end;
end;
← →
KilkennyCat © (2011-02-26 01:34) [50]нахрена из опера десятку вычитаешь? я ее вставлял лишь для совместимости с предыдущим постом.
и проверку его на ноль странно делать. если и будет равен нулю, то только при первом запуске.
← →
KilkennyCat © (2011-02-26 01:35) [51]и целых два флага... ужасть. они избыточны.
давай доделывай.
мы против сырых калькуляторов! :)
← →
KilkennyCat © (2011-02-26 01:36) [52]и вот это:
FloatToStr(StrToFloat( - за это расстрел на месте.
← →
Fergo © (2011-02-26 01:40) [53]сорь доделаю завтра эт мелочи ща лабал как мог на скорость пока жена царапала) кстати а про флаги я хз че там придумать.. если есть варианты подкинь идей... я спать) а то загрызет)
← →
KilkennyCat © (2011-02-26 01:44) [54]
> про флаги
менять тэг. тэг в качестве флага - в большинстве случаев идеальная вещь. не требует переменной. глобален.
← →
Rouse_ © (2011-02-26 01:48) [55]Фига у людей проблемы.
Блин, я даж немного в задумчивости...
Казалось бы сложить два числа. Мдя... Пошел таки принципиально искать форумы для начинающих врачей. Хз, мошт их реально так-же учат?
← →
Inovet © (2011-02-26 01:53) [56]Я что-то не доглядел. Зачем флаги? Состояние регистров для такой логики, как в [0] сдвигаем привычислении из аккумулятора во второй регистр
шаг действие x y op
1. с 0 0 n
2. 3 3 0 n
3. + 3 3 +
4. 4 4 3 +
5. = 7 4 +
6. = 11 4 +
7. + 11 11 +
8. = 22 11 +
9. с 0 0 n
← →
Inovet © (2011-02-26 01:54) [57]> [56] Inovet © (26.02.11 01:53)
шаг действие x y op
1. с 0 0 n
2. 3 3 0 n
3. + 3 3 +
4. 4 4 3 +
5. = 7 4 +
6. = 11 4 +
7. + 11 11 +
8. = 22 11 +
9. с 0 0 n
← →
KilkennyCat © (2011-02-26 02:07) [58]
> Inovet ©
да, верно. наглядная табличка.
← →
KilkennyCat © (2011-02-26 02:09) [59]
> Rouse_ © (26.02.11 01:48) [55]
я бы не утверждал, что именно у людей проблемы. фиг его знает, кто там за компом. может, инопланетяне.
← →
Inovet © (2011-02-26 02:33) [60]Нет. Последнее действие надо отмечать, если оно было "=", то не сдвигать при "=". Это режим с константой называется т.е. признак режима нужен.
А вот по другой логике после "=" сбрасывать op. Это без константы.
← →
Fergo © (2011-02-26 12:00) [61]Удалено модератором
← →
Fergo © (2011-02-26 12:07) [62]Удалено модератором
← →
Inovet © (2011-02-26 12:20) [63]> [61] Fergo © (26.02.11 12:00)
> (ща вы скажете что я совсем тютю..) а вы дальше по табле
> посмотрите и поймете что без флагов тут никуда
Не скажу. Ты посмотри следующие посты, про режим с константой, в некоторых калькуляторах он даже специально включается и на индикаторе отображается, так что надо поднять флаг если действие "=", если текущее "=" и флаг
поднят не сдвигать.
if (действие <> "=") or not f then сдвигаем;
f := действие = "=";
Ешё из этого режима попробуй
1+2=
4=
10=
← →
Inovet © (2011-02-26 12:23) [64]Удалено модератором
← →
Tag (2011-02-26 12:31) [65]> спс всем и отдельное спс KilkennyCat за то что напомнил про таги
Использование Tag сродни использованию Goto.
Биойогурт, создающий благоприятную микрофлору в кишечнике, способствующую более <strikeout>легкой дефекации</strikeout> эффективному говнокодированию.
← →
Fergo © (2011-02-26 12:31) [66]я мож чго не понимаю в том что ты мне пытаешься обьяснить.. но мне кажется что Check2 в моем коде как раз это и делает...
← →
Fergo © (2011-02-26 12:36) [67]я как то помню пытался алгоритм составить где надо было вводить цифры в массив а потом они длжны были выборочно рандомно выбраться и ниразу не повториться. как песни в винампе типа проигрываются и чтоб рандомно и не повторялись.. все оказалось оч просто но всеж часа 3 я потупить умудрился над этой задачкой)
← →
Tag (2011-02-26 12:38) [68]Удалено модератором
← →
Fergo © (2011-02-26 12:40) [69]Inovet ты приведи код рабочего калька с таким алгоритмом..) я пока своим доволен но хотелось бы по рационльнее.. а то 3 флага и правда много.. но хз мож в мелкософтовском кальке тож как нибудь так... в электронных то там вообще одни триггеры и логические AND XOR OR NOT итд.. но и в них этот алгоритм есть...
← →
Fergo © (2011-02-26 12:41) [70]
> Tag
код в студию!)
← →
Tag (2011-02-26 12:46) [71]> Fergo © (26.02.11 12:41) [70] код в студию!)
См. Fergo © (26.02.11 01:30) [49]
← →
Inovet © (2011-02-26 12:52) [72]> [69] Fergo © (26.02.11 12:40)
> Inovet ты приведи код рабочего калька с таким алгоритмом..)
Так не интересно тебе же самому.
← →
Fergo © (2011-02-26 12:57) [73]
> Inovet © (26.02.11 12:52) [72]
> Так не интересно тебе же самому.
Интересно или нет эт я сам решу... Просто это не первый форум где я этот вопрос задавал. и пока никто толком не сделал этот алгоритм. только теории... а в реале 0
← →
Fergo © (2011-02-26 13:01) [74]фиг знает мне вот наоборот нравится решать подобные задачки если этого еще кто нибудь просит, но над этой я оч давно бьюсь(
← →
Tag (2011-02-26 13:12) [75]> Fergo © (26.02.11 12:57) [73] и пока никто толком не сделал этот алгоритм
Анекдот про неуловимого Джо знаешь?
> Fergo © (26.02.11 13:01) [74] фиг знает мне вот наоборот нравится решать подобные задачки если этого еще кто нибудь просит, но над этой я оч давно бьюсь(
Судя по обилию постов, ты просто флудишь на форуме.
P.S. Никто не безгрешен...
← →
Inovet © (2011-02-26 13:34) [76]> [75] Tag (26.02.11 13:12)
> Судя по обилию постов, ты просто флудишь на форуме.
Код клянчит готовый и на слабо разводит.
← →
Inovet © (2011-02-26 13:36) [77]> [73] Fergo © (26.02.11 12:57)
> пока никто толком не сделал этот алгоритм
Тебе весь алгоритм разъяснили, да какой там алгоритм и теории - пшик один.
Спрашивай, что не ясно в двух строчках кода.
← →
KilkennyCat © (2011-02-26 14:22) [78]
> Tag (26.02.11 12:31) [65]
>
> > спс всем и отдельное спс KilkennyCat за то что напомнил
> про таги
>
> Использование Tag сродни использованию Goto.
А пояснить? (не про биойогурт)
← →
Fergo © (2011-02-26 14:25) [79]Удалено модератором
← →
KilkennyCat © (2011-02-26 14:56) [80]
> Fergo © (26.02.11 14:25) [79]
>
> пока только я код привел более
> менее рабочий
да. он правда очень сильно напоминает мой, но это, наверное, совпадение?
Страницы: 1 2 3 вся ветка
Форум: "Прочее";
Текущий архив: 2011.06.19;
Скачать: [xml.tar.bz2];
Память: 0.62 MB
Время: 0.006 c