-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMultiplicationStep.m
More file actions
112 lines (100 loc) · 2.96 KB
/
MultiplicationStep.m
File metadata and controls
112 lines (100 loc) · 2.96 KB
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
//
// MultiplicationStep.m
// MathHelp
//
// Created by Dominic Surrao on 6/4/11.
// Copyright 2011 MathHelp. All rights reserved.
//
#import "MultiplicationStep.h"
#import "NumberParser.h"
@implementation MultiplicationStep
- (MultiplicationStep *) initWithOperands:
(DigitField *) iLeftOperandDF :
(DigitField *) iRightOperandDF :
(NSMutableArray *) iTargetDFArray :
(int) iStepNumber{
leftOperandDF = iLeftOperandDF;
rightOperandDF = iRightOperandDF;
targetDFArray = iTargetDFArray;
stepNumber = iStepNumber;
return self;
}
- (int) getStepNumber {
return stepNumber;
}
- (NSMutableArray *) doStep:(bool) silentFlag {
int m1 = [[leftOperandDF getCharValue] intValue];
int m2 = [[rightOperandDF getCharValue] intValue];
int result = m1 * m2;
NumberParser *numParser = [[NumberParser alloc] init];
NSMutableArray *resultArray = [numParser parseInteger:result];
int j;
for (int i = 0; i < [resultArray count]; i++) {
if ([resultArray count] == 1) {
j = (int)[targetDFArray count] - 1;
}
else {
j = (int)[resultArray count] - 1 - i;
}
[[targetDFArray objectAtIndex:j] setCharValue:[[resultArray objectAtIndex:i] stringValue]];
if (!silentFlag) {
[[targetDFArray objectAtIndex:j] getTextField].text = [[targetDFArray objectAtIndex:j] getCharValue];
}
}
return (targetDFArray);
}
- (NSString *) getHint {
int m1 = [[[leftOperandDF getTextField] text] intValue];
int m2 = [[[rightOperandDF getTextField] text] intValue];
int result = m1 * m2;
NSString *hintStr = [[[leftOperandDF getTextField] text] stringByAppendingString:@" × "];
hintStr = [hintStr stringByAppendingString:[[rightOperandDF getTextField] text]];
hintStr = [hintStr stringByAppendingString:@" = "];
hintStr = [hintStr stringByAppendingString:[[NSNumber numberWithInt:result] stringValue]];
return (hintStr);
}
- (DigitField *) getLeftOperandDF {
return (leftOperandDF);
}
- (bool) checkForCorrectEntry: (UITextField *) iTextField {
bool retFlag = false;
for (int i = 0; i < [targetDFArray count]; i++) {
if ([[targetDFArray objectAtIndex:i] getTextField] == iTextField) {
[self doStep:true];
if ([[[targetDFArray objectAtIndex:i] getCharValue] isEqualToString:iTextField.text]) {
retFlag = true;
break;
}
}
}
return retFlag;
}
- (bool) isComplete {
bool retFlag = true;
DigitField *digitField;
for (int i = 0; i < [targetDFArray count]; i++) {
digitField = [targetDFArray objectAtIndex:i];
[self doStep:true];
if (![[digitField getCharValue] isEqualToString:[digitField getTextField].text]) {
retFlag = false;
break;
}
}
return retFlag;
}
- (bool) targetContainsTextField:(UITextField *) iTextField {
bool containsFlag = false;
for (int i = 0; i < [targetDFArray count]; i++) {
if ([[targetDFArray objectAtIndex:i] getTextField] == iTextField) {
containsFlag = true;
break;
}
}
return (containsFlag);
}
- (void) undo {
for (int i = 0; i < [targetDFArray count]; i++) {
[[targetDFArray objectAtIndex:i] getTextField].text = @"";
}
}
@end