Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

지정된 형식으로 값을 인쇄하는 C++ 프로그램

<시간/>

세 개의 이중 값이 주어졌다고 가정합니다. 형식을 지정하고 다음 형식으로 인쇄해야 합니다.

  • 첫 번째 값의 정수 부분을 소문자로 된 16진수 형식으로 인쇄해야 합니다.

  • 두 번째 값을 소수점 이하 두 자리까지 인쇄해야 하며, 그 앞에 부호를 붙여 양수인지 음수인지 보여야 합니다. 인쇄할 두 번째 값은 오른쪽 정렬되어야 하며 길이는 15자여야 하며 왼쪽의 사용하지 않은 위치에 밑줄이 채워져 있어야 합니다.

  • 세 번째 값은 과학적 표기법에서 소수점 이하 아홉 자리까지 인쇄해야 합니다.

따라서 입력이 256.367, 5783.489, 12.5643295643과 같으면 출력은

0x100
_______+5783.49
1.256432956E+01

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • hex 플래그는 16진수 형식으로 값을 인쇄하고, showbase 플래그는 16진 값에 대한 '0x' 접두사를 표시하고, 왼쪽 플래그는 값 오른쪽에 채우기 문자를 삽입하여 출력 필드에 값을 채우고, nouppercase 플래그는 다음을 인쇄합니다. 모두 소문자로 출력합니다.

  • 오른쪽 플래그는 값 왼쪽에 채우기 문자를 삽입하여 출력 필드에 값을 채우고, fixed 플래그는 고정 소수점 표기법으로 값을 인쇄하고, set(15)는 출력 필드 길이를 15로 설정하고, showpos 플래그는 출력 앞에 '+' 기호를 삽입하고, setfill('_')은 출력을 밑줄로 채우고, setprecision()은 값의 정밀도를 소수점 이하 2자리까지 설정합니다.

  • setprecision()은 소수점 이하 9자리까지 값의 정밀도를 설정하고, 과학적 플래그는 과학적 표기법으로 값을 인쇄하고, 대문자는 출력 값을 모두 대문자로 만들고, noshowpos는 출력 값 앞에 양수 부호를 생략합니다.

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

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

void solve(double a, double b, double c) {
   cout << hex << showbase << nouppercase << left << (long long) a << endl;
   cout << right << fixed << setw(15) << setfill('_') << setprecision(2) << showpos << b << endl;
   cout << setprecision(9) << scientific << uppercase << noshowpos << c << endl;
}
int main() {
   solve(256.367, 5783.489, 12.5643295643);
   return 0;
}

입력

256.367, 5783.489, 12.5643295643

출력

0x100
_______+5783.49
1.256432956E+01