3 дня на калькулятор

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by W!z@rD, 22 Sep 2007.

  1. W!z@rD

    W!z@rD Борец за русский язык

    Joined:
    12 Feb 2006
    Messages:
    973
    Likes Received:
    290
    Reputations:
    43
    не думал что написание калькулятора займет 3 дня... ну если принть во внимание что в день уделял часа 2, то мб норм.
    кстати... C# ;)
    [​IMG]
    кто сможет исправить глюк буду благодарен.
    суть:
    не перезватывается клавиша BackSpace, т.е. брейк срабатывает... но нет ее функциональности (не удаляется символ слева :( )

    PHP:
    private void CheckDown(KeyEventArgs e)
            {
                if (
    e.KeyCode == Keys.Oemcomma)
                {
                    if (
    textBox1.Focused)
                    {
                        if (
    textBox1.Text.IndexOf(",") == -1)
                        {
                            
    textBox1.Text += ",";
                        }
                    }
                    else
                    {
                        if (
    textBox2.Text.IndexOf(",") == -1)
                        {
                            
    textBox2.Text += ",";
                        }
                    }
                }
                
    ValidKey false;
                if (
    e.KeyCode Keys.D0 || e.KeyCode Keys.D9)
                {
                    
    ValidKey true;
                }
                if (
    e.KeyCode == Keys.Back || e.KeyCode == Keys.Delete)
                {
                    
    ValidKey true;
                }
            }
    вот событие
    PHP:
            private void textBox1_KeyPress(object senderKeyPressEventArgs e)
            {
                
    /*if (e.KeyChar == (char)Keys.Back)
                {
                    e.Handled = true;
                }*/
                
    if (ValidKey)
                {
                    
    e.Handled true;
                }
            }

            private 
    void textBox1_KeyDown(object senderKeyEventArgs e)
            {
                
    CheckDown(e);
            }
    исходник и бинарник
     
    #1 W!z@rD, 22 Sep 2007
    Last edited: 22 Sep 2007
    6 people like this.
  2. in_colour

    in_colour New Member

    Joined:
    26 Aug 2007
    Messages:
    19
    Likes Received:
    2
    Reputations:
    0
    Добавь туду степени и корни квадратные :)
     
  3. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,118
    Reputations:
    1,139
    А еще синусы, косинусы (желательно вручную разложением в ряд Тейлора), экспоненту, логарифмы, приближенное вычисление определенных интегралов, причем разными методами, так же не отказался бы, чтобы он автоматически решал криволинейные интегралы 1,2 рода, поверхностные, двойные, тройные, m-кратные. Еще было бы неплохо добавить дифференциальное исчисление скалярных и векторных полей - градиент, ротор, дивергенция.
    Тогда я возьму твою прогу с собой на зачёт ;)
     
    2 people like this.
  4. Joker-jar

    Joker-jar Elder - Старейшина

    Joined:
    11 Mar 2007
    Messages:
    581
    Likes Received:
    205
    Reputations:
    37
    Кстати, ни в одном из калькуляторов не встречал перевод из Dec в Bin дробных чисел. Там алгоритм то простой...
     
  5. W!z@rD

    W!z@rD Борец за русский язык

    Joined:
    12 Feb 2006
    Messages:
    973
    Likes Received:
    290
    Reputations:
    43
    эмм...
    не все сразу) вы что... я только начинаю изучать, а вы меня уже =( бррр...
     
    1 person likes this.
  6. lsass.exe

    lsass.exe Elder - Старейшина

    Joined:
    5 Aug 2007
    Messages:
    156
    Likes Received:
    161
    Reputations:
    24
    Как-то давно тоже тренировался и сделал калькулятор,тока на Делфи,если нужно могу поискать сорсы )))

    http://lsass.us/fl/calc.jpg

    ТС продолжай добавлять функции ;)
     
    #6 lsass.exe, 23 Sep 2007
    Last edited: 29 Sep 2007
    1 person likes this.
  7. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,118
    Reputations:
    1,139
    Ну вообщем да.
    Стандартом IEEE 754 описываются форматы представления вещественных чисел с плавающей запятой, известные в языке Си как float и double.
    float занимает 32 бита, самый старший (31-й) бит - знаковый, дальше 8 бит экспонента (в смещенном виде по базе 127) и 23 бита мантиссы.
    Число с плавающей запятой равно s*m*2^e, где s - знаковый бит, m - мантисса, e - экспонента.
    В числе float экспонента хранится сложенной со 127 (так называемый смещенный вид). Чтобы получить реальную степень двойки, нужно вычесть 127 из значения экспоненты в числе.
    Мантисса с логической точки зрения представляет собой число на промежутке [1;2), которое умножается на 2 в степени с показателем, равному экспоненте.
    Представляется оно в виде числа с фиксированной запятой - один бит на целую часть и 23 бита на дробную. Поскольку целая часть всегда =1 в этом промежутке, то целая часть мантиссы в числе не хранится, все 23 бита занимает ее дробная часть.
    Дробная часть представляет собой биты с отрицательными степенями двойки, например
    10000000000000000000000 это 0.5, поскольку еденица в старшем бите представляет собой 2 ^ -1 = 1/2 = 0.5
    01000000000000000000000 это 0.25, поскольку еденица в 21м разряде представляет собой 2 ^ -2 = 1/4 = 0.25
    В этом нужно добавить еденицу (1.0) и получится значение мантиссы.

    Например, число 0 10000000 10000000000000000000000:
    знак = 0 (плюс)
    экспонента = 10000000b - 127 = 128 - 127 = 1
    мантисса:
    1000000000000000000000 это 0.5
    Соответственно мантисса равна 0.5 + 1.0 = 1.5

    Число равно +1.5 *2^1 = 3.0

    Формат double аналогичен лишь с той разницей, что там 1 бит знаковый, 11 бит экспонента и 52 бита мантисса (суммарно 8 байт)
     
    1 person likes this.
  8. z01b

    z01b Муджахид

    Joined:
    5 Jan 2007
    Messages:
    494
    Likes Received:
    382
    Reputations:
    22
    В calc.exe есть )
     
    2 people like this.
  9. +toxa+

    +toxa+ Smack! SMACK!!!

    Joined:
    16 Jan 2005
    Messages:
    1,674
    Likes Received:
    1,028
    Reputations:
    1,228
    Ну это ж ужас на самом деле)
    У нас не один препод не смог объяснить зачем нам это надо ^^
     
    _________________________
  10. ZaCo

    ZaCo Banned

    Joined:
    20 Jun 2005
    Messages:
    737
    Likes Received:
    336
    Reputations:
    215
    >>У нас не один препод не смог объяснить зачем нам это надо ^^
    как так? хотя для получения конкретного значения синуса и косинуса в стандартных реализациях применяются более быстрее методы.
     
  11. +toxa+

    +toxa+ Smack! SMACK!!!

    Joined:
    16 Jan 2005
    Messages:
    1,674
    Likes Received:
    1,028
    Reputations:
    1,228
    Вопрос и стоял как раз о том что есть более быстрые методы
     
    _________________________
  12. ZaCo

    ZaCo Banned

    Joined:
    20 Jun 2005
    Messages:
    737
    Likes Received:
    336
    Reputations:
    215
    тему не изучал, но больше чем уверен, что они сложнее, а разложение на ряд тейлора универсальнее.
    >>что есть более быстрые методы
    ну никто же не будет давать пятикласснику задачу по теме производной, например
     
    1 person likes this.
  13. +toxa+

    +toxa+ Smack! SMACK!!!

    Joined:
    16 Jan 2005
    Messages:
    1,674
    Likes Received:
    1,028
    Reputations:
    1,228
    >тему не изучал, но больше чем уверен, что они сложнее, а разложение на ряд тейлора универсальнее.
    только ручками надоест высчитывать пачку производных)
     
    _________________________
  14. Helios

    Helios Elder - Старейшина

    Joined:
    14 Jan 2007
    Messages:
    414
    Likes Received:
    180
    Reputations:
    103
    В ряд Тейлора можно разложить не только синус и косинус, но и их комбинации, а на счет тех методов, которые более быстры, я в этом не уверен.
     
    2 people like this.
  15. ~Lexx~

    ~Lexx~ Elder - Старейшина

    Joined:
    30 Sep 2006
    Messages:
    195
    Likes Received:
    28
    Reputations:
    0
    А еще можно было бы закинуть туда решение СЛАУ, и нелинейных, + диф уры. У меня есть пару исходников решенных методом последовательных верхних релаксаций, только оно все правлено под джаву - придеться немного поменять синтаксис.
     
  16. ProTeuS

    ProTeuS --

    Joined:
    26 Nov 2004
    Messages:
    1,239
    Likes Received:
    541
    Reputations:
    445
    http://wasm.ru/article.php?article=addfunc
    =\