Computer >> Máy Tính >  >> Lập trình >> C ++

Chương trình C ++ để in các giá trị ở định dạng được chỉ định

Giả sử chúng ta được cho ba giá trị kép. Chúng tôi phải định dạng chúng và in chúng ở định dạng sau.

  • Chúng tôi phải in phần nguyên của giá trị đầu tiên ở định dạng thập lục phân với các chữ cái thường.

  • Chúng ta phải in giá trị thứ hai lên đến hai chữ số thập phân, đặt một dấu hiệu trước giá trị đó để cho biết giá trị đó là dương hay âm. Giá trị thứ hai được in phải căn phải và dài 15 ký tự, có dấu gạch dưới ở các vị trí không sử dụng bên trái.

  • Chúng tôi phải in giá trị thứ ba lên đến chín chữ số thập phân trong một ký hiệu khoa học.

Vì vậy, nếu đầu vào là 256.367, 5783.489, 12.5643295643, thì đầu ra sẽ là

0x100
_______+5783.49
1.256432956E+01

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • Cờ hex in giá trị ở định dạng thập lục phân, cờ showbase hiển thị tiền tố '0x' cho các giá trị hex, cờ bên trái đưa giá trị vào trường đầu ra bằng cách chèn các ký tự điền vào bên phải giá trị và cờ nouppercase in đầu ra bằng tất cả các chữ cái thường.

  • Cờ bên phải đệm giá trị vào trường đầu ra bằng cách chèn các ký tự điền vào bên trái giá trị, cờ cố định in các giá trị trong ký hiệu điểm cố định, bộ (15) đặt độ dài trường đầu ra thành 15, cờ showpos chèn dấu '+' trước đầu ra, setfill ('_') chèn dấu gạch dưới vào đầu ra và setpre precision () đặt giá trị chính xác lên đến 2 chữ số thập phân.

  • setpre precision () đặt giá trị chính xác lên đến 9 chữ số thập phân, cờ khoa học in giá trị bằng ký hiệu khoa học, chữ hoa tạo nên giá trị đầu ra trong tất cả các chữ cái viết hoa và noshowpos bỏ qua bất kỳ dấu dương nào trước giá trị đầu ra.

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

#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;
}

Đầu vào

256.367, 5783.489, 12.5643295643

Đầu ra

0x100
_______+5783.49
1.256432956E+01