@mr_cloud
iOS Developer

Как сделать парсер строки?

Квадратный корень на калькуляторе.

Возникла проблема в том, что я не могу сделать «квадратный корень», потому что нужно сначала ввести x, a потом y. И если я описываю это просто как x = sqrt(x), то все равно нужно вводить и x и y. Не могу разобраться, в чем дело.

- (IBAction)operation:(id)sender {
    
     if (yFlag && !enterFlag) {
        
        switch (operation) {
                
            case plusOperation:
                x = y + x;
                break;
                
            case minusOperation:
                x = y - x;
                break;
                
            case multiplyOperation:
                x = y * x;
                break;
                
            case divisionOperation:
                x = y / x;
                break;
         
            case degreeOperation:
                x = pow(y, x);
                break;
                
    // вот тут проблема
                
            case radicalOperation:
                x = sqrt(x);
                break;
                
            default:
                break;
        }
    }
    
    
    y = x;
    
    enterFlag = YES;
    yFlag = YES;
    operation = [sender tag];
    
    [self calcScreen];
}


Мне посоветовали сделать парсер строки, но я не знаю, как это сделать, так как только учусь. Помогите реализовать, пожалуйста. Хочу, чтобы при вводе какого-то числа, затем при нажатии на "квадратный корень" выводился сразу же результат, а не требовал вводить и x и y.

Спасибо большое за помощь! Буду признателен за то, если кто-то поможет.
  • Вопрос задан
  • 3155 просмотров
Пригласить эксперта
Ответы на вопрос 2
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
В контексте калькулятора, вам нужно парсить строку в обратную польскую натацию.

Примеры:
www.interface.ru/home.asp?artId=1492
ru.wikiversity.org/wiki/%D0%9E%D0%B1%D1%80%D0%B0%D...
habrahabr.ru/post/50158
Ответ написан
Комментировать
@MagoVinch
Попробуйте вот это itw66.ru/blog/obj_c/539.html
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы