正如标题所述,我正在尝试比较数组中的元素。我的目的是让用户在程序中输入3个整数,此后它应该通过数组比较第一个数字和第二个数字,以此类推,依此类推,并将元素的顺序从最低到最高。
我目前的问题是它将交换第一个和第二个元素,但是第三个元素将导致整数溢出,这是由于我比较并分配了比初始化数组可以容纳的索引高的整数。
我目前在空白处仍无法以这种方式比较这些数字而不会引起溢出。
一个提示或完全不同的观点将不胜感激。
#include "E:/My Documents/Visual Studio 2017/std_lib_facilities.h"
int main()
{
cout << "Enter three integers: \n";
int numbersArray[3];
int temp = 0; //This lets us hold our integers temporarily so we can swap them around in the array
//This enters integers as elements in the array
for (int i = 0; i < 3; i++)
{
cin >> numbersArray[i];
}
//This should swap the elements from smallest to greatest
for (int i = 0; i = 3; i++)
{
if (numbersArray[i] > numbersArray[i+1])
temp = numbersArray[i];
numbersArray[i] = numbersArray[i+1];
numbersArray[i+1] = temp;
//swap(numbersArray[i], numbersArray[++i]);
}
//This prints the index's containing the elements in the array
for (int i = 0; i < 3; i++)
{
cout << numbersArray[i] << ' ';
}
cout << endl;
keep_window_open();
return 0;
}
答案 0 :(得分:0)
您将需要对其进行修改以适合您的需求,但这应该可以使您走上正确的道路。要调查的重要一件事是您决定如何对元素进行排序。您的排序需要循环,否则,您不必对整个数组进行排序(取决于您的输入)。
#include <iostream>
using namespace std;
int main()
{
cout << "Enter three integers: \n";
int numbersArray[3];
int temp = 0; //This lets us hold our integers temporarily so we can swap them around in the array
//This enters integers as elements in the array
for (int i = 0; i < 3; i++)
{
cin >> numbersArray[i];
}
for(int loop = 0; loop <3; loop++){
//This should swap the elements from smallest to greatest
for (int i = 0; i < 2; i++)
{
if (numbersArray[i] > numbersArray[i+1]){
temp = numbersArray[i];
numbersArray[i] = numbersArray[i+1];
numbersArray[i+1] = temp;
}
//swap(numbersArray[i], numbersArray[++i]);
}
}
//This prints the index's containing the elements in the array
for (int i = 0; i < 3; i++)
{
cout << numbersArray[i] << ' ';
}
cout << endl;
return 0;
}