не думал что написание калькулятора займет 3 дня... ну если принть во внимание что в день уделял часа 2, то мб норм. кстати... C# кто сможет исправить глюк буду благодарен. суть: не перезватывается клавиша 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 sender, KeyPressEventArgs e) { /*if (e.KeyChar == (char)Keys.Back) { e.Handled = true; }*/ if (ValidKey) { e.Handled = true; } } private void textBox1_KeyDown(object sender, KeyEventArgs e) { CheckDown(e); } исходник и бинарник
А еще синусы, косинусы (желательно вручную разложением в ряд Тейлора), экспоненту, логарифмы, приближенное вычисление определенных интегралов, причем разными методами, так же не отказался бы, чтобы он автоматически решал криволинейные интегралы 1,2 рода, поверхностные, двойные, тройные, m-кратные. Еще было бы неплохо добавить дифференциальное исчисление скалярных и векторных полей - градиент, ротор, дивергенция. Тогда я возьму твою прогу с собой на зачёт
Кстати, ни в одном из калькуляторов не встречал перевод из Dec в Bin дробных чисел. Там алгоритм то простой...
Как-то давно тоже тренировался и сделал калькулятор,тока на Делфи,если нужно могу поискать сорсы ))) http://lsass.us/fl/calc.jpg ТС продолжай добавлять функции
Ну вообщем да. Стандартом 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 байт)
>>У нас не один препод не смог объяснить зачем нам это надо ^^ как так? хотя для получения конкретного значения синуса и косинуса в стандартных реализациях применяются более быстрее методы.
тему не изучал, но больше чем уверен, что они сложнее, а разложение на ряд тейлора универсальнее. >>что есть более быстрые методы ну никто же не будет давать пятикласснику задачу по теме производной, например
>тему не изучал, но больше чем уверен, что они сложнее, а разложение на ряд тейлора универсальнее. только ручками надоест высчитывать пачку производных)
В ряд Тейлора можно разложить не только синус и косинус, но и их комбинации, а на счет тех методов, которые более быстры, я в этом не уверен.
А еще можно было бы закинуть туда решение СЛАУ, и нелинейных, + диф уры. У меня есть пару исходников решенных методом последовательных верхних релаксаций, только оно все правлено под джаву - придеться немного поменять синтаксис.