Jump to content
  • 0

JS калькулятор


psywalker
 Share

Question

Приветствую!

Значит решил попробовать сделать калькулятор на JS, своими силами, т.е. руководствуясь только своими знаниями. Думаю, так будет лучше, так как в силу долгих мучений, это наверняка принесёт свои плоды.

Но вот всё-же в итоге попал в тупик и хочу узнать некоторые вещи, чтобы двинуться дальше.

(На код не смотрите, он ужасен, просто это первый вариант, второй уже надеюсь будет лучше)

Вопросы:

1) Как мне написать в условии if(), что типа Если в value у моего импута уже есть (допустим) две Точки (.) или один знак Минус (-), то больше поставить нельзя, сколько бы я не нажимал на эти кнопки?

2) Как мне кнопкой ( << ) тупо убрать последний символ из строки, при этом не нарушив работу калькулятора?

(Это кнопка для того, чтобы, Если я например случайно написал не то число, то стереть его)

3) После того, как я жму знак Равно (=), то у меня вроде-бы всё высчитывается, НО проблема в том, что далее чтобы считать новые числа, мне приходится всё сбрасывать, а мне хотелось-бы просто допустим продолжать дальше считать с получившегося результата. Как это сделать?

Ссылка:

http://www.psywalker.ru/Forum/JS/Primitive/calculat.html

Link to comment
Share on other sites

  • Answers 71
  • Created
  • Last Reply

Top Posters For This Question

Recommended Posts

  • 0
Читай для начала про eval

Дело в том, что я уже узнал про эту функцию, мало того она мне помогла смастерить то, что щас уже есть.

Но она не отвечает на мои вопросы, поэтому я их и задаю. :unsure:

А вообще я так понял, что эта функция компилирует в себе код, например который является строкой, т.е. она легко может перевести строку в уравнение, если та позволяет это сделать.

Link to comment
Share on other sites

  • 0
Дело в том, что я уже узнал про эту функцию, мало того она мне помогла смастерить то, что щас уже есть.

Но она не отвечает на мои вопросы, поэтому я их и задаю. :unsure:

А вообще я так понял, что эта функция компилирует в себе код, например который является строкой, т.е. она легко может перевести строку в уравнение, если та позволяет это сделать.

Верно

Link to comment
Share on other sites

  • 0
1. indexOf

2. вроде все работает

3. вроде тоже работает

1) Эта штука выцепляет позицию в строке, а мне нужно чтобы я мог сказать типа: Если в этой строке больше двух (каких то символов), то ...

2) Не работает. Смотри, возьми например нажми число 2*2, потом (<<), далее нажми снова 2 и вместо 4-ёх получишь ответ: 8

3) Странно, вроде не работал) Будем проверять ещё!

Link to comment
Share on other sites

  • 0
1) Эта штука выцепляет позицию в строке, а мне нужно чтобы я мог сказать типа: Если в этой строке больше двух (каких то символов), то ...

2) Не работает. Смотри, возьми например нажми число 2*2, потом (<<), далее нажми снова 2 и вместо 4-ёх получишь ответ: 8

3) Странно, вроде не работал) Будем проверять ещё!

1. Если функция возвращает -1, значит такого символа в строке нет.

2. Меняй логику работы с выражением. До тех пор, пока пользователь не нажад на =, не надо ничего считать

Link to comment
Share on other sites

  • 0
1. Если функция возвращает -1, значит такого символа в строке нет.

2. Меняй логику работы с выражением. До тех пор, пока пользователь не нажад на =, не надо ничего считать

Спасибо дружище, соберу все знания, сделаю и покажу, что получилось.

Link to comment
Share on other sites

  • 0
2. Меняй логику работы с выражением. До тех пор, пока пользователь не нажад на =, не надо ничего считать

Если задача написать настоящий калькулятор, то он должен считать и при нажатии на любую кнопку операции (+, -, *, /). Т.е. надо чтоб считал так: 2*2 - ничего не считает, 2*2*(или +, -, /, =) - выдает 4.

Может при нажимании на равно устанавливать какой-нибудь флажок в true. Потом смотреть если true, значит равно нажали, а потом после нажимания любой кнопки на калькуляторе (цифры или операции) флажок обнулять - false.

Так же не плохо бы запоминать последнюю операцию, т.е. на настоящем калькуляторе я жму так: 2*2= - будет 4, потом продолжаю жать = - продолжает умножать на 2.

Link to comment
Share on other sites

  • 0

Сижу вот скучаю на работе смотрю калькулятор ну разве не интересно за тестировать даже если сам js не силен? Ну и вот со времен Московского Энергетического Института калькуляторы у меня были только инженерные и набрав на скорую руку 3-8+77 я понял что оно так не работает)))

Link to comment
Share on other sites

  • 0
Сижу вот скучаю на работе смотрю калькулятор ну разве не интересно за тестировать даже если сам js не силен? Ну и вот со времен Московского Энергетического Института калькуляторы у меня были только инженерные и набрав на скорую руку 3-8+77 я понял что оно так не работает)))

А по твоему как правильно должен работать калькулятор? Опиши все признаки плиз.

Link to comment
Share on other sites

  • 0
меню пуск --> выполнить --> calc.exe --> Ok :unsure:

Это я понял, я так делал, но всё-же, может быть это не чёткий калькулятор? Хотелось-бы узнать именно, как должно быть правильно.

Link to comment
Share on other sites

  • 0
Это я понял, я так делал, но всё-же, может быть это не чёткий калькулятор? Хотелось-бы узнать именно, как должно быть правильно.

Например когда я жму скажем знак (-), то в этом калькуляторе он нигде не ставится, а значит я не знаю, какое именно действие я сейчас выполняю. А на некоторых ставиться и т.д. В общем везде по разному с разными действиями. Хочу знать правду! :unsure:

Link to comment
Share on other sites

  • 0

psywalker,

Ну, калькулятор там вполне четкий.

Если интересно, могу вставить свои пять копеек по функционалу.

Например, даже если не брать инженерный вариант, тебе надо вычислить 10+5-4. На обычном калькуляторе ты набираешь 10+5 и по нажатию на минус, у тебя также происходит вычисление. У тебя же просто проставляется знак (при условии, что его не было ранее) как если бы предлогалось полностью ввести пример, а потом произвести вычисление. Т.е. вводишь 2+2/2, а тебе дает ответ 3.

Также не правильно работают проценты, нет извлечения корня и нельзя изменить положительное число на отрицательное (и наооборот).

И кстати, что за загадочная кнопка "R"?

Link to comment
Share on other sites

  • 0
А по твоему как правильно должен работать калькулятор? Опиши все признаки плиз.

я к тому что сам калькулятор позволяет ввести http://s44.radikal.ru/i104/1004/ab/9f13716fd996.bmp однако он это считать категорически отказывается и выводит числа на угад )))

Для меня главный признак работы калькулятора это горящий дисплей... а вообще вот для примера тоже калькулятор http://www.izone.ru/images/kalkuljator.gif

Link to comment
Share on other sites

  • 0
psywalker,

Ну, калькулятор там вполне четкий.

Если интересно, могу вставить свои пять копеек по функционалу.

Например, даже если не брать инженерный вариант, тебе надо вычислить 10+5-4. На обычном калькуляторе ты набираешь 10+5 и по нажатию на минус, у тебя также происходит вычисление. У тебя же просто проставляется знак (при условии, что его не было ранее) как если бы предлогалось полностью ввести пример, а потом произвести вычисление. Т.е. вводишь 2+2/2, а тебе дает ответ 3.

Также не правильно работают проценты, нет извлечения корня и нельзя изменить положительное число на отрицательное (и наооборот).

И кстати, что за загадочная кнопка "R"?

Да, спасибо за мнение. Постаряюсь всё учесть, но к сожалению это для меня трудно воплотить, так как я не знаком с JS, только немного.

Насёт кнопки "R", это я придумал. Мой калькулятор запоминает все результаты, а потом при нажатии на кнопку эту, он их выводит через запятую))

Также не правильно работают проценты, нет извлечения корня и нельзя изменить положительное число на отрицательное (и наооборот).

А вот тут хотелось-бы поточнее кое-что узнать.

Во-первых это у меня не проценты(%), а остаток и он работает правильно. Но соглашусь, это же знак процентов вроде?

1) Я не могу найти на клавиатуре следующие знаки: Проценты, Корень и тогда-уже Остаток. Где их вообще взять и как внедрить в калькулятор?

2) А как вообще правильно высчитываются корень и проценты?

3) А что значит: Изменить положительное на отрицательное?

Link to comment
Share on other sites

  • 0
А вот тут хотелось-бы поточнее кое-что узнать.

Во-первых это у меня не проценты(%), а остаток и он работает правильно. Но соглашусь, это же знак процентов вроде?

1) Я не могу найти на клавиатуре следующие знаки: Проценты, Корень и тогда-уже Остаток. Где их вообще взять и как внедрить в калькулятор?

2) А как вообще правильно высчитываются корень и проценты?

% - это вроде всегда знаком процентов и был...

Смотри я ввожу:

100*20% в результате должна получить сколько составляет 20% от 100. У тебя получается 200000, т.е. у тебя вычисление происходит, как если бы 100*2000%.

или

100+20%, должно получится 120, у тебя получается 220, т.е. 100+100*20%.

Т.е. "бумажке" процент вычисляется, например 20% от 100 - 100/100*20=20. Обычно должен быть свой оператор для этого действия (также как +, -, *, /).

Под корнем я имею ввиду обычный квадратные корень. Т.е. корень из 100 = 10, т.е. 10^2. Для него также должен быть свой оператор. Обычно что-то вроде "sqr", точно как в JS сказать не могу, т.к. тоже только начала изучать его и полного списка пока не искала.

Что ты подрузамеваешь под остатком?

3) А что значит: Изменить положительное на отрицательное?

Например, ты вычисляешь: 2-5 в результате получаешь -3. Дальше хочешь оперировать им как положительными числом, нажимаешь кнопку "-/+" и получаешь просто 3. И наооборот, если хочешь сделать положительное число отрицательным, нажимаешь на эту кнопку и получаешь -3.

Link to comment
Share on other sites

  • 0

Да, я понял, нужно где-то искать эти знаки.

Кстати прикол в том, что вот этот знак % JS (у меня по крайней мере) высчитывает, именно как остаток, а не как проценты. Т.е. смотри, например 20/18, получаем, что в 20 один раз встречается 18, а остаток 2, именно так он и считает, и это правильно с точки зрения Остатка. А вот что делать с процентами и где их брать, я пока ещё не знаю.

Link to comment
Share on other sites

  • 0
Макс, а что тебе мешает подсмотреть на живых примерах?

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

Link to comment
Share on other sites

  • 0

rus,

По-моему вначале интересней самому попробовать свои силы. А потом уже путем сравнения совершенствовать свои навыки.

psywalker

Смотри, для квадратного корня нашла такую функцию Math.sqrt(n); (http://javascript.ru/forum/misc/4429-kak-izvlech-kvadratnyjj-koren.html).

Еще нашла такую, табличку http://wdh.suncloud.ru/js04.htm, может тоже поможет.

Link to comment
Share on other sites

  • 0
Но опять-же они все разные и функционал у каждого свой, в любом случае имеется непохожесть у некоторых.

Да, там функционал разный, но можно от каждого подсмотреть те функции, которые тебе нужны и уже на их основе так сказать сделать свой велик.

rus,

По-моему вначале интересней самому попробовать свои силы. А потом уже путем сравнения совершенствовать свои навыки.

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

Link to comment
Share on other sites

  • 0
В данном случае, если бы автор знал как делать то, или иное, он бы сюда не постил верно?

Знания приходят с опытом. Одни смотрят сразу последнюю страницу учебника, другие пытаются решить пример сами. В итоге в предмете больше будут разбираться последние.

Link to comment
Share on other sites

  • 0

Ребят, не ссорьтесь, да, для меня это пока трудно, все эти синусы, косинусы, корни и т.д. Решил, что для начала попробую сделать примитивный с функционалом, который осилю. А далее уже буду пробовать и другое. :unsure:

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share


×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy