Lỗi Segmentation fault. Em sai ở đâu ạ?

>//Viet ham chuyen so thap phan thanh nhi phan
> #include <iostream>
> #include <cmath>
> using namespace std;

> void LaySoNhiPhan (int So, int arr[])
> {
>     //Khai bao bien
>     int SoDu, dem =0;
>     int *p;// khai bao bien con tro

>     //Nhap so du vao chuoi
>     do
>     {
>         int i =0;
>         SoDu = So %2;//lay phan du
>         So /=2;//so moi = so cu /2
>         *p = SoDu;//tro p vao bien so du
>         p = &arr[i];
>         i++;
>         dem ++;
>     }

>     while (So /2==0);

>     //Dao chuoi
>     for (int i = dem-1; i >=0;i--)
>         {
>             cout << arr[i];
>         }
> };


> int main()
> {
>     //khai bao bien
>     int a =0;

>     //khai bao ham
>     int arr[100];

>     //Nha p bien
>     cout << "Nhap so a = ";
>     cin >> a;

>     cout << "Dang nhi phan cua so do la: " << " ";

>     LaySoNhiPhan(a, arr);

>     return 0;
> }

Hi Việt Hưng Vũ.
Bạn cho cái màn hình lỗi xem.

Segmentation fault ở chổ *p = SoDu đó bạn. Vì p là con trỏ nó chỉ gán theo kiểu reference thôi như cái p = &a[i] đó. Mà có một chú ý như thế này, ban thấy cái int arr[100] khai báo trong hàm main đâu có tác dụng, vào hàm LaySoNhiPhan khai báo cũng được, mà bài này bạn dùng đệ quy thử được không. Good luck

2 Likes

*Đang tự hỏi *p này dùng để làm gì*

Bạn cứ viết vào mảng bt rồi đọc ngược lại sau.

em muốn gán biến SoDu cho arr[i] thì phải làm ntn ạ?

a[i] = SoDu;

Than ai!!!

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