Thứ Năm, 1 Tháng Mười Hai 2022
Trang chủLập trìnhCTDL & Thuật toánThuật toán đếm số lượng chữ số của số nguyên dương n...

Thuật toán đếm số lượng chữ số của số nguyên dương n bằng C / C++

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

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ố.

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++
0 0 Phiếu bình chọn
Xếp hạng bài viết
BÀI VIẾT LIÊN QUAN
Đăng ký nhận thông báo
Thông báo email khi
guest
0 Bình luận
Không thể gửi email
Phản hồi nội tuyến

NÊN ĐỌC THÊM

Bạn muốn tìm kiếm gì?


0
Giáo sư! có thể ném gạch bên dưới nhé!x
()
x