switch文について。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
skcl
記事: 34
登録日時: 7年前

switch文について。

#1

投稿記事 by skcl » 7年前

コード:

#include <stdio.h>

int main() {
  int a = 3;
  int b = 3;
  switch (a) {
  case 0:
    printf("aはゼロです\n");
    break;
  case 1:
    printf("aは1です\n");
    break;
  case 2:
    printf("aは2です\n");
  switch (b) {
    case 0:
      printf("bは0です\n");
    case 1:
      printf("bは1です\n");
    case 2:
      printf("bは2です\n");
    default:
      printf("aもbもゼロでも1でも2でもありません\n");

      break;
    }
    return 0;
  }
}
この構文成り立たないのは、なぜですかね?

アバター
purin52002
記事: 235
登録日時: 7年前
連絡を取る:

Re: switch文について。

#2

投稿記事 by purin52002 » 7年前

switch(a)のdefaultを忘れてるんじゃないでしょうか?
c++初心者を自負しています。
質問者さんには今後私にプログラミングを教えてくれるようにやさしく丁寧に教えるつもりです。ぎぶあんどていく^p^
回答者さんには精一杯感謝します。ぎぶおんりー^p^

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: switch文について。

#3

投稿記事 by みけCAT » 7年前

skcl さんが書きました:この構文成り立たないのは、なぜですかね?
コンパイルは通りました。
「この構文成り立たない」というのはどういう意味ですか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

skcl
記事: 34
登録日時: 7年前

Re: switch文について。

#4

投稿記事 by skcl » 7年前

コード:

#include <stdio.h>

int main() {
  int a = 1;
  int b = 0;
switch (a) {
  case 0:
    printf("aはゼロです\n");
    break;
  case 1:
    printf("aは1です\n");
    break;
  case 2:
    printf("aは2です\n");
  default:
      printf("aはゼロでも1でも2でもありません\n");
  }
switch (b) {
  case 0:
    printf("bは0です\n");
  case 1:
    printf("bは1です\n");
  case 2:
    printf("bは2です\n");
  default:
    printf("bはゼロでも1でも2でもありません\n");
    break;
  }
  return 0;
}
にしたら、デバッグなしで開始できたのですが、b=0b=1b=2bは0でも1でも2でもありませんとすべてでてしまいます。

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: switch文について。

#5

投稿記事 by みけCAT » 7年前

skcl さんが書きました:b=0b=1b=2bは0でも1でも2でもありませんとすべてでてしまいます。
b=0なのでswitch(b)からcase 0:に飛び、break;まで連続して実行されているからですね。
期待する出力は何ですか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

skcl
記事: 34
登録日時: 7年前

Re: switch文について。

#6

投稿記事 by skcl » 7年前

b=0と入れてたのでbはゼロですとなってほしいです。

skcl
記事: 34
登録日時: 7年前

Re: switch文について。

#7

投稿記事 by skcl » 7年前

色々なプログラムどんどん質問しても良いでしょうか。書籍だけだとわからないですね。

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: switch文について。

#8

投稿記事 by みけCAT » 7年前

skcl さんが書きました:b=0と入れてたのでbはゼロですとなってほしいです。
aに関するコード

コード:

switch (a) {
  case 0:
    printf("aはゼロです\n");
    break;
  case 1:
    printf("aは1です\n");
    break;
  case 2:
    printf("aは2です\n");
  default:
      printf("aはゼロでも1でも2でもありません\n");
  }
はいい感じなので、コピペして変数aと文字列の中のaをbに置換するといいでしょう。

※「いい感じ」であって、「いい」ではありません。なぜなら、defaultの前にbreak;が無いため、switchに渡す値によっては不適切な出力が出る可能性があるからです。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

skcl
記事: 34
登録日時: 7年前

Re: switch文について。

#9

投稿記事 by skcl » 7年前

コード:

#include <stdio.h>

int main() {
  int a = 1;
  int b = 2;
  switch (a) {
  case 0:
    printf("aはゼロです\n");
    break;
  case 1:
    printf("aは1です\n");
    break;
  case 2:
    printf("aは2です\n");
    break;
  default:
    printf("aはゼロでも1でも2でもありません\n");
    break;
  }
  switch (b) {
  case 0:
    printf("bは0です\n");
    break;
  case 1:
    printf("bは1です\n");
    break;
  case 2:
    printf("bは2です\n");
    break;
  default:
    printf("bはゼロでも1でも2でもありません\n");
    break;
  }
  return 0;
}
正常に動きました。眠いので明日にしましょう。

アバター
purin52002
記事: 235
登録日時: 7年前
連絡を取る:

Re: switch文について。

#10

投稿記事 by purin52002 » 7年前

skcl さんが書きました: 色々なプログラムどんどん質問しても良いでしょうか。書籍だけだとわからないですね。
質問掲示板なのですからどんどん質問していいと思います。
ただ、私は
  1. 自分で調べたけどわからなかった
  2. 掲示板の過去ログを検索したけど似たようなトピックがなかった
このような場合にトピックを立てるようにしています。

あと、質問の内容をわかりやすく伝えるように努力してます。

例えば

コード:

int main()
{
int x=1
int y=2
int z=x+y
}
エラーが出ます。助けてください。

ではなく、

コード:

int main()
{
int x=1
int y=2
int z=x+y
}
足し算をするプログラムを作りたいのですが、
3,4,5行目にセミコロンが抜けている、というエラーが出ました。
どこにエラーがあるのでしょうか?また、どのようにすればエラーをなおせるでしょうか?

のほうが、回答する側としては答えやすいのかな、と思っています。
c++初心者を自負しています。
質問者さんには今後私にプログラミングを教えてくれるようにやさしく丁寧に教えるつもりです。ぎぶあんどていく^p^
回答者さんには精一杯感謝します。ぎぶおんりー^p^

skcl
記事: 34
登録日時: 7年前

Re: switch文について。

#11

投稿記事 by skcl » 7年前

正常に動作したからこのトピックはもう終わりでいいですよね?

skcl
記事: 34
登録日時: 7年前

Re: switch文について。

#12

投稿記事 by skcl » 7年前

セミコロン等ピリオド等スラッシュ等細かい入力ミスだけしか間違えた等の域まで達していない場合は何処で聞いたらいいのですかね?

skcl
記事: 34
登録日時: 7年前

Re: switch文について。

#13

投稿記事 by skcl » 7年前

エラーメッセージの状況を細かく提示すればいいんですかね?

skcl
記事: 34
登録日時: 7年前

Re: switch文について。

#14

投稿記事 by skcl » 7年前

所用があるので昼頃まで席をはずしますね。

アバター
purin52002
記事: 235
登録日時: 7年前
連絡を取る:

Re: switch文について。

#15

投稿記事 by purin52002 » 7年前

正常に動作したからこのトピックはもう終わりでいいですよね?
skclさんの疑問が解けたなら解決でいいのではないでしょうか?
セミコロン等ピリオド等スラッシュ等細かい入力ミスだけしか間違えた等の域まで達していない場合は何処で聞いたらいいのですかね?
そこらへんはぜひ自分で頑張ってほしいですね^^;
どうしてもわからない場合はここで聞いてもいいと思いますが、コードが長い場合はミスを探すのがめんどくさいですからね、、、^^;
エラーメッセージの状況を細かく提示すればいいんですかね?
エラーメッセージをコピペしてくれると、回答者さんもエラーが見つけやすいと思います。
c++初心者を自負しています。
質問者さんには今後私にプログラミングを教えてくれるようにやさしく丁寧に教えるつもりです。ぎぶあんどていく^p^
回答者さんには精一杯感謝します。ぎぶおんりー^p^

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: switch文について。

#16

投稿記事 by みけCAT » 7年前

skcl さんが書きました:エラーメッセージの状況を細かく提示すればいいんですかね?
エラーメッセージは提示していただく方が手間が省けますが、この程度のコードであれば提示されたコードをコンパイラにかければ得られます。
それよりも、skclさんしか知らない情報である「期待する動作(仕様・出力)」を書いてください。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: switch文について。

#17

投稿記事 by みけCAT » 7年前

フォーラムルールより転載

「うまくいきません」という質問は大抵回答に困ります。

  1. 自分は今何がしたくて

  2. どう取り組んで(作ったプログラムはどれで

  3. どのようなエラーやトラブルで困っていて

  4. 自分は何が解らないのか、知りたいのか

  5. 今のCの知識はどの程度なのか

この5点をしっかりと明記して下さい。

環境に依存する場合やライブラリを使っているときは

使っているOS名・コンパイラ名・ライブラリ名も明記しましょう。

コンパイルエラーの質問時は必ず最低限のエラーメッセージも書きましょう
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

skcl
記事: 34
登録日時: 7年前

Re: switch文について。

#18

投稿記事 by skcl » 7年前

もっと自分だけで勉強したり書籍のサポート受付に質問したりして(本当は講習受けた方が良いんですかね。でもお金かかるかな)勉強したいと思います。でもこの掲示板で何らかのきっかけがうまれればと思いました。何処かの会社に入ったり経験がつめればとも思いました。まずは自分だけで考えてみたいと思います。またよろしくお願いします。

返信

“C言語何でも質問掲示板” へ戻る