2012-02-08 16 views
3

私はちょうどC++の教科書を読み始めましたが、この章の最後にあるコーディングの問題の解決には問題があります。std :: ostreamへの印刷時間

時間と分の値を入力するように求めるプログラムを作成します。 main()関数は、次のサンプルのランに示すフォーマットで 2つの値を表示するタイプボイド関数にこれら2つの値を渡す必要がありますの数を入力9

時間数を入力分:28
時間:これまでの9:28

私のコードは次のとおりです。

#include <iostream> 
using namespace std; 
void time(int h, int m); 

int main() 
{ 
    int hour, min; 

    cout << "enter the number of hours: "; 
    cin >> hour; 
    cout << "enter the number of minutes: "; 
    cin >> min; 

    string temp = time(hour, min); 

    cout << temp; 

    return 0; 
} 

void time(int h, int m) 
{ 
    string clock; 
    clock = 
} 

は私がtime(n, m)関数の内部で、今何をしますか?

ありがとうございました。

+0

http://www.cplusplus。com/reference/clibrary/cstdio/printf/ –

+7

printfsとcoutsの両方を追加しないでください。 1つにスティック、好ましくはC++で叫ぶ – jglouie

答えて

5

<iomanip>を含めることができ、のような時刻が正しく印刷されるように、field widthfillを設定できます。関数timeは時間を印刷するだけでよいので、建物や返り値はstd::stringを省略することができます。ただ、これらの値を出力:

void time(int hour, int min) 
{ 
    using namespace std; 
    cout << "Time: " << hour << ':' << setfill('0') << setw (2) << min << endl; 
} 

はまた、(などの種類、機能、の)ユーザ定義の名前のいくつかが曖昧になることを招くため、ファイルの先頭にusing namespace std;を書くことが悪い習慣と考えられていることに注意してください。接頭辞が枯渇しないようにするには、using namespace std;を小さなスコープ内で使用して、他の機能や他のファイルに影響を与えないようにしてください。

+0

2桁の分はどうですか?例えば9:01は9:1になります。 – jglouie

+0

いいえ。私は自分の答えを編集しました。 – LihO

+0

助けてくれてありがとう! – Jay

0

初めて()はstd :: stringを返す必要があります。 time()内の文字列をフォーマットするには、std :: ostringstream(header sstream)を使用できます。

例:

std::string time(int hour, int minutes) 
{ 
    std::ostringstream oss; 
    oss << hour << ":" << minutes; 
    return oss.str(); 
} 

編集:もちろん は、あなたが直接時間(..)関数内で時間と分を印刷することができます。または、time(..)関数をストリーム引数に渡して、時間(..)でストリームに出力することもできます。

0

timestringメソッドであると仮定した場合、質問にはvoidと表示されます。あなたのコードは:

#include <iostream> 
using namespace std; 
void time(int h, int m); 

int main() 
{ 
    int hour, min; 

    cout << "enter the number of hours: "; 
    cin >> hour; 
    cout << "enter the number of minutes: "; 
    cin >> min; 

    // Now pass to your time method. 
    time(hour, min); 

    return 0; 
} 

void time(int h, int m)  
{  
    cout << "Time: " << h << ':' << m << endl;  
} 

であり、ボブは誰かの叔父でなければなりません。

1

質問要求(それは頼まれたものと一致するため)最も簡単かつ正確なので「のような形式で2つの値を表示するタイプのボイド機能」ソリューションは、次のとおりです。

void time(int h, int m) 
{ 
    cout << "Time: " << h << ":" << m << endl; 
} 

あなたの主な()関数は何もする必要はありません。

// ... prompt for values as before, then: 

    time(hour, min); 

    return 0; 
} 

その後に戻ります。