Форум программистов, компьютерный форум, киберфорум
Objective-C
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/20: Рейтинг темы: голосов - 20, средняя оценка - 4.95
0 / 0 / 0
Регистрация: 24.10.2009
Сообщений: 14
1

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

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

Author24 — интернет-сервис помощи студентам
По мотивам http://steps3d.narod.ru/tutori... ial-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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.02.2011, 23:34
Ответы с готовыми решениями:

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

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

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

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

4
203 / 145 / 16
Регистрация: 13.01.2009
Сообщений: 554
14.02.2011, 18:17 2
а что Вы хотите получить, этот код добавляет точку к строке current, в которой, как я понимаю, накапливается число. И еще непонятно значение вот этого
current = @"1";
0
0 / 0 / 0
Регистрация: 24.10.2009
Сообщений: 14
14.02.2011, 18:29  [ТС] 3
Хочу получить работающую точку, не пойму, как связать изначальный код с этим current.
0
203 / 145 / 16
Регистрация: 13.01.2009
Сообщений: 554
14.02.2011, 19:55 4
эта процедурка с твоим кодом никак не вяжется, просто добавляй к своему текстовому полю
text
точку, но перед каждым вычислением в х придется загонять строку, так как изменения нигде не учитываются
0
0 / 0 / 0
Регистрация: 23.06.2015
Сообщений: 2
23.06.2015, 11:06 5
HellKnight, а где нашел этот метод decimal? разобрался как связать свой код?
0
23.06.2015, 11:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.06.2015, 11:06
Помогаю со студенческими работами здесь

Максимальная точность для чисел с плавающей точкой
Суть поставленной задачи: дан вектор от 10_000 до 100_000 элементов, нужно проходить по вектору,...

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

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

Калькулятор для десятичных чисел. При выводе чисел >9 искажает их.
Калькулятор нормально считает до 9, но если появляются &gt;9 он их кавекает. Подскажите как исправить....


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru