簡體   English   中英

找出數字之間的最大差

[英]Finding the maximum difference between numbers

給定n個數字,找出其中兩個之間的最大差。 例如,對於輸入數據1 2 7 -6,我們有13 = 7-(-6)。 但是我的代碼似乎沒有輸出正確的結果:

#include <iostream>
#include <algorithm>
int main()
{
    int n, j, k;
    std::cin >> n;
    int *a;
    a = new int[n];

    for (j=0; j<n; j++)
    {
        std::cin >> a[j];
    }

   std::sort(a, a + sizeof(int));


    k=a[n-1]-a[0];
    std::cout << k;

    delete [] a;

    return 0;
}

正如Olivier回答的那樣,您的錯誤在於對std :: sort()的調用中,但我想指出的是,除非這對您的任務是必需的(它可能是家庭作業的一部分),否則您無需對數組,也不需要數組。

#include <iostream>
#include <climits>

int main() {
    int n, j, a;
    int max = INT_MIN;
    int min = INT_MAX;

    if ( std::cin >> n  &&  n > 0 ) {
        while ( j < n  &&  std::cin >> a ) {
            if ( a < min ) min = a;
            if ( a > max ) max = a;
            j++;
        }    
        std::cout << max - min;
    }
    return 0;
}

您的問題是當您調用std :: sort時

你做:

std::sort(a, a + sizeof(int));

因此,您實際上只對4個元素進行排序(大多數情況下,sizeof(int)= 4)。 為了獲得正確的結果,您可以執行以下操作:

std::sort(a, a+n); (better)

要么

std::sort(a, &a[n]);

暫無
暫無

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

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