2017-05-15 1 views
0

열을 정렬 할 수 있었지만 "%"가 퍼센트 변수에 연결되지 않는 코딩 문제가 있습니다. 열 정렬 관련 문제

출력/정렬 내 코드입니다 :

//HEADER 
    outFile << left << setfill(' ') << setw(15) << "Member Name" 
       << setfill(' ') << setw(20) << "Portion Achieved" 
       << setfill(' ') << setw(12) << "Grade (%)" 
       << setfill(' ') << setw(15) << "Letter Grade" 
       << setfill(' ') << setw(15) << "Comment" << endl; 

while (count <= 6) 
    { 
    cout << "Enter Name: "; 
    cin >> student.name; 
    cout << "Points Achieved: "; 
    cin >> student.points; 
    cout << "\n"; 

     decimal = (student.points/60); 
     percent = decimal*100; 

     outFile << left << setfill(' ') << setw(15) << student.name 
       << setfill(' ') << setw(20) << decimal 
       << setfill(' ') << setw(12) << percent << " %" 
       << setfill (' ') << setw(15); 

이 출력이 모습입니다 :

Member Name Portion Achieved Grade (%) Letter Grade Comment   
Min   0.166667   16   %F    Sorry, you did not pass :(
Carmela  0.333333   33   %F    Sorry, you did not pass :(
Jayson   0.5     50   %F    Sorry, you did not pass :(
Kristin  0.666667   66   %D    Needs Improvement! 
Mae   0.833333   83   %B    Well Done!  
JT    1     100   %A    Excellent! 

VS 나는 그것을보고하는 방법 :

Member Name Portion Achieved Grade (%) Letter Grade Comment   
    Min   0.166667   16%   F    Sorry, you did not pass :(
    Carmela  0.333333   33%   F    Sorry, you did not pass :(
    Jayson   0.5     50%   F    Sorry, you did not pass :(
    Kristin  0.666667   66%   D    Needs Improvement! 
    Mae   0.833333   83%   B    Well Done! 
    JT    1     100%  A    Excellent! 
+1

'<< setw (12) << % << "%"'대신 %% setw (12) << "%"'를 시도하십시오. – user463035818

+0

@ tobi303 : 작동하지 않습니다. –

+0

# 및 % 스틱 제작에 성공했지만 마지막 두 열이 정렬되지 않았습니다. – Minacpil

답변

1

네가 한 말대로하고있어. 정수 percent 값에는 12 자의 "너비"가 지정됩니다. 후에 나오는 것은 무엇이든옵니다. 아무것도 연결하지 못하도록하는 코드가 없으며 C++ 스트림 말하기 기능도 없습니다.

문자열에 percent + " %" (의사 코드)을 사전 구성하고 해당 단일 문자열을 열 값으로 사용해야 할 것입니다. 아마도 :

<< setfill(' ') << setw(12) << (std::to_string(percent) + " %") 

그렇지 않으면, setw을 삭제하고 N 공간을 직접 작성합니다. 이렇게하려면 문자열이 "percent"인 방법을 "길게", 2를 더한 다음 ("%") 12에서 lot을 뺍니다. std::string(n, ' ')을 스트림에 씁니다. 왝!

+0

'<< setfill ('') << setw (12) << std :: to_string (percent) + "%"'행에있는 것이 작동해야합니다. – NathanOliver

+0

@ NathanOliver : 네, 잘 보입니다 –

+0

알겠습니다. 고맙습니다! – Minacpil