Lỗi khi code in số nguyên dưới dạng có dấu ngăn cách lớp

Viết chương trình nhập một số nguyên, xuất lại số đó ở dạng chuỗi nhưng có dấu , ngăn cách hàng triệu, ngàn…
VD: 123456789123,456,789.
Đây là bài code của em, sau khi debug xong thì ra lỗi này em sửa hoài mà không được mong mọi người chỉ em nên sửa lại như thế nào !!! Cảm ơn mọi người nhiều :heart_eyes::heart_eyes::heart_eyes:

#include <iostream>
using namespace std;

int Dem_cs(int n)//Dem so chu so cua n
{
	int dem = 0; 
	while (n > 0)
	{
		n /= 10;
		dem++;
	}
	return dem;
}
void DauPhay(int n)
{
	int a[1000];
	int dem = 0;
	int cs = Dem_cs(n)/3;
	for (int i = 0; i <= cs; i++)
	{
		if (n > 0)
		{
			a[i] = n % 1000;
			dem++;
			n /= 1000;
		}
	}
	for (dem; dem >= 0; dem--)
	{
		cout << "," << a[dem];
	}

}
void main()
{
	int n;
	cout << "Nhap so nguyen n vao:"; cin >> n;
	if (n >= 0)
	{
		DauPhay(n);
	}
	else
	{
		n = abs(n);
		cout << "-"; DauPhay(n);
	}
}

Xem lại, < hay <=.

5 Likes

thêm điều kiện vào không thì nó luôn in ra thừa dấu phẩy đằng trước

code khác:

string FormatNumber(int number) {
	string result = "";
	string tmp = to_string(number);
	int count = 0;
	for (int i = (int)tmp.length() - 1; i >= 0; i--)
	{
		count++;
		result = tmp[i] + result;
		if (count % 3 == 0 && i - 1 >= 0 && tmp[i - 1] != '-')
			result = ',' + result;
	}
	return result;
}

int main()
{
	    cout << FormatNumber(123456789);
}
2 Likes

cảm ơn bạn nhiều !!!

Ok thanks bạn mình hiểu rồi !!!

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?