1 名前:デフォルトの名無しさん [2012/05/04(金) 04:05:26.52 ] C言語の入門者向け解説スレッドです。 ★前スレ C言語なら俺に聞け(入門編)Part 100 toro.2ch.net/test/read.cgi/tech/1333108892/ ★過去スレ makimo.to:8000/cgi-bin/search/search.cgi?q=%82b%8C%BE%8C%EA%82%C8%82%E7%89%B4%82%C9%95%B7%82%AF&andor=AND&sf=0&H=&view=table&D=tech&shw=5000 ★教えて欲しいのではなく宿題を丸投げしたいだけなら ↓宿題スレ↓へ行ってください。 C/C++の宿題片付けます 157代目 toro.2ch.net/test/read.cgi/tech/1335517816/ ★C++言語については避けてください。C++対応明記スレへどうぞ ★分からない事をなるべく詳しく書いて下さい。 ★ソースコードを晒すと答えやすくなるかもしれません。 # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること # サイズが大きい場合は宿題スレのアップローダ等を利用してください ★開発環境や動作環境も晒すと答えが早いかもしれません。 ★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。 長くなりそうなコードはcodepadに貼り付けてもいいでしょう codepad.org/ ideone.com/
596 名前: ◆QZaw55cn4c mailto:sage [2012/05/18(金) 23:59:39.36 ] 末尾再帰について教えてください。 宿題スレにて、toro.2ch.net/test/read.cgi/tech/1335517816/497 が末尾再帰でないとの指摘があり、いろいろと考えていました。 思うに、toro.2ch.net/test/read.cgi/tech/1335517816/505 を理由に末尾再帰でない、ということになれば、よくある階乗の再帰関数 int f(int n) { return (n == 0) ? 1 : n * f(n - 1); } ですら末尾再帰ではないことになるのでしょうか? 末尾再帰であるために int f(int n, int i, int p) { return (n == i) ? p : f(n, i + 1, p * (i + 1)); } codepad.org/OSvQa0ni と書かねばならないのでしょうか? 主観的な表現になりますが、なんだかつまらなくなってしまいました。 コメントをいただけるとうれしいです。よろしくお願いいたします。
597 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 00:30:30.91 ] >>584 組み込み系の専門書読んだけど10pくらいで挫折した。 もっと分かりやすく書いて欲しいな。
598 名前:デフォルトの名無しさん [2012/05/19(土) 00:35:48.28 ] >>596 アホスwww
599 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 00:44:08.10 ] なんで末尾再帰を区別するのか、理由すら考えたことがないんだろうね。
600 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 03:22:05.75 ] >>596 >int f(int n) { >return (n == 0) ? 1 : n * f(n - 1); >} > >ですら末尾再帰ではないことになるのでしょうか? 末尾再帰では有りません。 「ループに変換可能か」と言うより 「ジャンプ最適化可能か」です。 なお、c言語では末尾再帰最適化を行わない処理系も多いので、 処理系依存度を下げたいなら、末尾再帰に拘る必要は有りません。 >末尾再帰であるために > >int f(int n, int i, int p) { >return (n == i) ? p : f(n, i + 1, p * (i + 1)); >} >codepad.org/OSvQa0ni >と書かねばならないのでしょうか? Yes。 ただしgccなどの一部の処理系では上記部分を関数内関数で書けるので、 呼び出し側からはint f(int n)で済ませることが出来ます。
601 名前: ◆QZaw55cn4c mailto:sage [2012/05/19(土) 06:39:29.09 ] >>600 >「ループに変換可能か」と言うより「ジャンプ最適化可能か」です。 call A end A: ... ret ... call A ret ならば A: ... ret .... jmp A になるということですか。昔、せこいことに call A / A: ... call B ret / B: ..... call C ret / C: ... ret を call A / A .. jmpB / B: ... jmp C / C: ... ret にしていた、というやつですね。 もう少し考えて見ます。コメントありがとうございました。
602 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 08:28:12.59 ] a
603 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 08:55:21.96 ] >>556 >>553 は日本語もやり直した方が良いひとだろ。 質問をお願いしますとか…
604 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 08:56:32.25 ] >>580 まずは任天堂と開発者ライセンスの契約を結ぶところからかなー
605 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 09:25:04.60 ] >>601 Schemeの継続の考え方が参考になると思う。
606 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 09:39:58.58 ] >>584 ありがとうございました。 ただそういった知識を身に付けても、例えばDSだったりPSPだったり 対象が変わるとまたARM9とかMIPSとか調べないといけないですよね? C言語というのは文法とか構文みたいなのは同じでもそういう ハードウェアの知識が必要なのですか?
607 名前: ◆QZaw55cn4c mailto:sage [2012/05/19(土) 09:40:51.15 ] >>605 コメントありがとうございます。
608 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 09:47:21.70 ] ハードウェアの知識がまったく必要とされない分野で Cを使うのはあまりにも生産効率が悪すぎる。
609 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 09:52:41.35 ] >>606 C言語自体は本当に言語としての土台の部分しか規定してない その土台の上に何が乗っかるかで学ぶべきことが変わるなんてザラよ とは言え、その土台がしっかり出来てりゃ乗っかるモノが変わっても対応しやすいけどね
610 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 09:53:53.23 ] 外人が作った開発環境があったような気がするけど それの使い方調べればハードのこと考えなくても作れた気がするけど
611 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 10:33:52.66 ] #include<stdio.h> int main(void) { char h1[4][3] = {"あ","い","あ","い"}; char h2[2][3] = {"い","あ"}; int a=2,b=1; if(h1[a]==h2[b]){ printf("成功! [%s],[%s]",h1[a],h2[b]);} else{ printf("失敗! [%s],[%s]",h1[a],h2[b]);} return 0; } 配列使って文字の比較やりたいんだけど エラーはでないものの「あ」「あ」の組み合わせでも 「失敗!」になってしまって困ってます。 配列使っての文字の比較ってどうすればいいでしょうか?
612 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 10:37:45.53 ] >>611 ==で比較したらだめだよ アドレスの比較になってしまう strcmp()で比較しないと
613 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 11:06:54.44 ] >>610 結局それはC言語自体ではないと思う
614 名前:611 mailto:sage [2012/05/19(土) 11:37:32.28 ] >>612 ありがとうございます、解決できました
615 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 12:13:44.15 ] いえいえ
616 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 12:19:45.04 ] >615 気に入らん。もう一度やれ!
617 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 12:22:01.62 ] そりゃそうだろC言語単体じゃ役に立たないコンソールプログラムくらいしか作れないよ
618 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 12:36:07.42 ] >>617 ばかじゃねーの
619 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 12:43:29.52 ] >>617 お前が作るコンソールプログラムこそが役に立たないんだろw
620 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 14:35:45.26 ] 質問です #include <stdio.h> #include <stdlib.h> int main(void) { char *ip; ip = getenv("REMOTE_ADDR"); printf("%s\n", ip); return 0; } において(null)しか返ってこないのですが環境によって動作しない事もあるのですか?
621 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 15:15:10.25 ] >617 ハードの詳細な仕様書があってもライブラリが無いから使えないって言いそうなやつだな。
622 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 15:22:57.83 ] >620 >REMOTE_ADDR >REMOTE_ADDRは、アクセス元のIPアドレスを表します。 >つまりあなたのホームページやCGIに対してアクセスした人がつかんでいるIPアドレスです。 httpサーバー経由の実行でもなきゃNULLが普通じゃね?
623 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 15:41:40.09 ] >>622 単に”IPを取得する”ものだと勝手な先入観で思い込んでしまっていました ありがとうございます ちなみにC言語において実行元のIPを取得する関数は存在しますか?
624 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 15:49:55.99 ] >実行元のIP これが全くもって意味不明なんだが
625 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 15:50:05.73 ] 環境依存
626 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 16:00:42.47 ] >>624 表現に悩みましたが、実行者のIPで伝わるのかな
627 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 16:06:09.03 ] C言語うんぬんよりも先に HTTPとかネット関係とか そっちの方をやった方が良いだろコイツ 今のままじゃあ話なんて通じねーよ ムダだよ
628 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 16:19:26.86 ] cgi作りたいならC言語よりPHPとかPerlとかのスクリプト言語の方勉強したほうがいいよ。
629 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 16:47:38.18 ] >620 IPアドレス持つにはTCP/IPプロトコルが必要。 TCP/IPプロトコルの無いハードなんていくらでもある。
630 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 16:58:18.34 ] すいませんLinuxとC言語の質問はどこでしたらいいですか?
631 名前:630 mailto:sage [2012/05/19(土) 17:01:14.05 ] Linuxでいいエディタがないので自分で作りたくて質問したいんです
632 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 17:06:16.64 ] vimでもemacsでもgeditでもだめってこと? 普段>>630 はどんなエディタ使ってるんだろ
633 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 17:07:43.29 ] >>629 調べて意味を理解できました、ありがとうございます 指摘通りネットワークの知識が薄いみたいなんで勉強してきます
634 名前: ◆QZaw55cn4c mailto:sage [2012/05/19(土) 17:34:34.37 ] >>608 つコンパイラ
635 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 17:47:23.61 ] 今は皆さんC初心者に優しいよね。Cマが増えても誰も困らないからかな。
636 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 21:21:40.19 ] >>635 そうですか?あいもかわらず冷たいと思っています、C がわからなければ人じゃない、っていう雰囲気はいつまでも払拭されない、という気が。
637 名前:630 mailto:sage [2012/05/19(土) 21:49:40.05 ] >>632 秀丸 vimとemacsは難しすぎてエディタの使い方を覚えないといけないから時間がかかります geditは機能が足りないので不満です そこで秀丸にある機能で自分で使いたいものを自分で実装して使いたいんです
638 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 21:54:48.55 ] その理想のエディタを開発するためにもまずはIDE使いこなせ
639 名前:デフォルトの名無しさん [2012/05/19(土) 21:57:02.97 ] 現在公立の中学生(1年)なんですが、C言語を始めたいと思っています。 中学の時点でC言語の理解は難しいでしょうか? 日本で小学校高学年や中学生でC言語というかプログラミングやってる 人は少ないですか?周りにいないので。
640 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 21:59:13.83 ] BASICみたいな使い方なら出来るだろう でもポインタとか構造体を使うにはちょっと難しいかもな 高校生になればだいたいできると思う しかし小学生でプログラム組んでた奴もいるから結局は個人差か
641 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 21:59:16.77 ] 厨房がC言語やるなんて早いんだよ。 部活やったり友達と遊んだりする事に時間を使え
642 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 22:03:45.81 ] >>639 CDブートのknoppixをUSBから起動させれば あなたもたちまちCマスターどころかイッパシのハカーになれます はっきりいって年齢は関係ありません 適性だけです
643 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 22:11:26.13 ] プログラミングなんかやったって何にもならないただの徒労で終わるよ 学生なら部活やら人付き合いやら勉強やら資格の勉強やらに費やすべき プログラミングなんかやったって受験で有利になるわけでも良い会社に入れるわけでも 出世競争で有利になるわけでも金が儲かるわけでもなんでもない プログラミングに時間を費やすというのは完全に人生をドブに捨てるのと同じで愚かな行為 受験勉強を頑張りなさい
644 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 22:12:18.29 ] >>643 うざいです><
645 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 22:24:33.13 ] >>637 だったら自分で新しいエディタ書くよりpythonでgeditプラグイン書いたほうが速いと思うが
646 名前: ◆QZaw55cn4c mailto:sage [2012/05/19(土) 22:42:53.30 ] >>639 先輩たちがここにいるよ。 当時の話をきくと面白いかもしれないよ。 ikura.2ch.net/test/read.cgi/i4004/1334408350/
647 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 22:47:19.05 ] >>646 オッサンは嫌
648 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 22:49:07.44 ] タイトルの俺って誰ですか?
649 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 22:50:01.57 ] Cの最大の難関はこんな役立たず言語覚えてどうするんだという疑問が払拭できず モチベーション維持が極めて難しいということだな。 そこさえ乗り越えられれば何歳だろうと習得は簡単。
650 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 22:51:50.76 ] 言語を作りたいのですがそういう場合でもC言語を覚えるのはやめたほうがいいですか?
651 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 23:08:14.06 ] 初歩的なことで申し訳ないんですが、 1〜40までの整数があって 1〜20を白、21〜40を赤 みたいにしたいとき、 1〜20 の ”〜”の部分は どう表現すればいいんですか?
652 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 23:08:43.52 ] >>649 ちがうんじゃねーの? Cで出来ることがほとんどやりつくされてるからじゃね デガラシいじくりまわしても楽しくないじゃん
653 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 23:25:18.64 ] ・覚えるの 早めた方がいいですか? ・覚えるのは 止めた方がいいですか? どっちなのかと。
654 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 23:27:22.88 ] >>651 あなたの質問は、if文の条件の書き方を知りたいと言うことですか? でとすれば、if (整数 >= 1 && 整数 <= 20) 白();のようにすればよろしいかと。
655 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 23:27:59.05 ] >>651 >1〜20 の ”〜”の部分は >どう表現すればいいんですか? 「波線」。
656 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 23:41:55.43 ] >>654 ありがとうございます! >>655 勉強になりましたwww
657 名前:デフォルトの名無しさん mailto:sage [2012/05/20(日) 00:25:16.23 ] いえいえ
658 名前:デフォルトの名無しさん mailto:sage [2012/05/20(日) 00:49:25.18 ] >>657 いやお前に言ってないからwww
659 名前:デフォルトの名無しさん mailto:sage [2012/05/20(日) 00:55:35.76 ] 俺に言ってんだよ。
660 名前:デフォルトの名無しさん mailto:sage [2012/05/20(日) 01:10:07.47 ] >>659 誰にも言ってないんですけど
661 名前:デフォルトの名無しさん mailto:sage [2012/05/20(日) 03:56:57.85 ] >657 が壁に向かって言ってるんだろ。
662 名前:デフォルトの名無しさん mailto:sage [2012/05/20(日) 03:59:53.21 ] Yeah Yeah
663 名前:デフォルトの名無しさん mailto:sage [2012/05/20(日) 07:15:58.09 ] iPadで授業の動画を見ながらプログラミング学習 ソフトバンクがシリーズ展開 iPad 向けアプリ「赤松先生のIT講座シリーズ」の第1弾としてリリースされたのは、『速解C 60分でわかる「構造体」「ポインタ」』(1500円、発売記念価格800円)。 markezine.jp/article/detail/11865 static.shoeisha.jp/mz/static/images/article/11865/11865.jpg
664 名前:デフォルトの名無しさん mailto:sage [2012/05/20(日) 08:19:55.81 ] イェーイェー
665 名前:デフォルトの名無しさん mailto:sage [2012/05/20(日) 08:23:16.86 ] ドットインストールで充分だろ。
666 名前:デフォルトの名無しさん mailto:sage [2012/05/20(日) 10:34:29.62 ] ドットインストールは中身薄くてダメだ そこで動画公開してる低レベル野郎のステマか?
667 名前:デフォルトの名無しさん mailto:sage [2012/05/20(日) 10:51:41.38 ] どーせ動画で見に付くわけないんだ、本人が判った気になるだけのために金を出すのは馬鹿馬鹿しいってこと。 それこそドットインストールがどうこうって、ソフトバンクのステマかっての。
668 名前:デフォルトの名無しさん [2012/05/20(日) 12:00:05.03 ] >>649 役立つ言語がもしあると今度は立場がなくなるやつが何か吠えてるなw
669 名前:デフォルトの名無しさん mailto:sage [2012/05/20(日) 12:10:49.11 ] C言語が身に付くレベルの理解力があれば他の言語の取得も容易っていう目安になる。
670 名前:デフォルトの名無しさん mailto:sage [2012/05/20(日) 19:20:02.56 ] なるね。
671 名前: ◆QZaw55cn4c mailto:sage [2012/05/20(日) 20:06:22.08 ] なるかなあ?
672 名前:デフォルトの名無しさん mailto:sage [2012/05/20(日) 20:15:42.94 ] とりあえずここが人が多そうだからここにきたんですが 総合的な質問スレってありませんか?
673 名前: ◆QZaw55cn4c mailto:sage [2012/05/20(日) 20:20:54.34 ] toro.2ch.net/test/read.cgi/tech/1316013463/
674 名前:デフォルトの名無しさん mailto:sage [2012/05/20(日) 20:57:23.25 ] >>672 ここが総合的な質問スレに見えるならそういうことにしておけ
675 名前:デフォルトの名無しさん mailto:sage [2012/05/20(日) 21:53:35.00 ] double nanashi(double MAX,double MIN) //MINからMAXまでの実数乱数を返す {return ((double)(rand()%(int)((MAX-MIN+1)*POINT))+MIN)/POINT;} 実数の乱数を返す関数を作りましたが思ったような動作を行いません 記述を間違えているのでしょうか POINTは10^4くらいです
676 名前:デフォルトの名無しさん mailto:sage [2012/05/20(日) 21:56:40.57 ] >>675 (MAX-MIN)*rand()/RAND_MAX+MIN;
677 名前:デフォルトの名無しさん mailto:sage [2012/05/20(日) 22:01:51.28 ] >>676 0から1までの乱数を生成して、大きさ(MAX-MIN)をかけMINの分を底上げするんですね 助かりましたありがとうございます
678 名前:678 [2012/05/21(月) 01:47:42.52 BE:950591227-2BP(0)] rot13暗号を解読するプログラムでEOFを使わないプログラムが分かりません。
679 名前: ◆QZaw55cn4c mailto:sage [2012/05/21(月) 02:11:52.61 ] >>678 ideone.com/6G1HG
680 名前:678 [2012/05/21(月) 02:20:17.16 BE:678993825-2BP(0)] >>679 getchar使わない文でお願いします。すいません
681 名前: ◆QZaw55cn4c mailto:sage [2012/05/21(月) 02:21:49.50 ] >>680 fgetc(), fputc() は使っていいかい?
682 名前:678 [2012/05/21(月) 02:24:58.37 BE:678993825-2BP(0)] >>681 すいませんが、習い始めで getcharを習い出したばっかりで、 ちなみに自分で作った文だとデバッグエラーが出るんです。 #include<stdio.h> int main(void) { int rot; while(rot >= 'a'&&rot <= 'z') { if('a'<=rot && rot<='m') rot = rot+13; else if('n'<= rot && rot<='z') rot = rot-13; } return 0; } こんな感じです。
683 名前: ◆QZaw55cn4c mailto:sage [2012/05/21(月) 02:33:31.68 ] >>682 >自分で作った文だとデバッグエラーが出るんです。 「デバッグエラー」、というのは具体的にどんな状態になるのかな?なにかメッセージがでるとか。
684 名前:678 [2012/05/21(月) 02:41:48.37 BE:814792526-2BP(0)] Debug Error! Program: C:\Users\名前 \Desktop\ROT13\Debug\ROT13\.exe Module: C:\Users\名前 \Desktop\ROT13\Debug\ROT13.exe File: Run-Time Check Failure #3-The cariable'rot'is being used without being initialized. (Press Retry tu debug the application) っていう表示のウィンドウが出ます。。。。
685 名前:デフォルトの名無しさん mailto:sage [2012/05/21(月) 02:48:58.17 ] int rot=0;
686 名前:デフォルトの名無しさん mailto:sage [2012/05/21(月) 02:49:16.73 ] >>684 hello world の表示は出来た?
687 名前:678 [2012/05/21(月) 02:53:16.56 BE:407396423-2BP(0)] >>685 int rot = 0; だと、終わってしまいます。 >>686 出来ました。 なんでもかんでも出来ないわけではないそうです。
688 名前:デフォルトの名無しさん mailto:sage [2012/05/21(月) 02:56:07.55 ] >>687 そりゃそうだろ >>682 はrotの入出力やってないもん でもエラー出なくなったろ? >>684 のエラーはそういう意味 どこかで入出力文があれば初期化も不要なはずなんだが
689 名前: ◆QZaw55cn4c mailto:sage [2012/05/21(月) 03:01:32.04 ] >>684 それは rot に値がはいっていないよ、ってことですね。 たしかに、>>682 では rot の値がきまっていない。(rot をどう処理するかはかいてあっても。) で rot に値をいれればいいのですが、どんな感じにしますか?getchar() で標準入力から掘り込み、printf() で表示するとかが適当だとおもいますけど。 なにか希望があれば教えてください。 あとプログラムを作成している環境(コンパイラの種類とか)もわかるのなら教えてください。もしかして web でやっているのでしょうか?
690 名前:678 [2012/05/21(月) 03:03:44.46 BE:4888750289-2BP(0)] >>688 #include<stdio.h> int main(void) { int rot; while(rot >= 'a'&&rot <= 'z') { printf("%c\n",rot); if('a'<=rot && rot<='m') rot = rot+13; else if('n'<= rot && rot<='z') rot = rot-13; } return 0; } これでprintfを足したんですが、同じエラー文?が出ました。
691 名前:678 [2012/05/21(月) 03:09:58.26 BE:3327066277-2BP(0)] >>689 希望はないんですが、あまり複雑なモノはまだ習ってないので遠慮したいです。
692 名前:デフォルトの名無しさん mailto:sage [2012/05/21(月) 03:13:10.20 ] なんちゅーか プログラム云々の前にチラシの裏にでも理解出来たと思う部分を書き出してみて 自分の頭ん中をデバッグするところから始めるべき
693 名前:デフォルトの名無しさん mailto:sage [2012/05/21(月) 03:15:07.11 ] >>689 あと任せた 寝る
694 名前:デフォルトの名無しさん mailto:sage [2012/05/21(月) 03:17:06.88 ] >>690 最後に一つだけ 「入出力文」と書いたのは悪かった 「入力文」の方が正しいな エラーの理由はrotを初期化しないでいきなり while(rot >= 'a'&&rot <= 'z') なんてやってるから undefined、つまり「鼻から悪魔が出てきても知りませんよ」という事
695 名前: ◆QZaw55cn4c mailto:sage [2012/05/21(月) 03:20:25.52 ] >>691 ideone.com/0H11v 一文字しかできませんが、手始めにこんなのはどうですか? /* 1 */ と /* 3 */ で入力、/* 2 */ で出力しています。 あと rot13 の処理が「実は」正しくないですね。
696 名前: ◆QZaw55cn4c mailto:sage [2012/05/21(月) 03:21:00.90 ] >>693 日食までがんばりませんか?
697 名前:678 [2012/05/21(月) 03:32:42.36 BE:3259166786-2BP(0)] #include<stdio.h> int main(void) { int rot,loop; loop = 1; scanf("%c\n",&rot); while(loop <=100) { if('a'<=rot && rot<='m') rot = rot+13; else if('n'<= rot && rot<='z') rot = rot-13; scanf("%c\n",&rot); } return 0; } ここまでいったんですが、+13とか-13がされません。。。
698 名前:678 [2012/05/21(月) 03:52:08.79 BE:4277656297-2BP(0)] 一応友達のアドバイスもあって、 プログラムが出来ました。 ありがとうございました。 #include<stdio.h> int main(void) { int rot,loop; loop = 1; while(loop <=100) { scanf("%c",&rot); if('a'<=rot && rot<='m') rot = rot+13; printf("%c",rot+13); if('n'<= rot && rot<='z') rot = rot-13; printf("%c",rot-13); } return 0; }
699 名前: ◆QZaw55cn4c mailto:sage [2012/05/21(月) 03:57:26.90 ] >>697 手が加わったのはいい感じです。 rot13 の処理に問題はありますが、とりあえず >>697 に沿って動くように訂正すると codepad.org/ikiHqIJW scanf("%c\n", &rot) の rot は char rot; でないとうまくうごきません。 int rot; だと'c' を入力したつもりでも、実は場合によっては rot が 'c' にならないことがあるのです。
700 名前: ◆QZaw55cn4c mailto:sage [2012/05/21(月) 03:59:53.20 ] >>698 ありま? でも、それ、うごいているようにみえるのは偶然ですよ、たぶん。 int rot; じゃなくて char rot; じゃないと‥‥‥
701 名前:678 [2012/05/21(月) 04:06:51.43 BE:1357986454-2BP(0)] >>700 そうなんす。 変な文字まで現れて・・・ charでやってみます。
702 名前:デフォルトの名無しさん mailto:sage [2012/05/21(月) 04:15:12.14 ] >>701 >変な文字まで現れて・・・ X printf("%c",rot+13); O printf("%c",rot); X scanf("%c",&rot); O scanf(" %c",&rot);
703 名前:678 [2012/05/21(月) 04:32:59.41 BE:1222188629-2BP(0)] >>702 変な文字は出なくなりました。 あとは+と‐がされなくて 'a'を入力すると'aT'と表示されたり・・・
704 名前:デフォルトの名無しさん mailto:sage [2012/05/21(月) 04:54:51.59 ] >>703 今のソースをそのままideoneに貼れ。