30/09/2018, 22:47
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 << "
Nhap 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 << "
Nhap so luong phan tu: ";
cin >> n;
if (n < 0 || n > MAX)
cout << "
So luong phan tu khong hop le";
} while (n < 0 || n > MAX);
NhapMang(a, n);
XuatMang(a, n);
int Sochen;
cout << "
Nhap 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
Bài liên quan
Đ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…
Giải pháp:
This post was flagged by the community and is temporarily hidden.
Nó vẫn vậy bạn à, không hết lỗi được
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
@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 (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 …
This post was flagged by the community and is temporarily hidden.