Trong bài viết này chúng ta sẽ thực hiện viết thuật toán cho chương trình đếm các chữ số của số nguyên dương n bằng C/C++. Ví dụ 1234 có 4 chữ số, 297429 có 6 chữ số,….
Ở đây mình sẽ sử dụng 2 cách để tìm số lượng số….
Cách 1: Sử dụng vòng lặp while, do…while
Đối với cách này tương đối đơn giản, chúng ta sẽ hiểu như thế này với một số nguyên n là 297429 chẳng hạn….sau mỗi một lần lặp chúng ta sẽ lấy số này chia hết cho 10, khai báo thêm biến m=0 ban đầu mỗi một lần lặp tăng m lên 1 đơn vị cho đến khi n=0, lúc đó m chính là số chữ số của n.
Thuật toán
Sử dụng vòng lặp while
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cout<<"Nhap n: "; cin>>n;
int m=0;
while(n>0){
n=n/10;
m++;
}
cout<<"So luong chu so cua n la: "<<m;
}
Sử dụng vòng lặp do…while
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cout<<"Nhap n: "; cin>>n;
int m=0;
do{
n=n/10;
m++;
}while(n>0);
cout<<"So luong chu so cua n la: "<<m;
}
- Kiếm tiền Accesstrade, kiếm tiền tại nhà với Accesstrade.vn – Tiếp thị liên kết
- MegaURL – Rút gọn link kiếm tiền có giá cao tại Việt Nam
- Top 4 App kiếm tiền online trên điện thoại tốt nhất 2022
- Khóa học lập trình C/C++ từ A-Z cho người mới – Giảm giá 40% hôm nay
Cách 2: Sử dụng tính toán Logarit.
Đối với cách này bạn sẽ cần hiểu rõ một chút về Logarit, theo như bạn đã biết thì Logarit là một tính toán ngược của Lũy thừa, Logarit cho phép chúng ta có thể tìm được mũ n của cơ số a khi biết được kết quả a^n bằng một số x nào đó.
Cụ thể trong bài toán này chúng ta sẽ sử dụng tới Logarit cơ số 10 để tính toán số lượng chữ số trong n.
Ta có ví dụ như sau:
10^2 = 100
10^3 = 1000
10^4=1000
Trong ví dụ này Log10(100) = 2, Log10(1000) = 3, như vậy tức là bất kì một số nào đó nằm trong khoảng [100,999] đều có log10(x) là một số thực >=2 và <3….không quan tâm tới phần thực, chúng ta sẽ chỉ lấy phần nguyên sau đó cộng thêm 1(10^2=100, mũ sẽ chỉ là 2, mà số 100 thì có 3 chữ số) là ra được kết quả số lượng chữ số trong n.
Cụ thể ta có số 2654, Log10(2654) = 3.42…lấy phần nguyên là 3, cộng thêm 1 là 4….vậy số lượng số trong n là 4 chữ số.
- Khóa học lập trình C/C++ từ A-Z cho người mới – Giảm giá 40% hôm nay
- Khóa học Java cơ bản dành cho người mới bắt đầu- Giảm 40% hôm nay
- Khóa học lập trình Android từ cơ bản đến thành thạo – Giảm ngay 40%
CODE MINH HỌA
Vậy khi ta tối ưu thuật toán với cách này, code chỉ có 2 dòng như sau:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cout<<"Nhap n: "; cin>>n;
cout<<"So luong chu so cua n la: "<<(int)log10(n)+1;
}
Hàm double log10(double x) sử dụng trong chương trình nằm trong Thư viện C trả về kết quả của log10(x).
Kết quả chạy chương trình.
CHÚC BẠN HỌC TỐT.
XÊM THÊM Thuật toán sắp xếp nhanh (Quick Sort) Thuật toán sắp xếp trộn (Merge Sort) Một số chương trình xây dựng trên Graphics C/C++ Hướng dẫn cài đặt thư viện Graphics trên IDE Devc++