1

私は最近、Objective-C (またはプログラミング) の勉強を始めたばかりで、単純なプログラムで行き詰っています。

私は 4 分の 1、10 セント硬貨、5 セント硬貨、および 1 セント硬貨でおつりを作ろうとしていますが、思いついた解決策では、5 セント硬貨または 1 セント硬貨にランダムな値が与えられることに気付きました。

元。25 の変更は、「変更は 1 四半期、0 ダイム、-1881139893 ニッケル、および 4096 ペニスです」となります。

例2。30 の変更は、「変更は 1 四半期、0 ダイム、1 ニッケル、および 4096 ペニスです」となります。

この動作を修正するには、何を追加/変更できますか?

また、4 つの異なる if ステートメントを実行するよりも優れた解決策はありますか?

ありがとう!

以下は私のコードです:

int orig, q, d, n, p;

NSLog(@"Give money to make change");
scanf("%i", &orig);

if(orig >= 25) {
    q = orig/25;
    orig -=  q*25;
}
if(orig >= 10 && orig < 25) {
    d = orig/10;
    orig -= d*10;
}
if(orig >= 5 && orig < 10) {
    n = orig/5;
    orig -= n*5;
}
if(orig >= 1 && orig < 5) {
    p = orig;
}

NSLog(@"The change is %i quarter, %i dime, %i nickels, and %i pennis", q, d, n, p);
4

2 に答える 2

4

変数を最初に初期化しないので、すべてランダムな値で始まります。次に、コードでは、ペニーがない場合は、pを何にも設定しないため、初期のランダムな値が保持されます。出力を参照してください。最初に変数を初期化することで修正できます。

int orig=0, q=0, d=0, n=0, p=0;
于 2010-10-11T19:57:18.753 に答える
3

代わりに係数を使用する必要があります。あなたの学習体験を台無しにしたくないので、これはモジュラスを使用して、秒単位で与えられた時間の日、時間、分、秒を計算する方法の例です。

int x = 1123123; 
int seconds = x % 60;
x /= 60;
int minutes = x % 60;
x /= 60;
int hours = x % 24;
x /= 24;
int days = x;

今それをあなたの問題に適用してください:)

于 2010-10-11T19:40:54.050 に答える