2016-05-25 5 views
0

私はちょうどプログラミングの勉強を始めており、与えられた変更量に必要な通貨の数を表示するプログラムを作成しようとしています。 私は日本で勉強しているので通貨は円ですが、基本コードは普遍的だと思います。私は他の同様のプログラムをオンラインで見たことがありますが、私の問題の原因となるかもしれないいくつかの追加機能がありますが、わかりません。Cの計算プログラムを変更する

まず、利用者は、2千円の紙幣が登録されているか否かを入力する。 (これらの法案は共通していないため)。 次に、合計金額を入力します。次に支払った金額を入力します。変更を計算し、各金種の金額を計算して表示します。

ただし、お支払い額を入力すると、カーソルは次の行に移動し、そこに無期限に座っています。私はこれを引き起こしているのか分かりません。私の唯一の推測は、どこかでループに詰まっているということです。

誰かに問題がありますか?

#define _CRT_SECURE_NO_WARNINGS 

#include <stdio.h> 

int main(void) 
{ 
    //入力 
    int aru; 

    printf("Are there 2-thousand yen bills in the register?\n 1.) Yes\n 2.) No\n "); //レジに2千円札が入ってますか?\n 1.) 入ってます\n 2.)入ってません 
    scanf("%d", &aru); 

    int total, paid; 

    printf("Enter Total Price ");//お会計を記入して下さい。  
    scanf("%d", &total); 
    printf("Enter Amount Paid ");//お客さんのお支払った合計を記入してください。 
    scanf("%d", &paid); 

    //計算 
    if (paid < total) 
    { 
     printf("Insufficiant amount paid\n");//お金を十分にもらいませんでした 
    } 
    if (paid > total) 
    { 
    int change = paid - total; 
    int ichi = 0, go = 0, ju = 0, goju = 0; 
    int hyaku = 0, gohyaku = 0, sen = 0, nisen = 0, gosen = 0; 

    while (change > 5000) 
    { 
     change - 5000; 
     gosen++; 
    } 
    while (change > 2000) 
    { 
     if (aru == 1) 
     { 
      change - 2000; 
      nisen++; 
     } 
     else 
     { 
      nisen = 0; //skips calculating 2000 yen bills if answer was 'no' 
     } 
    } 
    while (change > 1000) 
    { 
     change - 1000; 
     sen++; 
    } 
    while (change > 500) 
    { 
     change - 500; 
     gohyaku++; 
    } 
    while (change > 100) 
    { 
     change - 100; 
     hyaku++; 
    } 
    while (change > 50) 
    { 
     change - 50; 
     goju++; 
    } 
    while (change > 10) 
    { 
     change - 10; 
     ju++; 
    } 
    while (change > 1) 
    { 
     change - 1; 
     ichi++; 
    } 

    //出力 
    printf(" %d \n", gosen); 
    printf(" %d \n", nisen); 
    printf(" %d \n", sen); 
    printf(" %d \n", gohyaku); 
    printf(" %d \n", hyaku); 
    printf(" %d \n", goju); 
    printf(" %d \n", ju); 
    printf(" %d \n", go); 
    printf(" %d \n", ichi); 
} 
    return 0; 
} 
+1

'変化に相当する - '変化に5000' - = 5000' –

+1

と 'nisen = 0; ' - >' nisen = 0。読みやすさと理解を容易にするために、「 – BLUEPIXY

+0

:1)一貫してインデントしてください。すべての開きブレースの後にインデントします。すべての閉じ括弧の前に字下げしないでください。 2)空白行を介してコードブロック(for、else、while、do ... while、switch、case、default)を区切ります。 3)公理に従う:* 1行につき1つのステートメントと1つのステートメントにつき1つの変数宣言。* – user3629249

答えて

2
while (change > 5000) //This is an infinite loop 
{ 
    change - 5000; //no change is made to change 
    gosen++; 
} 

を(*私は英語に印刷するテキストを切り替え)あなたはこれがあなたのコード内のいくつかの場所である代わりにchange - 5000;change -= 5000;をお勧めします。 change-=5000

change = change-5000; 
+0

恐ろしい。それはそれを修正!私はそれを見たはずです。ありがとう – rgolden

+0

うれしい私は助けることができます。 –

関連する問題