01/10/2018, 11:10

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;
> }
Tao Không Ngu. viết 13:18 ngày 01/10/2018

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

Khoa Nguyễn Anh viết 13:19 ngày 01/10/2018

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

rogp10 viết 13:11 ngày 01/10/2018

*Đ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.

Việt Hưng Vũ viết 13:16 ngày 01/10/2018

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

Khoa Nguyễn Anh viết 13:24 ngày 01/10/2018
a[i] = SoDu;

Than ai!!!

Bài liên quan
0