ページ 11

switch文について。

Posted: 2017年3月03日(金) 17:34
by skcl

コード:

#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;
  }
}
この構文成り立たないのは、なぜですかね?

Re: switch文について。

Posted: 2017年3月03日(金) 17:41
by purin52002
switch(a)のdefaultを忘れてるんじゃないでしょうか?

Re: switch文について。

Posted: 2017年3月03日(金) 17:46
by みけCAT
skcl さんが書きました:この構文成り立たないのは、なぜですかね?
コンパイルは通りました。
「この構文成り立たない」というのはどういう意味ですか?

Re: switch文について。

Posted: 2017年3月03日(金) 18:43
by skcl

コード:

#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でもありませんとすべてでてしまいます。

Re: switch文について。

Posted: 2017年3月03日(金) 19:23
by みけCAT
skcl さんが書きました:b=0b=1b=2bは0でも1でも2でもありませんとすべてでてしまいます。
b=0なのでswitch(b)からcase 0:に飛び、break;まで連続して実行されているからですね。
期待する出力は何ですか?

Re: switch文について。

Posted: 2017年3月03日(金) 19:28
by skcl
b=0と入れてたのでbはゼロですとなってほしいです。

Re: switch文について。

Posted: 2017年3月03日(金) 19:29
by skcl
色々なプログラムどんどん質問しても良いでしょうか。書籍だけだとわからないですね。

Re: switch文について。

Posted: 2017年3月03日(金) 20:53
by みけCAT
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に渡す値によっては不適切な出力が出る可能性があるからです。

Re: switch文について。

Posted: 2017年3月03日(金) 22:59
by skcl

コード:

#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;
}
正常に動きました。眠いので明日にしましょう。

Re: switch文について。

Posted: 2017年3月03日(金) 23:06
by purin52002
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行目にセミコロンが抜けている、というエラーが出ました。
どこにエラーがあるのでしょうか?また、どのようにすればエラーをなおせるでしょうか?

のほうが、回答する側としては答えやすいのかな、と思っています。

Re: switch文について。

Posted: 2017年3月04日(土) 04:52
by skcl
正常に動作したからこのトピックはもう終わりでいいですよね?

Re: switch文について。

Posted: 2017年3月04日(土) 04:57
by skcl
セミコロン等ピリオド等スラッシュ等細かい入力ミスだけしか間違えた等の域まで達していない場合は何処で聞いたらいいのですかね?

Re: switch文について。

Posted: 2017年3月04日(土) 05:40
by skcl
エラーメッセージの状況を細かく提示すればいいんですかね?

Re: switch文について。

Posted: 2017年3月04日(土) 06:08
by skcl
所用があるので昼頃まで席をはずしますね。

Re: switch文について。

Posted: 2017年3月04日(土) 09:41
by purin52002
正常に動作したからこのトピックはもう終わりでいいですよね?
skclさんの疑問が解けたなら解決でいいのではないでしょうか?
セミコロン等ピリオド等スラッシュ等細かい入力ミスだけしか間違えた等の域まで達していない場合は何処で聞いたらいいのですかね?
そこらへんはぜひ自分で頑張ってほしいですね^^;
どうしてもわからない場合はここで聞いてもいいと思いますが、コードが長い場合はミスを探すのがめんどくさいですからね、、、^^;
エラーメッセージの状況を細かく提示すればいいんですかね?
エラーメッセージをコピペしてくれると、回答者さんもエラーが見つけやすいと思います。

Re: switch文について。

Posted: 2017年3月04日(土) 11:14
by みけCAT
skcl さんが書きました:エラーメッセージの状況を細かく提示すればいいんですかね?
エラーメッセージは提示していただく方が手間が省けますが、この程度のコードであれば提示されたコードをコンパイラにかければ得られます。
それよりも、skclさんしか知らない情報である「期待する動作(仕様・出力)」を書いてください。

Re: switch文について。

Posted: 2017年3月04日(土) 11:37
by みけCAT
フォーラムルールより転載

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

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

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

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

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

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

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

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

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

コンパイルエラーの質問時は必ず最低限のエラーメッセージも書きましょう

Re: switch文について。

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