Chèn số X vào đằng sau các số nguyên tố có trong mảng

Xin chào mọi người.

Em đang làm 1 bài tập về Mảng 1 chiều nhưng code bị lỗi, tìm quài không ra nên nhờ mọi người giúp đỡ.

Đề bài: Chèn số X vào đằng sau các số nguyên tố có trong mảng.

Code giải:

void NhapMang(int a[], int n)
{
	for (int i = 0; i < n; i++)
	{
		cout << "\nNhap a[" << i << "] = ";
		cin >> a[i];
	}
}
void XuatMang(int a[], int n)
{
	for (int i = 0; i < n; i++)
		cout << a[i] << "   ";
}
bool IsPrime(int n)
{
	if (n < 2)
		return false;
	if (n == 2)
		return true;
	if (n % 2 == 0)
		return false;
	for (int i = 3; i <= sqrt(n); i += 2)
		if (n % i == 0)
			return false;
	return true;
}
void ThemPhanTu(int a[], int &n, int Vitrithem, int Phantuthem)
{
	for (int i = n; i > Vitrithem; i--)
		a[i] = a[i - 1];
	n++;
	a[Vitrithem] = Phantuthem;
}
void ChenSo(int a[], int &n, int Sochen)
{
	for (int i = 0; i < n; i++)
	{
		if (IsPrime(a[i]))
			ThemPhanTu(a, n, i + 1, Sochen);
		if (IsPrime(Sochen))
			i++; // Mục đích: Nếu số chèn là số Nguyên tố thì sẽ bị tràn bộ nhớ khi xét vòng lặp tiếp theo nên ++ để tránh lỗi.
	}
}

int main()
{
	int a[MAX], n;
	do
	{
		cout << "\nNhap so luong phan tu: ";
		cin >> n;
		if (n < 0 || n > MAX)
			cout << "\nSo luong phan tu khong hop le";
	} while (n < 0 || n > MAX);
	NhapMang(a, n);
	XuatMang(a, n);
	int Sochen;
	cout << "\nNhap so can chen sau SNT trong mang: ";
	cin >> Sochen;
	ChenSo(a, n, Sochen);
	XuatMang(a, n);
	getch();
	return 0;
}

Lỗi:
VD: Nhập 3 phần tử lần lượt là 1 , 2 , 5 .
Thêm phần tử X là 3
=> Kết quả: 1 2 3 5 3
Nhưng kết quả của máy: 1 2 5 3
=> Lỗi ở con số 2.

P/S: Hàm kiểm tra Nguyên Tố của mình không hề bị lỗi nhé !

Xin cảm ơn các bạn trước nhiều :slight_smile:

Đoán là do thằng này. Trường hợp Sochen là số nguyên tố nhưng ko được chèn vào mà vẫn i++ nên dẫn đến sót thằng a[i] kế tiếp…

1 Like

Giải pháp:

if (IsPrime(a[i])){
		ThemPhanTu(a, n, i + 1, Sochen);
		if (IsPrime(Sochen))
			i++;
}
1 Like

This post was flagged by the community and is temporarily hidden.

2 Likes

Nó vẫn vậy bạn à, không hết lỗi được :frowning:

Hình như chèn số nguyên tố thì nó bị lỗi, còn chèn hợp số thì nó vẫn add vô bình thường :slight_smile:

@Phong_Ky_Vo cách viết tắt khá hay, nhưng vẫn bị lỗi anh ơi ^_^!

Yeah, tìm ra lỗi rồi, Debug là thiên sứ tìm lỗi :joy: (lười debug nên không biết lỗi ở đâu)

P/S: Cách của bạn @Luu_Thanh_Vuong đúng đấy, nhưng khổ một nỗi mình mở nhầm Project nên … :smiley:

This post was flagged by the community and is temporarily hidden.

2 Likes

A post was split to a new topic: Thêm chữ số vào xâu Excel

Không có nhân tiện hỏi ké gì ở đây nhé.

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