- 締切済み
初歩的な計算をプログラムする際、c++とcの違う点
よろしくおねがいします。 c++とcの違いについて、一般的?なことはすでに過去に質問例が見つかりましたが、知りたい内容が書かれてなかったので、質問します。 当方、cの知識は少しある程度で、c++は初めてです。c++自体に興味があるわけではないのですが、読んでいる本がc++で書かれているようなのでc++をやっているといったところです。ところが、c++で書かれていると本の冒頭で宣言しておきながら、その本の中ではプログラミング初心者でも分かるように記述しようとしているらしく、stdio.h や scanf が使われているような状態です。 本はまだ最初の部分までしか進めていませんが、c++で書かれていると宣言されている以上、後の方でおそらくc++特有のコードがでてくるのだろうと予測しており、最初からc++で私自身は練習している状態です。 つまり、本はcとc++が混ざったような感じ?で書かれており、私は始めからc++をやっている(本がcっぽい場合もc++で動くように自分で修正してやっている)のです。 現在、なんとか進めておりますが、壁にぶち当たる頻度が多く、時間のロスが半端ないです。 例えば、標準入力で、scanf を ストリームなるもののcinなる関数に変えた時も、エラーが直せず、入力を促すコマンドライン上での入力の仕方が違う(スペース区切りに変わる)というのを探り当てるのに相当時間がかかりました。 やっている内容、今後やる予定の内容は計算(四則演算やループ、配列など)がほとんどです。その場合、c++とcで表記方法や入力(コマンド)方法、ファイルの取り扱いなどで困るであろう点がありましたら、教えていただきたいのです。 漠然とした質問かもしれませんが、みさなん、よろしくおねがいします。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- Tacosan
- ベストアンサー率23% (3656/15482)
あ, #4 に追加: 念のため「どのようにプログラムを動かしているのか」も書いてください.
- Tacosan
- ベストアンサー率23% (3656/15482)
ここに出ている情報だけからそれに対して答えることは不可能です. 少なくとも ・開発環境 (少なくとも OS やコンパイラの名称とバージョン) ・動かしたプログラム ・与えた入力 ・期待する動作 ・実際の動作 くらいの情報は出してください.
- Tacosan
- ベストアンサー率23% (3656/15482)
ありがちなのは (double を引数にとる) 数学関数で整数を与えて悩む, かなぁ. 「入力(コマンド)方法、ファイルの取り扱いなど」は C と C++ で同じようにもできるし違うようにもできる. プログラムと相談すべし. ちなみに cin は「関数」じゃないからね.
補足
どうもです。 もう少しつき合ってもらいたいのですが、 前にscanf のトラブルをだしましたが、テキストにはscanf("%d", &k[i]);とかかれており、それを含めてテキスト通りに私のc++開発環境で実行してもうまくいかなかったのです。(この場合はscanf("%d%*c", &k[i]);へと変えることでようやくうまく行きました。ですがそれを知るのに相当時間を食い、回り道しました。私の目的はc言語の学習とかではないので、そういう余分な回り道はしたくないのです。) この点はどういうことなのでしょうか? 本の記載は間違っておらず、c++環境でも動く可能性がありますか?そして動かないのはscanfが特定のc++開発環境に依存しているからということでしょうか? それともそうではなく、c++環境だと標準入力が複数続く場合はscanf("%d %d",...表記では駄目で、それぞれに%*cを付けないと動かない仕様になっているのでしょうか? よろしくお願いします。
- chie65536(@chie65535)
- ベストアンサー率44% (8742/19843)
>例えば、標準入力で、scanf を ストリームなるもののcinなる関数に変えた時も、エラーが直せず 「C++は、scanfもcinも使える」のであって「C++だから、scanfをcinに変えないといけない」と言う事はありません。C++であっても、scanfを使いたいなら使って構わないのです。 優秀なプログラマとは「元からある物は有効に使う」と「書き替えなくとも動く物は決して書き替えるな」と言う鉄則を守るプログラマの事を言うのです。 まあ学習の一環として「scanfをcinに置き換えてみる」と言うのは有効な学習方法ですので「まったくの無駄」とは言いませんが。
補足
早速の返答、ありがとうございます。 実はscanfも,動作確認用のprintfも、結局使いました。 ただ、最初は「hellow world」から初めたのですが、ソフト(エディタ&コンパイラ)で新規プロジェクトを始めた時にテンプレがストリーム系の記述になっていたので書き換えるのが面倒だったというのがありました。で、計算に入った時に、まだ慣れてなかったのでテキスト通りにscanf系に変更して試行錯誤してたのですがうまく動かなかったのでまた元にもどしたりしたのです。結局、ストリーム系で動くようになった後、scanf系でも動くようになりました。 鉄則については、勉強になりました。覚えておきます。 あと、私の質問に答えていただける事を期待しています。
- Tacosan
- ベストアンサー率23% (3656/15482)
その本がなんなのかわかりませんが, 少なくとも「stdio.h や scanf を使っているから C++ じゃない」というのが短絡的すぎることは理解してください.
補足
早速の返答どうもありがとうございます。 質問自体にも返答いただけることを期待しています。
補足
返信ありがとうございます。 質問しておいて申し訳ありませんが、人に聞けて、解決しました。 ありがとうございました。