查找第一个和最后一个按升序排列的数字
问题描述:
我正在试图找到一种方法来编写一个程序,该程序将采用“n”个术语并查明它是否上升。如果列表不是升序,找到违反此订单的第一个号码并打印索引位置i,然后找到违反它的最后一个号码。查找第一个和最后一个按升序排列的数字
例如:2 3 4 2 3 2 3 4 1 - 的输出应为:元素#4被降& &元素#9是LAST descen
编辑:我已经解决了如何找到的第一个数字只是没有最后一个号码
这里是我的代码:
#include <iostream>
using namespace std;
int main(){
int num, inputNum, i;
int nextNum=0;
int violator1=0, violator2=0;
int elementNum1=0, flag1=0;
int elementNum2=0, flag2=0;
cout << "Enter how much numbers you want to enter in list: ";
cin >> num;
for (i = 0; i < num; i++){
cout << "Please enter a number: ";
cin >> inputNum;
if (inputNum >= nextNum){
nextNum = inputNum;
}
else {
flag1 = 1; /*The flag is set to '0' when the next number in list has descended*/
violator1 = inputNum;
if (elementNum1 == 0) /*This condition will only run once because elementNum == 0 only once*/
elementNum1 = i+1;
}
}
/*The flag value is determined within the loop to find the descending value*/
if (flag == 0){ /*If the flag is UNchanged ie = 1*/
cout << "These numbers are in ascending order." << endl;
}
else {
cout << "These numbers are NOT in ascending order." << endl;
cout << "Element Number '" << elementNum << "' was the violating number." << endl;
}
return 0;
}
答
我想通了这一个了。
要在列表中找到最后一个违规者,您必须初始化一个新标志并将其设置为在找到第一个违规者后进行更改。
在我上面的例子中,发现第一个违规者后,element1 == 0的条件应该是false。一旦条件失败,就需要有一个else语句将新标志更改为除一个之外的其他语句和一个新的element2变量,该变量每次发现违规者都会更改索引编号。
所以它工作?你是否与我们分享了一个好的解决方案,或者你有问题吗? –
标志和elementNum在程序中声明在哪里? – vishal