2011-01-01 4 views
1

これを行うための「きれいな」または効率的な方法は想像できません。(短い)配列[] = {1,2,3}でNSString @ "123"を変換しますか?

@ "1234"のような数字の文字列を電卓のペットプロジェクト*のショートの配列に変換したいと思います。

サブストリングを取得してからサブストリングのintValueを取得すると思いますが、扱いにくく、過度に聞こえます。それを行うよりエレガントな方法がありますか?

ありがとうございます!

*私は数学を行うためのより効率的な方法があり、多くのCライブラリがこれを行うことは知っていますが、それは私自身の教育のためです:-)。

+1

あなたがしたいことをよりよく説明できますか?なぜあなたは個々の数字を分割する必要がありますか?つまり、配列番号 '1234'の代わりに' 1,2,3,4'の配列が必要なのはなぜですか? –

+0

私はこれらを内部的にこのように表現したいので、ベース変換のような簡単な操作を簡単に行うことができます。また、コンピュータが私に与えるものを推測することなく、丸めを完全に制御できるようになります。つまり、私はALUをエミュレートしようとしています。 (自己教育私は言った:-)) – jibay

+0

これは助けであるかどうかわからないが、私はcharacterAtIndex、またはより良い、 'UTF8String'からの文字を取るだろうし、Cスタイル、' int i = c-'0 ';' – mvds

答えて

2

私はこれをまっすぐに持っていれば、NSStringを短い配列にしたいのですか?この関数は、NSString内の各文字が別のshortであることを前提としています。ああ、あなたがそれで終わったら、その配列を解放することを忘れないでください!

//Stephen Melvin <[email protected]> 
short *NSStringToShortArray(NSString *digits){ 

    int count = [digits length]; 

    short *shortArray = malloc(sizeof(short)*count); 

    for(int i = 0; i<count; i++){ 
     shortArray[i] = (short)[digits characterAtIndex:i] - '0'; 
    } 

    return shortArray; 
} 
1

電卓のインターフェースは、1文字の文字列を1つの数字として取る必要があります。操作が選択されると、次の数字を受け入れるようにフィールドがクリアされます。

たとえば、

あなたは、インターフェイスが式やスクリプトを受け入れるようにしたい場合は、あなたが読むべきフィールドがクリアし、*ボタンを押すと、あなたは再び2に入力し、その後2を入力し、キーを押し=と4

を取得数値方程式の解析時に

+1

申し訳ありませんがマットですが、私は同意しません。良い電卓のインターフェイスは、ユーザーに "23.34 * 23 *(34 + 45)"と入力して答えを与えます。 あなたの考えでは、ユーザーは入力して何回か入力する必要があります。入力した内容を制御できなくなり、間違えた場合は後で再入力する必要があります。 これは物理的な4演算子の計算機をその限界で模倣しています...これは2011年もまだ残っています。非常に高価で、いくつかのフリーウェアをいくつか持っています。 – jibay

+0

@jibayちょっとhttp://github.com/davedelong/DDMathParser ...? ;) –

+0

はいDave。この種!あなたは前に私に言っておくべきだった... ;-)しかし、今私は自分のスタッフの仕事をすることに興味があります。ありがとう、私はそれを見守ります:-)。 – jibay

関連する問題