- ベストアンサー
C++初心者の投稿で行き詰まった問題とは
- C++初心者が行き詰まっている問題について投稿しました。どこが間違っているのかご指摘いただきたいです。
- この投稿では、C++初心者が作ろうとしているプログラムの内容について説明しています。
- また、所有しているカードや目標値、現在の数値についても述べています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>switch(rand() % KindsOfCards) > { ... KindOfCardsは4です。 整数を4で割ったときの余りが取り得る値は何でしょう? > return new Square; > return new Half; > return new Reverse; > return new Plus; これは > Cards* c = SetCard(); で呼び出された時の戻り値となっているけど、使い終ったときにdeleteされていません。 C/C++では、malloc,calloc/newで確保したメモリはfree/deleteで明示的に解放する必要があります。 他の言語(JavaとかC#とか)のように、使われなくなったら自動で解放、ということはありません。 > Now[i+1] = Now[i]*Now[i]; ... この時点でNowは未定義。C/C++は宣言してない変数等は使えません。 また、下の方にある > int Now; のつもりなら ・変数の有効範囲ではないので、*::Executeメソッド内から使うことはできない。 ・int型の変数に[]は使えない。 おそらく、数学での漸化式での添字のつもりなのだろうけど ・途中の過程を残す意味なら、格納する「箱」としては配列やそれに類するもの(std::vector等)にする必要がある。 ・単に最終的な値だけ使う場合は、代入式がそのまま漸化式の意味になる。 そっから下はまったく何がしたいのかわかりせん。 誠に失礼な言いかたになりますが、このような応用問題を解くレベルではありません。 まずは、基礎をしっかり身に付けてください。 そして、#1さんの言うように、しっかりと設計してからコーディングしてください。 このよくわからないプログラムを動くように修正するより、1から作りなおした方が早いと思います。 いきなりコーディングして動作できるのは熟練者だけです。 その熟練者もいきなりやっているように見えて、実際には頭の中でちゃんと設計してからやってます。
その他の回答 (1)
- Tacosan
- ベストアンサー率23% (3656/15482)
間違っているところはいくつかあるけど, 最大のものはおそらく「どのように問題を解けばいいか考えずに, とにかく書いていけばなんとかなると思っているように見える」こと. 「行き詰まった」というならいろいろと考えたはずだよね. 何をどう考え, どこに問題があると感じたのか書けますか?
補足
自分は正直swtichの関係のところや、executeのところがよくわかっていません。 またCards* SetCardsのところも以前作ったファイルを参考にして作っていたので、正直理解できませんでした。これに関してはどう調べたらいいのかもわからず困っていました。 よろしければ間違っているところをご指摘いただけないでしょうか?