Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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
2-1300090835
ArNa
2011-03-14 11:20
2011.06.19
Хэлп плиз с Excel &amp; MainMenu


15-1298375142
Empleado
2011-02-22 14:45
2011.06.19
Goto in Delphi


6-1238322888
alshtam
2009-03-29 14:34
2011.06.19
Indi, проблема с чтением из сокета данных


2-1299748767
laby
2011-03-10 12:19
2011.06.19
При вызове sp часики убрать


6-1230461387
WeTeR
2008-12-28 13:49
2011.06.19
Отправка очереди из изображений по сети





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский