RPN 電卓プログラムを作成しようとしていますが、入力した式を示すラベルが必要です。3,5,4,+,/ と入力すると、ラベルは ((4+5) / 3) と表示されます。これを実装するのに問題があります。数値とオペランドの両方を保持するスタックを呼び出す mutableArray を使用しています。もう 1 つの大きな問題は、渡される文字列が完全な文字列ではなく、ユーザーが値を入力するたびに渡されるため、プログラムはスタック上の 1 つまたは 2 つの項目のみで継続的に機能しなければならないことです。これがコードです。
+ (NSString *)descriptionOfProgram:(id)program
{
NSMutableArray *stack;
if([NSArray isKindOfClass:[NSArray class]])
stack = [program mutableCopy];
NSUInteger count = [stack count];
NSString* symbol;
NSMutableString *result;
[result appendString:@"("];
for( NSUInteger i=0; i<count; i++){
if ([[stack lastObject] isEqualToString:@"+"] || [[stack lastObject] isEqualToString:@"-"] || [[stack lastObject] isEqualToString:@"/"] || [[stack lastObject] isEqualToString:@"*"] || [[stack lastObject] isEqualToString:@"sin"] || [[stack lastObject] isEqualToString:@"cos"] )
{
symbol = [stack lastObject];
[stack removeLastObject];
}
else
{
if( [stack lastObject] != nil){
[result appendString:[stack lastObject]];
[stack removeLastObject]; }
// [result stringByAppendingString:symbol];
if( [stack lastObject]){
[result appendString:[stack lastObject]];
[stack removeLastObject];}
[result appendString:@")"];
[stack addObject:result];
}
}
return [stack lastObject];
}