2017-12-07 3 views
0

테이블의 형식을 올바르게 지정하여 해당 열의 첫 문자부터 시작하여 각 열 아래에 값을 인쇄하려고합니다. 저는 세 개의 컬럼을 포맷팅하는데 성공했지만, K Count와 LM Count 컬럼을 포맷하는 방법을 알아낼 수 없었습니다.이 테이블을 올바르게 포맷하려면 어떻게해야합니까?

K 카운트 및 LM 카운트 열이 잘 인쇄되도록 코드의 while 루프 부분을 수정할 수있는 것은 무엇입니까?

void printTable(const vector<int>& z, const vector<long>& x, const 
vector<long>& y, 
const vector<int>& a, const vector<int>& b) 
{ 
ostringstream ss; 
ss << "\n\n\n" << setw(10) << left << "Digits" << "Input Numbers  " 
    << setw(11) << right << "K Output " << setw(6) 
    << right << "K Count  " << setw(10) << right << "LM Output " << setw(6) 
    << right << "LM Count" << endl; 


int i = 0, n = 0; 
while (i < 5) 
{ 
    string q = to_string(z[2*n]) + " x " + to_string(z[abs(2*n + 1)]); 
    string r = to_string(x[i]); 
    string s = to_string(a[i]); 
    string t = to_string(y[i]); 
    string u = to_string(b[i]); 

    ss << setw(10) << left << (i+1) << q 
     << setw(16) << right << r 
     << setw(11) << right << s 
     << setw(12) << right << t 
     << setw(10) << right << u << endl; 

    i++; 
    n++; 
} 

string r = ss.str(); 
cout << r; 
} 

enter image description here

+0

코드 스크린 샷이 아닌 코드를 게시하십시오. –

+0

죄송합니다. 최대한 빨리 수정 사항을 게시하겠습니다. – JURO312

+0

무엇이 옳은가요? – UKMonkey

답변

1

당신은 인쇄하고 다음
- K - 폭을
를 지정하지 않고 직접 입력 수에 따라 - 숫자 10 개 문자
을 통해 왼쪽 정렬 출력이 16자를 넘도록 정렬
대신 입력 번호의 너비를 지정해야합니다 s도.
이 시도 : 각 열의

ss << setw(10) << left << (i+1) << 
     setw(16) << left << q << 
     setw(10) << right << s << 
     setw(12) << right << t << 
... 

정확한 폭은 정확하지 않을 수 있습니다. 직접 해보십시오.

1

K Count 출력을 수정하려면 이전 결과의 너비를 설정 한 후 커서를 원래대로 설정 한 다음 다시 오른쪽으로 이동해야합니다. 이 같은 것은 당신이 원하는 것을해야합니다.

ss << setw(10) << left << (i+1) << right 
    setw(16) << left << q << right << 
    setw(11) << left << r << right << 
    setw(12) << left << s << right << 
    setw(12) << left << t << right << 
    setw(10) << left << u << right << endl; 
관련 문제