アプリ版:「スタンプのみでお礼する」機能のリリースについて

C言語で

英文字のみからなる文字列、”Radar”、”WasItACatISaw”、”a”、””(空列)などは回文である。コマンドライン引数でテキストファイル名を取得し、そのファイルにある英文字のみを順番にくっつけることで作った文字列が回文となっているか否かを判定するプログラム。
これ解けるかたいますか?

A 回答 (5件)

本質問はYahooo!知恵袋にも投稿されており、マルチポストです。

    • good
    • 0

中身のない文字列 s を作る


ファイルから1文字分を読む (fgetc)
英字なら s の末尾に追加 (isalpha,strcat)
... 読み取り終わるまで繰り返し
s の長さ n を測る (strlen)
s[0] と s[n-1] が違うなら回文ではない
s[1] と s[n-2] が違うなら回文ではない
... 全文字を見るまで繰り返し
ここまで否定が無ければ s は回文と判定
    • good
    • 0

> コマンドライン引数でテキストファイル名を取得し、



実行形式がa.out
a.out moji.txt
と実行して、moji.txtのテキストファイル名を取得したとして。

> そのファイルにある英文字のみを

moji.txtが、
WasI
tACa
tISaw
Hoge
の4行だとして。

> 順番にくっつけることで

1回目、WasI
2回目、WasItACa
3回目、WasItACatISaw
4回目、WasItACatISawHoge

って事?
それとも、くっつける回数なら1回分ズレる?
その場合、1行目が回文でも判定されないけど?

> 作った文字列が回文となっているか否かを判定するプログラム。

1回目、2回目の判定結果を表示する?
3回目回文だったから回文だって表示して終了?
最後までループして、何回目がどういう回文だとか表示?

> これ解けるかたいますか?

問題のあいまいな文章、意図を読み解くのがそもそも難しいと思う。
プログラム作るなら、上の2番目のパターンでサクッと終わるのが簡単だと思う。
英字以外の文字が入ってたら動作不定とかでエラーチェックも面倒だからしないなら、せいぜい20~30ステップくらい?
文字総数や行数の上限決めといてあげた方が簡単かも。
    • good
    • 0

「そのファイル」に「ある英文字『のみ』を『順番に』くっつける」って, どういう操作を想定しているんだろうか. 「ある英文字『のみ』

」がなにを意図しているのかわからんし, 「『ファイル』に文字をくっつける」はどのような操作を表しているんだろう.
    • good
    • 0

解けるか解けないか?


が質問なんですよね?

課題代わりにやってくれ。とか、
ソースくれ。とかではなく。

条件付きで、一応解けると思いますよ。
ソースコードくれ。と言われても断りますが。
・文字列の先頭アドレスを受け取って、回文判定するルーチン(大文字小文字は無視)
・ファイルからアルファベットのみ読み込んで、文字列に追加する処理(サイズは不明なので動的確保かね。)
等など必要でしょうけど、個々の処理自体はそう難しくないでしょう。
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!