С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

Objective-C

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

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

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

По мотивам http://steps3d.narod.ru/tutorials/macosx-tutorial-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";
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.02.2011, 23:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Калькулятор для чисел с десятичной точкой (Objective-C):

Калькулятор чисел с плавающей точкой - C++
double calculate(float x, char s, float y); int main() { float x,y; char s; x=y=0; cin&gt;&gt;x&gt;&gt;s&gt;&gt;y;

TRibbonSpinEdit - с десятичной точкой - Delphi
Добрый вечер. Пробовал создать новый компонент с такими свойствами на основе TRibbonSpinEdit, но никак не получается. Посоветуйте,...

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

Перевод из десятичной системы счисления в двоичную числа с плавающей точкой - C++
помогите написать и разобраться. Добавлено через 3 часа 2 минуты Помогите перевод написать получается, а вот добавить плавающую...

Арифметические операции для чисел с плавающей точкой - Assembler
При написании программы возникла проблема с использованием операторов для чисел с плавающей точкой(FADD, FSUB, FMUL etc). .8087 ;...

Вывести все целые числа и действительные с десятичной точкой, которые встречаются в файле - Perl
Помогите пожалуйста доделать &quot;которые встречаются в этом файле, за каждым числом в круглых скобках указать сколько раз это число...

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

Содержит ли строка запись одного десятичного числа со знаком в форме с фиксированной десятичной точкой - Pascal
2. Дана строка. Написать программу, распознающую, содержит ли строка запись одного десятичного числа со знаком в форме с фиксированной...

Калькулятор не считает числа с плавающей точкой - C#
ребят помогите, сделала с помощью видео первую прогу на С#, калькулятор. не считает числа с плавающей точкой.. что нужно поменять и как? ...

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

Ошибка при расчете данных с точкой. Калькулятор на С# - C#
Все привет! делаю калькулятор, по видосу, все ровно, никаких проблем. Но как дело дошло до операций с точкой возникла проблема. Есть...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.