「一行ごとに一単語(英単語)が書かれたファイルがある。
このとき、このファイルの内容をソートとして画面上に標準出力するプログラムを作成せよ。
ファイルの行数は不定とし、また上限を定めないこと。
また、ソートは降順あるいは、昇順のどちらにも対応できること。」
ちなみにファイルの読み込みは1回、単語格納のための配列は使ってはいけない、qsortは使ってはいけない
という条件付きです。
手順はだいたいわかるんですが、どのような関数を使ったりとかがわかりません
よろしければ誰か分かる人がいれば教えてください。お願いします。
英単語のソートプログラムについて
Re: 英単語のソートプログラムについて
どのような手順なのか、教えてもらえますか。緑、許さない絶対にだ さんが書きました:手順はだいたいわかるんですが、どのような関数を使ったりとかがわかりません
また、
ってのは、配列でなければ、メモリーにすべて読み込んでもいいのですか?緑、許さない絶対にだ さんが書きました:単語格納のための配列は使ってはいけない
でも、ファイルの数の上限がないですよね。すべて、メモリーに読み込むことはできませんよね。
でも、ファイルは1回しか読み込めない。さて、困った。思いつかない。
non
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: 英単語のソートプログラムについて
配列は使えないとのことですが、ツリー構造やリスト構造はOKなのでしょうか?
それとファイルの行数が不定ならメモリに読み込めませんので、ソート中の情報をファイルに作るというかなり面倒で低速な処理になると思われますが、その認識でよろしいですか?
それとファイルの行数が不定ならメモリに読み込めませんので、ソート中の情報をファイルに作るというかなり面倒で低速な処理になると思われますが、その認識でよろしいですか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: 英単語のソートプログラムについて
一応作ってみましたが、ファイルの行数は、使用可能なメモリで上限が決まってしまいます。
また、辞書を作るのが面倒だったので、入力された文字列が英単語として妥当かどうかの判定も行っていません。
使い方はソースから読み取ってください。
あと、言語不明なので、勝手にC++だと判断しました。
また、辞書を作るのが面倒だったので、入力された文字列が英単語として妥当かどうかの判定も行っていません。
使い方はソースから読み取ってください。
あと、言語不明なので、勝手にC++だと判断しました。
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <iterator>
#include <exception>
int main(int argc, char* argv[])
try
{
std::vector<std::string> v;
while (std::cin)
{
std::string s;
std::getline(std::cin, s);
if (!s.empty())
v.push_back(s);
}
std::sort(v.begin(), v.end());
if (argc < 2 || *argv[1] != 'd')
std::copy(v.begin(), v.end(), std::ostream_iterator<std::string>(std::cout, "\n"));
else
std::copy(v.rbegin(), v.rend(), std::ostream_iterator<std::string>(std::cout, "\n"));
}
catch (std::exception& e)
{
std::cerr << e.what() << std::endl;
}
Re: 英単語のソートプログラムについて
問題を読み返してみると「ソートは降順あるいは、昇順のどちらにも対応できること。」に対応してませんね。
逆順の場合はbegin()とend()のずれに注意してforを逆にしてください。
逆順の場合はbegin()とend()のずれに注意してforを逆にしてください。
Re: 英単語のソートプログラムについて
皆さん色々と意見どうもありがとうございます。とても参考になります。
ただ自分が習っていない関数なども多々有り、正直いまいちわからないです。
そして書き忘れてしまって申し訳ありませんが言語はC言語で、
自分はリストを作ってそこに単語を格納してソートの手順でしようと思っています。
しかし、上手くリストに単語を格納してソートするためにどうプログラムをくめばいいのかがわかりません。
色々ミスがあってスイマセンが引き続き教えてもらえないでしょうか、お願いします
ただ自分が習っていない関数なども多々有り、正直いまいちわからないです。
そして書き忘れてしまって申し訳ありませんが言語はC言語で、
自分はリストを作ってそこに単語を格納してソートの手順でしようと思っています。
しかし、上手くリストに単語を格納してソートするためにどうプログラムをくめばいいのかがわかりません。
色々ミスがあってスイマセンが引き続き教えてもらえないでしょうか、お願いします
Re: 英単語のソートプログラムについて
ということはある程度はわかるのですね。緑、許さない絶対にだ さんが書きました:正直いまいちわからないです。
どこまでわかったのかを説明してみてください。