Vấn đề là tìm cách tính thôi? Cụ thể làm sao tính được độ rộng của số nhập và lấy Max?
Sau khi có Max thì mình dùng setw (Max) luôn.
Mình muốn có kết quả cụ thể dùng ra sao?
Hiện nay, mình tìm được 2 cách.
- 1 cách thủ công là so sánh. Ví dụ số nguyên cơ số 10.
unsigned int v; // non-zero 32-bit integer value to compute the log base 10 of
int r; // result goes here
r = (v >= 1000000000) ? 9 : (v >= 100000000) ? 8 : (v >= 10000000) ? 7 : (v >= 1000000) ? 6 : (v >= 100000) ? 5 : (v >= 10000) ? 4 : (v >= 1000) ? 3 : (v >= 100) ? 2 : (v >= 10) ? 1 : 0;
Tài liệu: http://graphics.stanford.edu/~seander/bithacks.html#IntegerLog10Obvious
- 1 cách thì lập vòng lặp chia 10. Tuy nhiên cách này mình chạy thấy vẫn bị sai chưa đúng. Mình đang cố tìm chỗ sai.
#include<iostream>
using namespace std;
int lengthfunction(int number); //prototype
int main()
{
int number;
cout<<"Enter the number: ";
cin>>number;
cout<<"The length of that number is: "<<lengthfunction<<"\n";
return 0;
}
int lengthfunction(int number)
{
int counter=0;
while(number)
{
number=number/10;
counter++;
}
return (counter);
}
Bạn nào có ý tưởng gì chỉ mình với. Có code cụ thể minh họa nhé.