Code chạy chỉ cho nhập được 2 dòng rồi tự động dừng

Mọi người giúp em với, lúc em runcode thì chỉ nhập được 2 dòng là chương trình tự động dừng chứ không cho nhập thêm bất cứ gì ạ

Viết chương trình nhập xuất đa thức một biến f(x). Sau đó nhập giá trị biến x và tính giá trị f(x) với kết quả hiển thị chính xác 2 số sau dấu thập phân.

#include <iostream>
#include <math.h>
#include <iomanip>
using namespace std;
struct DATHUC
{
    float *heso;
    float *somu;
    int n;
};
DATHUC *Nhap()
{
    DATHUC *B = new DATHUC;
    cin >> (*B).n;
    for (int i = 0; i < (*B).n; i++)
    {
        cin >> (*B).heso[i];
        cin >> (*B).somu[i];
    }
    return B;
}
void Xuat(DATHUC B)
{
    for (int i = 0; i < B.n; i++)]
    {
        if (B.heso[i] != 0)
        {
            if (B.heso[i] == 1)
                cout << '+';
            else if (B.heso[i] == -1)
                cout << '-';
            else
                cout << B.heso[i];
            if (B.somu[i] == 1)
                cout << 'x';
            else if (B.somu[i] != 0)
                cout << "x^" << B.somu[i];
        }
    }
}
float TinhDaThuc(DATHUC B, double x)
{
    float f = 0;
    for (int i = 0; i < B.n; i++)
    {
        f += pow(x, B.somu[i]);
    }
    return f;
}
int main()
{
    DATHUC *B;
    B = Nhap();
    cout << "Da thuc vua nhap la: ";
    Xuat(*B);
    double x;
    cin >> x;
    cout << "\nVoi x=" << x << ", gia tri da thuc la: "
         << setprecision(2) << fixed << TinhDaThuc(*B, x);
    return 0;
}

Bạn đã khởi tạo 2 con trỏ này chưa?

4 Likes

Dạ em fix được rồi ạ, em cảm ơn

1 Like

bạn cho mình hỏi sao chổ khi cấp phát động “DATHUC *B = new DATHUC” bạn không dùng “delete B” nhỉ? như thế có bị hao tổn bộ nhớ không ?
Cảm ơn bạn trước .

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