[英]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.