簡體   English   中英

如何在我的 MINGW 中為我的 C++ 代碼修復這個錯誤?

[英]How to fix this bug in my MINGW for my C++ code?

我正在從 Codeforces 解決這個問題。 關聯

我使用 Sublime Text 3 作為我的代碼編輯器和 Mingw 作為我的編譯器。 當我使用我的 Mingw 編譯和運行代碼時,它給出了我的錯誤答案,而當我使用https://ideone.com/時,我的答案不同並且是正確的。

我的代碼

using namespace std;

int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(NULL);

    int arr[4];
    int ans = 0;
    for (int i = 0; i < 4; ++i)
    {
        cin >> arr[i];
    }

    for (int i = 0; i < 4; ++i)
    {
        if (arr[i] == arr[i + 1] || arr[i] == arr[i + 2] || arr[i] == arr[i + 3]) {
            ans++;
        }

    }

    cout << ans;


}
Test-Case:1 
INPUT:
4 4 4 4

MINGW OUTPUT:
4
IDEONE OUTPUT:
3
Test-Case:2
INPUT:
1 7 3 3

MINGW OUTPUT:
2
IDEONE OUTPUT:
1

在這個 for 循環中

for (int i = 0; i < 4; ++i)
{
    if (arr[i] == arr[i + 1] || arr[i] == arr[i + 2] || arr[i] == arr[i + 3]) 
    {
        ans++;
    }

}

在數組邊界之外有許多訪問。 所以程序有未定義的行為。

要解決這個問題,你應該 select 一個合適的容器來存儲輸入的值。

如果使用標准容器std::set可以更簡單地解決任務。

這是一個演示程序。

#include <iostream>
#include <set>

int main() 
{
    const size_t N = 4;
    
    std::set<unsigned int> set;
    
    for ( size_t i = 0; i < N; i++ )
    {
        unsigned int value;
        std::cin >> value;
        
        set.insert( value );
    }
    
    std::cout << N - set.size() << '\n';
    
    return 0;
}

例如,如果要輸入以下值序列

1 7 3 3

那么程序 output 將是

1

對於這個值序列

4 4 4 4

output 將是

3

如果要使用數組,那么程序可以如下所示。

#include <iostream>

int main() 
{
    const size_t N = 4;
    unsigned int a[N];
    
    for ( size_t i = 0; i < N; i++ )
    {
        std::cin >> a[i];
    }
    
    size_t ans = 0;
    
    for ( size_t i = 1; i < N; i++)
    {
        size_t j = 0;
        
        while ( j != i && a[j] != a[i] ) ++j;
        
        if ( j != i ) ++ans;
    }
    
    std::cout << ans << '\n';
    
    return 0;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM