所以我想獲得一堆數字,然後在我的C++控制檯應用程序中按升序打印它們。這是代碼。我的C++迭代將無法正常工作
void test_compare()
{
int amount;
amount = 10;
double num[amount];
double dummy[amount];
double smallest;
int i;
int inside_iterator;
for(i=0;i<amount;i++)
{
cout << "Number " << i+1 << ": ";
num[i] = get_double();
cout << endl;
}
for(i=0;i<amount;i++)
{
for(inside_iterator=i;inside_iterator<amount;inside_iterator++)
{
if (inside_iterator == i)
{
smallest = num[inside_iterator];
}
else
{
if (num[inside_iterator] < smallest)
{
smallest = num[inside_iterator];
}
}
}
dummy[i] = smallest;
}
for(i=0;i<amount;i++)
{
cout << endl << dummy[i] << endl;
}
}
我知道,這是一個拗口...... 但是當我運行它,它四周輸出的最後一個號碼。我做了一些試圖找出問題的線索,但沒有出現。
感謝任何有幫助的人。
使用'std :: sort'。聲明變量接近使用('int i = 0;'而不是'int i; ... i = 0;'等)不要使用非標準的VLA;如果它具有運行時大小,則使用'std :: vector'。 – chris 2014-10-11 00:07:27
你的邏輯似乎對我有缺陷:首先你在'num'的所有元素中尋找最小的數字,並將其寫入'dummy [0]'中。然後,將num的第二個到最後一個元素中的最小數字寫到「dummy [1]」中。然後是num的第3個到最後一個元素中的最小數字到「dummy [2]」。等等......爲什麼要給你一個有序的數字列表?您將按照它們在'num'中出現的順序從待搜索數字集中刪除數字。如果你想這樣做,那麼你必須刪除你找到的號碼。但即使泡沫排序更有效率... – Oguk 2014-10-11 00:15:34