Hỏi đáp

Chia sẻ kiến thức, cùng nhau phát triển

Bài này mình sai ở đâu ạ ai giúp với

2 năm trước 491 lượt xem 1 bình luận 2 năm trước

Sao có lúc đáp án nó ra đúng , đáp án nó ra số -4982548 lộn xộn có khi lại ra 0 nữa

 

 

#include<iostream>
#include<math.h>
const int nMax=200;
using namespace std;
int main()
{
    int X[nMax];
    int n,i;
    cout<<"Moi ban nhap so luong phan tu: ";
    cin>>n;
    for(i=1;i<=n;i++)
    {
        cout<<"Moi ban nhap gia tri phan tu: ";
        cin>>X[i];
    }
    cout<<"Mang vua nhap la: ";
    for(i=1;i<=n;i++)
    cout<<"\t "<<X[i];
    int kq,tich=1;
    
    for(i=0;i<=n;i++){
    
        if(X[i]%3==0)
        
                tich *= X[i];
            kq=pow(tich,2);
        }
    cout<<"\n Tich binh phuong cac so chia het cho 3 la: "<<kq;
    
    
    
}

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
anhhung21p đã bình luận 2 năm trước

bạn khai báo mảng X với số lượng phần tử tối đa là nMax, nhưng bạn không sử dụng biến nMax trong khai báo mảng. Thay vào đó, bạn sử dụng biến n để nhập số lượng phần tử cho mảng. Điều này có thể gây ra lỗi khi người dùng nhập giá trị lớn hơn nMax, dẫn đến tràn bộ nhớ.

Lỗi logic là việc bạn sử dụng biến i bắt đầu từ 0 trong vòng lặp, trong khi phần tử đầu tiên của mảng XX[1]. Do đó, bạn sẽ bỏ qua phần tử đầu tiên của mảng X và tính toán sai kết quả.

Một cách để sửa mã nguồn của bạn là thay đổi vòng lặp for để bắt đầu từ 1 thay vì 0, và sử dụng biến nMax trong khai báo mảng. Ngoài ra, bạn cần phải kiểm tra xem có phần tử nào trong mảng X chia hết cho 3 trước khi tính toán kết quả.

 

#include<iostream>
#include<math.h>

const int nMax = 200;

using namespace std;

int main()
{
    int X[nMax];
    int n, i;
    cout << "Moi ban nhap so luong phan tu: ";
    cin >> n;
    for (i = 1; i <= n; i++)
    {
        cout << "Moi ban nhap gia tri phan tu: ";
        cin >> X[i];
    }
    cout << "Mang vua nhap la: ";
    for (i = 1; i <= n; i++)
        cout << "\t " << X[i];

    int kq = 1;

    for (i = 1; i <= n; i++) {
        if (X[i] % 3 == 0) {
            kq *= X[i] * X[i];
        }
    }
    cout << "\n Tich binh phuong cac so chia het cho 3 la: " << kq;
}