コンソールから正の整数を入力すると、それまで入力した数値が、小さい順に並べ替えて表示されるようなプログラムを作りなさい。-1が入力されたら、プログラムは終了するものとする。なお、それまで入力され続けていた数値は、listに格納し、適切な場所に挿入するようにすること。
という問題。。。
自分の書いたコード。。
#include<iostream> #include<list> #include<string> using namespace std; int main() { int n = 0; int temp; list <int> li; while (n != -1) { cout << "正の整数を入力"; cin >> n; if (n == -1)break; li.push_back(n); } list<int>::iterator i1; list<int>::iterator j; for (i1 = li.begin(); i1 != li.end()--; i1++) { for (j = ++i1; j != li.end(); j++) { if (*i1 > * j) { temp = *i1; *i1 = *j; *j = temp; } } } for (i1 = li.begin(); i1 != li.end(); i1++) { cout << *i1 << ""; } }
昇順に並び替える方法は、以下のサイトなどを参照した。
https://webkaru.net/clang/array-sort-ascending-order/
コードに関しては、実行画面で、
[Expression:cannot increment end list iterator]
というエラーが出た。
コード自体にはエラーは無かった。
インクリメントで、どこがおかしいのか、わからなかったため、わかる方、ご教授ください。。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/06/17 18:30
2019/06/17 19:34
2019/06/17 23:32