No.4ベストアンサー
- 回答日時:
#1です。
書いていただいた補足に基づき、検討します。
方針としては、入力ストリームを順次読み込みながら、あるいは全部一旦バッファに格納してから、
「単語-スペース-'?'」
「単語-スペース-'.'」
「単語-スペース-'!'」
などといったパターンにマッチするかどうかを判断し、マッチした箇所を置き換える(スペースを除去する)処理をひたすら(パターンにマッチしなくなるまで)行なうプログラムを書けばよいです。
上記のパターン自体をソースコードの中に埋め込んでもOKですし、もう少し汎用性を持たせようと思えば、上記のルール自体を外部ファイルなどから読み込むようにしても良いでしょう。
このあたりのテキスト処理のプログラムを自分でC言語/C++言語などで書きたければ、「字句解析」,「有限オートマトン」などのキーワードで検索し、その理論や手法を勉強されることをお勧めします。コンパイラ作成の基礎ともなる技術です。
ご自分でプログラムを書くことにこだわらず、結果だけを手軽に得たいのでしたら、sed(stream editorの略)というプログラムを使えば、比較的簡単にできます。
書籍「sed & awkプログラミング」
http://www.amazon.co.jp/exec/obidos/ASIN/4900900 …
正規表現入門
http://mibai.tec.u-ryukyu.ac.jp/~oshiro/Doc/rege …
これで参考になるでしょうか。頑張ってください。
No.3
- 回答日時:
1.単語ごとに分割する時、スペースも含めて格納してはいかがですか。
(△は1桁の空白です)△#include△<stdio.h>は
(△#)(include)(△<)(stdio)(.)(h)としては、どうでしょうか。
復元するときは、単純につなげれば良いだけです。
2.何故、単語ごとに分割するのか、又、どうしてそれを復元する必要があるのか。その辺の事情を説明していただけるともっと良い回答が、得られるかもしれません。
例えば、上記の例で、
△#include△<stdio.h>と
#include△△<stdio.h>は、同じ文としたいのか、そうででないのかの判断が、つきません。(△#)と(#)は、同じものとして扱いたいのかどうかも不明です。
その辺の事情も含めて説明されると良いかと思います。
ご回答ありがとうございます。
諸事情によりスペースは格納しないでという前提で行っています。
△#include△△△△<stdio.h>となった場合は△△△を格納しないと完全に復元出来ないと思うので、分割方法ももっとこれから検討したいと思ってます。
予定としては、△#include△△△△<stdio.h>となった場合は(△)(♯)(include)(△△△)(<)...としスペースは一個だけ入れれば完成する形にしようと考えております。
分割プログラムも行き詰まったらまたスレを立てるかもしれないのでその時もよかったらまたよろしくお願いします。
No.1
- 回答日時:
どのような復元プログラムを作りたいのかを明確にしたほうが良いと思います。
ご質問の文面から推察すると、分割した単語間に単にスペースを入れるだけでは不十分なのでしょう。
もしそうだとすると、スペースの場所や数に関する情報を記憶していくか、そのようなスペースに関する情報を生成する規則のようなものが必要となります。
失われた情報を復元することは原理的に不可能ですので。
どうしようとしていて、何が上手くいかないのでしょうか。
この回答への補足
Rossanaさん、elmcloseさんご回答ありがとうございます。
説明不足で申し訳ございませんでした。
今は、テキストファイルにスペース単語スペース単語スペース\nスペース単語...と出力するプログラムは作りました。
そのスペース単語スペース単語...となっているテキストファイルを読み込み、
単語スペース? となっていたり単語スペース.や単語スペース!となっていたらそのスペースを削除。
(スペース単語となっていたらそのスペースを削除してテキストファイルを書き直すプログラムが上手くいかないので作って頂きたいという状況です。
またこれだけでの規則では完全に復元でき無いと言う事は分かっております。
完全では無いというところは目をつぶって頂けたら幸いです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 大学受験 大学受験英語の勉強法についてです どうしても英語長文の勉強ができません 初めて数分で絶対にやる気がな 2 2023/05/05 00:32
- 英語 英語の課題で質問です。 英語で自己紹介をするのですが、なかなか文章が埋まりません。 中学一年生程度の 3 2022/05/08 20:32
- 仕事術・業務効率化 効率的な勉強方法(分野問わず)を教えてください 1 2023/08/16 01:33
- 大学受験 助けてください。 大学入試まであと38日なのですが英語が2割です…。 第1志望は5割位なのですが、2 8 2023/01/03 19:37
- 高校受験 模試で数学、英語は安定して9割取れますが、 国語だけ最悪6割最高8割ほどしかとれません。 文法は覚え 0 2022/10/24 19:21
- 大学受験 明治大学受験、もう一冊、英単語張をやるか? 4 2022/10/23 20:50
- 大学受験 【高2・英語・長文・読むコツ】 2 2022/07/11 17:30
- 英語 子供の友達の外国の親子に会った時に お母さんと軽くコミュニケーションを取る際の英語について教えてくだ 3 2022/03/22 23:34
- 大学受験 3浪しようと思うので、アドバイスお願いします。 自分としては結構メンタルきつくて後期でいいから、東京 3 2023/02/13 21:47
- 大学受験 高3、march志望です。助けてください...! 古文の模試で3割しか取れませんでしたT^T 今から 6 2022/09/24 09:44
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
指定したフォルダーを最前面表...
-
c言語のサイコロを100回振って...
-
作ったプログラムがすぐに閉じ...
-
Excel VBA で、データベースフ...
-
CGIの記述について教えてくださ...
-
C言語primeについて
-
任意ソフトのテキストボックス...
-
2値化した画像の黒い部分のピク...
-
プロダクションコードとは?
-
16ピンのPIC16F819のサーボモー...
-
Excel VBA じゃんけん
-
初級者の質問――time_tについて
-
CUDAでLU分解
-
SMC-4DL-PCIボードでのプログラム
-
パズルのバグ
-
初心者のプログラムの組み方に...
-
PSoCについて
-
C言語 ワイルドカード
-
マイコンからプログラムを読み...
-
Java規則性のある再帰的手続き...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
vba listviewにおけるtextのAli...
-
Webプログラムってネイティブア...
-
プロダクションコードとは?
-
指定したフォルダーを最前面表...
-
VBA
-
初級者の質問――time_tについて
-
Arduino nano(アルドゥイーノ ...
-
世界一美しいソースコード
-
2値化した画像の黒い部分のピク...
-
C言語primeについて
-
COBOLのS9タイプからXタイプへ...
-
無限ループ中にある任意のキー...
-
マイコンからプログラムを読み...
-
processingで雪が積もるような...
-
Excel VBA で、データベースフ...
-
openGLで物体を半透明にして表...
-
C言語→MATLABへの変換で、困っ...
-
三次元のグラフを書きたいので...
-
コンパイルエラーの意味
-
プログラムってコードに性格っ...
おすすめ情報