2011-03-16 5 views
0

여기 내 코드입니다 :간단한 C++ cout statment, 형식 문제가있는 한 줄, 그게 무엇입니까?

#include <iomanip> 
#include <fstream> 
#include <iostream> 
using namespace std; 

int main() 
{ 
    ifstream fin; 

    fin.open("Celsius.txt"); 

    if (!fin.good()) throw "I/O error"; 

    double myC; 
    fin >> myC; 

    fin.close(); 

    ofstream fout; 
    fout.open("Fahrenheit.txt"); 
    if (!fout.good()) throw "I/O error"; 

    double myAnswer = (myC * 1.80) + 32; 
    fixed; 
    cout << myC << " Celsius equals " << setprecision(3) << myAnswer << " Fahrenheit" << endl; 
    fout << myC << " Celsius equals " << setprecision(3) << myAnswer << " Fahrenheit" << endl; 

    fout.close(); 
} 

좋아, 나는 그냥 완전한 근본적인 신경을 놓친 거지, 나는 일부 도로 블록 이해이 갖고있는 것 같다.

  • 이는 입력 포맷에 대한 에코 -2 및
  • 그것은 하나 개의 십진수로 출력하지 않는 포맷 -2예요.
  • 입력 값의 형식을 출력에만 지정하지 마십시오.

    myInput이 및 myOutput 한 10 진수 포맷 에코 포맷되지 않은 입력 :

    fixed; 
    cout << myInput << " should not be formatted, but " << setprecision(3) << myOutput << " should be" << endl; 
    

하지 그 숙박합니까?

+2

이것은 거의 이해할 수 없습니다. 코드가 예상 한대로 작동합니까? 문제가 무엇입니까? 질문은 무엇입니까? – Beta

+0

죄송합니다. 필자가 작성해야하는이 프로그램의 요구 사항입니다. 스펙을 이해하려고합니다. – CodingIsAwesome

+0

은 서식을 정리하려고했으나 아직 완전히 수정되지 않았습니다. – abelenky

답변

1

는 당신과 같이, 출력 스트림에 고정 포함해야합니다

cout << myC << " Celsius equals " << fixed << setprecision(3) << myAnswer << " Fahrenheit" << endl; 

setprecision은 소수점 이하 소수 자릿수를 지정합니다. 그래서 3은 72.000과 같이 번호를 바꿉니다. 또는 귀하의 경우 1이 72.0으로 설정됩니다.

+0

죄송합니다, 내 출력도 1 자리 숫자로 포맷해야합니다. 어쩌면 정확히 setprecision()이 정확히 이해하지 못합니까? 내 번호를 형식화 한 것 같아. – CodingIsAwesome

+0

추가 정보를 포함하도록 수정했습니다. – Cody

+0

@CodingIsAwesome : try'setprecision (1)' –