Форум программистов, компьютерный форум CyberForum.ru

Objective-C

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.65
HellKnight
0 / 0 / 0
Регистрация: 24.10.2009
Сообщений: 14
#1

Калькулятор для чисел с десятичной точкой - Objective-C

08.02.2011, 23:34. Просмотров 2851. Ответов 4
Метки нет (Все метки)

По мотивам http://steps3d.narod.ru/tutorials/ma...utorial-2.html
В статье не рассмотрена кнопка десятичной точки.
В calc.h добавил
- (IBAction)decimal:(id)sender;
Вот он:
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#import <Cocoa/Cocoa.h>
 
enum
{
    OP_PLUS = 1001,
    OP_MINUS = 1002,
    OP_MULT = 1003,
    OP_DIV = 1004,
    OP_INV = 1005,
    OP_EQUALS = 1006,
};
 
@interface CalcController : NSObject
{
    IBOutlet NSTextField *text;
    BOOL enterFlag;
    BOOL yFlag;
    int  operation;
    double x, y;
}
 
- (IBAction)clear:(id)sender;
- (IBAction)clearAll:(id)sender;
- (IBAction)digit:(id)sender;
- (IBAction)operation:(id)sender;
- (IBAction)invSign:(id)sender;
- (IBAction)decimal:(id)sender;
- (void) displayX;
@end
Вот calc.m:
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#import "CalcController.h"
 
@implementation CalcController
- (IBAction)clear:(id)sender
{
    x = 0;
    [self displayX];
}
 
- (IBAction)clearAll:(id)sender
{
    x = 0;
    y = 0;
    yFlag = NO;
    enterFlag = NO;
    [self displayX];
}
 
- (IBAction)digit:(id)sender
{
    if (enterFlag)
    {
        x = x;
        x = 0;
        enterFlag = NO;
    }
    x = (10.0 * x) + [[sender selectedCell] tag];
    [self displayX];
}
 
- (IBAction)operation:(id)sender
{
    if (yFlag)
    {
        switch (operation)
        {
            case OP_PLUS:
                x = y + x;
                break;
            case OP_MINUS:
                x = y - x;
                break;
            case OP_MULT:
                x = y * x;
                break;
            case OP_DIV:
                x = y / x;
                break;
        }
    }
    y = x;
    yFlag = YES;
    operation = [[sender selectedCell] tag];
    enterFlag = YES;
    [self displayX];
}
 
- (IBAction)invSign:(id)sender
{
    x = -x;
    [self displayX];
}
 
- (void) displayX
{
    NSString * str = [NSString stringWithFormat: @"%15.10g", x];
    [text setStringValue: str];
}
@end
Как описать этот decimal?
Нашел такой пример, но как его модифицировать под свой код не соображу:
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
-(IBAction)decimal:(id)sender
{
    NSString *str = (NSString* )[sender currentTitle];
    
    if(current != @"")
    {
        if([current isEqualToString: @"."])
        {
            NSRange match;
            match = [current rangeOfString: @"."];
            if(match.location == 0)
            {
                current = [textViewerAmount.text stringByAppendingString:str];
            }
        }
        else
        {
            current = [textViewerAmount.text stringByAppendingString:str]; 
            [textViewerAmount setText:current];
            [self doCalculate];
        }
    }
    else
    {
        current = str;
        [textViewerAmount setText:current];
        [self doCalculate];
        current = @"1";
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.02.2011, 23:34     Калькулятор для чисел с десятичной точкой
Посмотрите здесь:

Objective-C Как узнать, кнопка с какой цифрой была нажата? (калькулятор)
сделать циклическую программу для любых чисел,чтобы при вводе числа получалось например так: 512=(5+1+2)3 Objective-C

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Splitter
201 / 143 / 5
Регистрация: 13.01.2009
Сообщений: 554
14.02.2011, 18:17     Калькулятор для чисел с десятичной точкой #2
а что Вы хотите получить, этот код добавляет точку к строке current, в которой, как я понимаю, накапливается число. И еще непонятно значение вот этого
current = @"1";
HellKnight
0 / 0 / 0
Регистрация: 24.10.2009
Сообщений: 14
14.02.2011, 18:29  [ТС]     Калькулятор для чисел с десятичной точкой #3
Хочу получить работающую точку, не пойму, как связать изначальный код с этим current.
Splitter
201 / 143 / 5
Регистрация: 13.01.2009
Сообщений: 554
14.02.2011, 19:55     Калькулятор для чисел с десятичной точкой #4
эта процедурка с твоим кодом никак не вяжется, просто добавляй к своему текстовому полю
text
точку, но перед каждым вычислением в х придется загонять строку, так как изменения нигде не учитываются
Calypso777
0 / 0 / 0
Регистрация: 23.06.2015
Сообщений: 2
23.06.2015, 11:06     Калькулятор для чисел с десятичной точкой #5
HellKnight, а где нашел этот метод decimal? разобрался как связать свой код?
Yandex
Объявления
23.06.2015, 11:06     Калькулятор для чисел с десятичной точкой
Ответ Создать тему
Опции темы

Текущее время: 23:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru