【发布时间】:2015-01-09 16:52:31
【问题描述】:
我想对具有奇数索引的向量中的数字进行排序(索引从 0 开始)。
例如,如果我输入这个数字; 1 6 5 7 3 2 0,程序必须返回这个:1 2 5 6 3 7 0。
我的代码
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int eded, n, _temp;
size_t i;
cout << "Nece eded daxil edeceksiniz?" << endl << ">>> ";
cin >> n;
vector<int> v_eded;
v_eded.reserve(n); // n qeder bosh yer ayiriram vektor-da
cout << "Ededleri daxil edin:" << endl;
for (int i = 0; i < n; i++)
{
cin >> eded;
v_eded.push_back(eded);
}
for (i = 1; i < v_eded.size(); i+=2)
{
if (v_eded[i] > v_eded[i+2])
{
_temp = v_eded[i+2];
v_eded[i+2] = v_eded[i];
v_eded[i] = _temp;
}
}
for (auto j : v_eded)
cout << j << " ";
return 0;
}
编译时没有任何警告和/或错误。插入eded 后,我按下Enter 并且程序给了我这个错误:
我无法确定问题所在。请解释一下出了什么问题以及如何解决这个问题。
最好的问候。
【问题讨论】:
-
不清楚您所说的“我想对具有奇数索引(索引从 0 开始)的向量中的数字进行排序”是什么意思。但是,您看到的错误是因为您访问的索引超出了向量范围
-
按重试调试。 (休息时间应在
if (v_eded[i] > v_eded[i+2]))。 -
@coni 调试器应该已将您带到导致问题的行。
-
@coni 这些值是发生崩溃时这些变量的值。您确实看到表达式超出范围(
i + 2)。此外,您编写了程序——您应该知道每一行应该做什么,因为您已经有了计划。您看到索引走得很远,对吗?所以我不知道(至少)告诉我们你知道问题是什么的困难,即使你不知道如何解决问题。 -
@coni - 你应该在编写代码之前计划好所有事情,并准备好调整(非工作)代码以适应你的计划,或者回去重新考虑/重做你的计划.
标签: c++ sorting vector console-application windows-applications