30/09/2018, 16:04

Dùng STL Container Stack để chuyển từ hệ 10 sang hệ 2

Lỗi sai của chương trình này ?

#include <iostream>
#include <stack>
using namespace std;

int main()
{
    stack<int> nhiPhan;
    int n = 4;
    while(n > 0)
    {
        int dv = n%2;
        nhiPhan.push(dv);
        n = n/2;
    }

    for(int i = 0; i < nhiPhan.size(); i++)
    {
        cout << nhiPhan.top();
        nhiPhan.pop();
    }

    return 0;
}
Nguyễn Minh Dũng viết 18:14 ngày 30/09/2018

Nhìn vào thấy hay, đang tính comment khen thì đọc ngay cái câu “Tìm lỗi sai”. Ẹc, bookmark hóng cao nhân vào xử.

Phạm Hoàng Tuấn viết 18:18 ngày 30/09/2018

sai chỗ vòng lặp,tại lúc trưa ngồi code bài tương tự nên mới biết, bình thường không debug chắc chịu. vì số phần tử trong stack giảm dần sau mỗi lần lặp (hàm pop()), trong khi i tăng dần, =>tối thiểu có stack[n-1] với n>=2…trong không bao giờ truy xuất dc. Không biết giải thích đúng k nữa, có j bạn nào giải thích cho dễ hiểu hơn với.
thay for(int i = 0; i < nhiPhan.size(); i++) bằng while(nhiPhan.size()>0)

Dũng Kon viết 18:14 ngày 30/09/2018

đúng rồi chứ gì nữa đáp án là đây này

#include <iostream>
#include <stack>
using namespace std;

int main()
{
    stack<int> nhiPhan;
    int n = 4;
    while(n > 0)
    {
        int dv = n%2;
        nhiPhan.push(dv);
        n = n/2;
    }

    while(!nhiPhan.isEmpty())
    {
        cout << nhiPhan.top();
        nhiPhan.pop();
    }

    return 0;
}
Nguyễn Minh Dũng viết 18:18 ngày 30/09/2018

@Dung_Kon nghiên cứu thêm STL nữa đi, khi ra trường sẽ trùm C++ luôn

Nguyễn Minh Dũng viết 18:07 ngày 30/09/2018

I moved a post to a new topic: lỗi Break khi run

Bài liên quan
0