また新たな問題が出ました・・・


恭子  2004-11-23 03:55:37  No: 55281

昨日と同じ質問になってしまうんですが・・・
「空行は出力しないで下さい。」にどうしてもひっかかるのです。(>。<)
多分、私なりの解釈としては、
「空行は格納しても、出力はするな。」だったんですけど・・・
つまり、実行結果に空行が出ては駄目って事じゃ無いでしょうか??
それでしたら、「空白」は数えないようにすれば良いのでは?と思いました・・・
自分で考えてみたのですが、どうもわかりません。
皆さんの知恵をお借り出来たら幸いです!よろしくお願いします(><;)


monkey  2004-11-23 04:23:14  No: 55282

> 実行結果に空行が出ては駄目って事じゃ無いでしょうか??

前回のサンプルは「空行は格納するが、出力はしない」です。
空行は出力されませんよ。
よくご確認ください。

> 「空白」は数えないようにすれば良いのでは?

「空白」と「空行」は別物でしょ?
「空白」も出力しないということですか?

ご参考までに「空行は格納しない(空行でなければ格納する)」サンプル:

#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
#include <functional>

template < typename Sequence >
class less_length : public std::binary_function< Sequence, Sequence, bool >
{
public:
    bool operator()( const Sequence& lhs, const Sequence& rhs ) const
    {
        return lhs.size() < rhs.size();
    }
};

int main()
{
    std::vector< std::string > data;
    for( std::string line; std::getline( std::cin, line ); ){
        if( !line.empty() ){ // lineが「空」でなければ
            data.push_back( line.substr( 0, 80 ) ); // 格納する
        }
    }
    std::stable_sort( data.begin(), data.end(), less_length< std::string >() );
    std::copy( data.begin(), data.end(), std::ostream_iterator< std::string >( std::cout, "\n" ) );
}


恭子  2004-11-23 09:25:45  No: 55283

monkeyさん、回答、そしてプログラムありがとうございます(^^)
早速実行してみました!!
でもやはり「空白」「空行」も数えられてるみたいです・・・
私のやり方がまずいのでしょうか??
例えば、
aaa
aa__aa
a__a
____     (_は空白です。)

で実行すると
aaa
___
a__a
aa__aa

と、実行結果が出てきてしまいます。
これはもうしょうが無いんでしょうか?(>。<;)
わがままばかりですみません・・・


とおり  2004-11-23 18:17:47  No: 55284

いや、だから

>「空白」と「空行」は別物でしょ?
>「空白」も出力しないということですか?

と言われていますが。あなたは、

>残りは自力でがんばってみます☆(^▽^)/

と言ったのに、回答者の質問に答えるも、理解する気もないってことですか?


恭子  2004-11-23 20:42:37  No: 55285

「空白」と「空行」は別物ですよね!!ほんとゴメンナサイ!!!
追加していいですか?
元の問題は同じで、『標準入力からテキストファイルを読み込み』をする場合、どのようなプログラムになりますか。問題文読み損ねてました↓
おねがいします(><;)


RiSK  2004-11-23 21:58:35  No: 55286

あちらでも言われていますが,醜いですよぉ...

C言語関係掲示板 No.18311 追加で質問、いいですか? 投稿者---うったん(2004/11/23 12:06:37) 
→ http://www2.realint.com/cgi-bin/tarticles.cgi?pointc+18311


monkey  2004-11-23 22:25:10  No: 55287

> 標準入力からテキストファイルを読み込み

標準入力は通常はキーボードからの入力ですから、標準入力ストリームをリダイレクトしてファイル入力ストリームに変えるということと思われます。

リダイレクトであれば、プログラムを変更しなくてもコマンドプロンプトからプログラムを実行する時に次のようにすればできます。
(Windowsの場合。UNIX系はどうだか知りません)

C:\Dir>sorter.exe<file.txt

ここで、
"sorter.exe"はこのプログラムの実行ファイル名、
"file.txt"は読み込むテキストを保存したファイル名、
"Dir"はそれらを保存したディレクトリ名。

ついでに、読み込んだ文字列から「空白」を削除するには、std::remove, string::erase を使うと簡単です。

# 'あちら'と同じ人なの?
# たまたま同じ宿題をしている人'たち'だと思ってた...


...  2004-11-24 00:15:24  No: 55288

# 今はこんなキャピピャピ(死語)話す女性ばかりのプログラムの授業も
# あるだな。女性人口が多いとはにわかに信じられないが時代は変わった。

# 印象だが,「前日に騒ぐやつ」と少なくとも「その前に質問してる人」が
# 同じとは思いたくない。だが,全員が実在することはないだろうな。
# 'あちら'は別人と好意的に思っておいた方が精神衛生上幸せだと思った。


恭子  2004-11-24 00:55:04  No: 55289

monkeyさん、丁寧な説明、ありがとうございます。
問題は他にもあるのですが、ここの掲示板がある先入観を持った人の中傷によって汚くなってしまうので、真に遺憾ではありますが発言は控えさせていただきます。


monkey  2004-11-24 06:10:24  No: 55290

> 発言は控えさせていただきます。

マルチポストを装った'あちら'の書き込みは、悪意ある者によるいたずらだと思います。
気にせずに続けて下さい(ただし、ご自分で調べる努力も怠らないように)。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加