No.17201![]() |
逆順のプログラム 投稿者---かなみ(2004/10/09 23:49:39) |
||
文字を読み込んで、逆順に出力するプログラムを作りなさいという問いなんですが、さっぱりわかりません。例えばmailと打ち込むとliamと出力されるプログラムなんですが・・・教えてくださいm(__)m |
No.17202![]() |
Re:逆順のプログラム 投稿者---王町(2004/10/10 00:04:09) |
||
【掲示板ご利用上の注意】の上から2番目を声に出して 100回唱和。 |
No.17203![]() |
Re:逆順のプログラム 投稿者---επιστημη(2004/10/10 01:00:17) |
||
>文字を読み込んで、逆順に出力するプログラムを作りなさいという問いなんですが、さっぱりわかりません。 1. 文字列 str[] の i番目とj番目を交換しなさい 2. i:先頭, j:末尾として [1] を行いなさい 3. i=i+1, j=j-1 して[1]を行いなさい 4. i < j である間、[3]を繰り返しなさい |
No.17208![]() |
Re:逆順のプログラム 投稿者---monkey(2004/10/10 12:38:10) |
||
> 文字を読み込んで、逆順に出力する 逆順で「出力」するだけなら、次の方法でも可でしょう。 (1) i=(文字列str[]の文字数-1)とする (2) str[i]を出力(一文字)する (3) iが0なら終了する (4) i=i-1として(2)に戻る |
No.17211![]() |
Re:逆順のプログラム 投稿者---かずま(2004/10/10 16:37:29) |
||
#include <stdio.h> void rev(void) { int c = getchar(); if (c != '\n') rev(), putchar(c); } int main(void) { rev(); putchar('\n'); return 0; }こんなプログラムは書かないほうがよいという見本です。 |
No.17214![]() |
Re:逆順のプログラム 投稿者---かなみ(2004/10/10 21:39:04) |
||
><pre> #include <stdio.h> void rev(void) { int c = getchar(); if (c != '\n') rev(), putchar(c); } int main(void) { rev(); putchar('\n'); return 0; } </pre>こんなプログラムは書かないほうがよいという見本です。 これはどこがよくないのでしょうか? あと、revっていうのは今まで使ったことがないのですが・・ |
No.17215![]() |
Re:逆順のプログラム 投稿者---ぽこ(2004/10/10 21:50:22) |
||
>これはどこがよくないのでしょうか? 入力が長いと大変なことになるかも知れないからでしょう。 >あと、revっていうのは今まで使ったことがないのですが・・ ユーザ自作関数だから当然でしょう。 むしろ使ったことあったらびっくりです^^; |
No.17218![]() |
Re:逆順のプログラム 投稿者---hermit(2004/10/11 00:33:46) |
||
>>あと、revっていうのは今まで使ったことがないのですが・・ >ユーザ自作関数だから当然でしょう。 >むしろ使ったことあったらびっくりです^^; rev じゃなくて strrev なんてのは、昔は普通に有ったんだけど 今は無いのかな・・・・ |
No.17219![]() |
Re:逆順のプログラム 投稿者---ぽこ(2004/10/11 00:46:19) |
||
>rev じゃなくて strrev なんてのは、昔は普通に有ったんだけど >今は無いのかな・・・・ strrev()とか存在すら知りませんでした^^; ちょっとGoogleで調べてみました。 下のURLでは標準関数と書いてます。 http://www5c.biglobe.ne.jp/~ecb/c/15_02.html んが、以下のURLのQ.13には標準ではないとあります。 http://www.st.rim.or.jp/~phinloda/cqa/cqa1.html ここのホームページの標準関数の欄にもありませんね。 非標準でライブラリが提供したんだけど使用頻度低かったために消えた 関数でしょうか。。 |