Lỗi mảng động không lưu được

e có đề bài là in ra các số chia hết cho các chữ số của chính nó băt đầu từ left->right.
nhưng bị lỗi, e có test thử ở trong hàm thì nó chỉ lưu đến phần tử thứ hai VD: từ 22->33 thì chỉ được 22 và 24 thôi.

#include <iostream>
using namespace std;

bool checkR(int a,int i)
{
    while (a>0)
        {
            int t = a % 10;

            if(i % t != 0 ||  t == 0)
            {
                return false;
            }
            a = a/10;
        }
    return true;

}
int* selfDividingNumbers(int left, int right, int* returnSize)
{
    int *arrNum=new int [10000];
    int j=0;
    for (int i=left; i<= right; i++)
    {
        int a=i;
        bool check= checkR(a,i);
        if ( check == true)
        {
            cout << i<< endl;
            arrNum[j]=i;
            j++;
        }
    }

    *returnSize=j;
    return arrNum;
}

int main()
{
    int left,right;
    cin >> left >> right;
    int *aa;v// trả về số các số thỏa mãn
    int * aaa=selfDividingNumbers(left, right, aa);

    for (int i=0; i< *aa; i++)
        cout << aaa[i] << " ";
}```

t == 0 phải đứng trước, nêu ko là chia 0 ngay.

5 Likes

ak đúng r a :star_struck:, cảm ơn a nhiều

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