2016-04-23 3 views
-1

Iは、各年齢層の人々の数を数えるプログラムを作成することになってる:年齢を加算し、それをカテゴリに分けることになっているC++プログラムを作るには?

  • 0-16(16を含む)幼児
  • 16-29は若い
  • 29から55までですあるミドル
  • 55-75は間隔が左に閉じられ、右に開いている

  • 75+は本当に古いです古いです。

    私はコンパイルするプログラムを書いたが、正しい値を教えてくれませんでした。私はコーディングに新しいので、誰かが正しい方向に私を向けることができますか?ここに私が持っているものは次のとおりです。

    #include <iostream> 
    
    using namespace std;  
    
    main() 
    { 
        int countinfant, countyoung, countmiddle, countold, countreallyold; 
        char age; 
        countinfant=0;  
        countyoung=0; 
        countmiddle=0;  
        countold=0;  
        countreallyold=0; 
    
        cout<< "Please Enter Ages. To end, enter *\n"; 
        cin.get(age); 
    
        while (age>0 && age != '*') 
        { 
         if (age>=0 && age<=16) countinfant = countinfant + 1;  
         if (age>16 && age<=29) countyoung = countyoung + 1; 
         if (age>29 && age<=55) countmiddle = countmiddle + 1; 
         if (age>55 && age<=75) countold = countold + 1;  
         if (age>75 && age>=76) countreallyold = countreallyold + 1; 
         cin.get(age); 
        } 
    
        cout<< "\n The Number of Infant's Are: " << countinfant; 
        cout<< "\n The Number of Young's Are: " << countyoung; 
        cout<< "\n The Number of Middle's Are: " <<countmiddle; 
        cout<< "\n The Number of old's Are: " <<countold; 
        cout<< "\n The Number of Really Old's Are: " <<countreallyold; 
        cout<<endl; 
    
        return 0; 
    } 
    
  • +2

    ような何か、あなたが投稿コーディングする行番号を追加しないでください、それはそれは難しい私たちがコピーして試してみるようになります。代わりに* comment *をコードに追加します。これは、質問テキストの本文で参照できるようになります。実際の出力と期待される出力と一緒に、どのような入力をプログラムに与えるのも良いでしょう。 [良い質問をする方法を読む](http://stackoverflow.com/help/how-to-ask) –

    +0

    あなたの問題に関しては、初心者でも*デバッガ*の使い方を学ぶことが重要です。デバッガを使用すると、行ごとにコードをステップバイステップで実行して、実際に何が実行されているかを確認したり、変数とその内容を監視したり、あるステートメントから次のステートメントへ進むときに変数がどのように変化するかを確認できます。 –

    +2

    「年齢」は、charではなく整数である必要があります。そして、あなたはまた、範囲は左に閉じて右に開いていると言いました。そのため、状態は例えばif(年齢> = 55 &&年齢<75)... – kjpus

    答えて

    1

    年齢をcharと宣言したために機能しません。プログラムは入力をcharとして読み込みます。したがって、0を入力するとの値は0のASCIIコード(48(0x30))になります。 int age;と宣言する必要があります。終了条件には、負の値を入力するだけです(例: -1、 '*'は使用しないでください。

    2

    実際にコードを見てみると、問題はわかりやすいです。

    input streamsの機能は、の文字であり、数値ではありません。したがって、文字として5を入力すると、それが読み取られてageに文字として格納され、システムで使用されているエンコーディングがASCII encoding(最近最も一般的です)の場合、'5'の値は整数です53

    次に、読み取った文字をそのまま使用します。これは、エンコードされたものが間違った結果をもたらすことになります。

    あなたが整数を読む必要が正しい値を取得するには、しかし、あなたはあなたがgetを使用する理由である>>オペレータ、と通常の整数入力を使用することはできません入力を終了するには、アスタリスクをチェックしたいので、私は推測します。解決方法は文字列を使用し、アスタリスクの文字列を確認し、アスタリスクがない場合はアスタリスクconvert the string to an integerを確認します。

    将来的には

    ​​
    関連する問題