renovations

This commit is contained in:
Ilya Kantor 2015-01-14 10:23:45 +03:00
parent c7d4c7e3ff
commit e1948130f6
170 changed files with 1496 additions and 1161 deletions

View file

@ -0,0 +1,36 @@
Вычислить любое выражение нам поможет `eval`:
```js
//+ run
alert( eval("2+2") ); // 4
```
Считываем выражение в цикле `while(true)`. Если при вычислении возникает ошибка -- ловим её в `try..catch`.
Ошибкой считается, в том числе, получение `NaN` из `eval`, хотя при этом исключение не возникает. Можно бросить своё исключение в этом случае.
Код решения:
```js
//+ run demo
var expr, res;
while(true) {
expr = prompt("Введите выражение?", '2-');
if (expr == null) break;
try {
res = eval(expr);
if (isNaN(res)) {
throw new Error("Результат неопределён");
}
break;
} catch(e) {
alert("Ошибка: "+e.message+", повторите ввод");
}
}
alert(res);
```

View file

@ -0,0 +1,13 @@
# Eval-калькулятор с ошибками
[importance 5]
Напишите интерфейс, который принимает математическое выражение (в `prompt`) и результат его вычисления через `eval`.
**При ошибке нужно выводить сообщение и просить переввести выражение**.
Ошибкой считается не только некорректное выражение, такое как `2+`, но и выражение, возвращающее `NaN`, например `0/0`.
[demo /]