【問題】
・コンソールから正の整数を入力すると、それまで入力した数値が、小さい順に並べ替えて表示されるようなプログラムを作りなさい。
・-1が入力されたら、プログラムは終了するものとする。
・それまで入力され続けていた数値は、listに格納し、適切な場所に挿入するようにすること。
【欲しい実行結果】
正の整数を入力:5
入力された数:5
正の整数を入力:2
入力された数:2 5 ← 2は5より小さいので、5の前に挿入する。
正の整数を入力:3
入力された数:2 3 5 ← 3は2より大きいので、3の後に挿入する。
正の整数を入力:3
入力された数:2 3 3 5 ← すでに入力された数値も、重複してて登録する。
正の整数を入力:-1 ← -1が入力されたら、プログラムを終了する。
上記のような結果が欲しいのですが、以下のような表示になります。
コードのどこを直せばいいでしょうか?
【現状】
入力された数:5
正の整数を入力:2
入力された数:5 ←2が表示されない
正の整数を入力:3
入力された数:2 3 5
正の整数を入力:3
入力された数:2 3 3 5
正の整数を入力:-1
入力された数:2 3 3 5 ←この表示は不要
【作成したコード】
#include <iostream>
#include <list
using namespace std;
int main()
{
list<int> li;
int n = 0;
list<int>::iterator itr;
while (n != -1)
{
cout << "正の整数を入力:";
cin >> n;
cout << endl;
li.push_back(n);
//itr = li.begin(); //itr++; cout << "入力された数:"; for (itr = li.begin(); itr != li.end(); itr++) { li.sort(); li.remove(-1); cout << *itr << " "; } cout << endl; cout << endl; } return 0;
}
回答2件
あなたの回答
tips
プレビュー