掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板2

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.25217

switchとcaseを使ったプログラムのチェック(初心者)
投稿者---雪だるま(2006/01/11 20:10:21)


初めて書き込みます、雪だるまです。
学校の課題です。色々書き直してみているのですが、どうしてもエラーになります。使用しているコンパイラはVisual studio 2005で、OSはXPです。よろしければ、ご教授ください。

問題
キーボードから演算子(+-*/=)を入力し、入力した演算子に対応する説明文を表示する。処理は'$’が入力されるまで繰り返し、'$'が入力された場合は、「処理を終了します。」と表示し、処理を終了する。
+-*/= 以外の演算子が入力された場合は「その演算子は登録されていませんと表示する。

私が書いたもの

#include <stdio.h>

int main(void)
{
 char kigo;
 printf("演算子を入力-->");
 scanf("%c",&kigo);

  if(kigo=!'$')
  {
       switch(kigo);{
          case'+':
            printf("二つの数の加算を行う演算子です。\n");
            break;
          case'-':
            printf("二つの数の減算を行う演算子です。\n");
            break;
          case'*':
            printf("二つの数の乗算を行う演算子です。\n");
            break;
          case'/':
            printf("二つの数の除算を行う演算子です。\n");
            break;
          case'=':
            printf("代入演算子:右から左へ値を代入します。\n");
            break;
          default:
            printf("その演算子は登録されていません。\n");
          }
   else{
        printf("処理を終了します。\n");
       }
   }
 return 0;
}


エラー文
test1-2.c
test1-2.c(7) : warning C4996: 'scanf' was declared deprecated
C:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE\stdio.h(277) : see
declaration of 'scanf'
test1-2.c(11) : error C3872: '0x3000': this character is not allowed in an ident
ifier
test1-2.c(12) : error C2046: illegal case
test1-2.c(14) : error C2043: illegal break
test1-2.c(15) : error C2046: illegal case
test1-2.c(17) : error C2043: illegal break
test1-2.c(18) : error C2046: illegal case
test1-2.c(20) : error C2043: illegal break
test1-2.c(21) : error C2046: illegal case
test1-2.c(23) : error C2043: illegal break
test1-2.c(24) : error C2046: illegal case
test1-2.c(26) : error C2043: illegal break
test1-2.c(27) : error C2047: illegal default
test1-2.c(30) : error C2181: illegal else without matching if



この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:switchとcaseを使ったプログラムのチェック(初心者) 25218 たいちう 2006/01/11 20:19:51
<子記事> Re:switchとcaseを使ったプログラムのチェック(初心者) 25219 とろり 2006/01/11 20:26:25


No.25218

Re:switchとcaseを使ったプログラムのチェック(初心者)
投稿者---たいちう(2006/01/11 20:19:51)


× switch(kigo);{
○ switch(kigo) {

他にもあるかもしれないけど。


この投稿にコメントする

削除パスワード

No.25220

Re:switchとcaseを使ったプログラムのチェック(初心者)
投稿者---たいちう(2006/01/11 20:27:13)


もっとあった。

× if(kigo=!'$')
○ if(kigo!='$')

switchの直前に全角スペースがある。

× else{
○ }else{


この投稿にコメントする

削除パスワード

No.25223

Re:switchとcaseを使ったプログラムのチェック(初心者)
投稿者---雪だるま(2006/01/11 20:41:00)


>× if(kigo=!'$')
>○ if(kigo!='$')
ああ!勘違いしてました。


>switchの直前に全角スペースがある。
まったく気づきませんでした。次からはしっかりチェックします。

>× else{
>○ }else{
確かに良く見ると対応がおかしいですね。

ありがとうございました!一応、コンパイルできました。やはり一度深みにはまると見えるはずのものが見えなくなりますね。次回からのチェックの参考にします。




この投稿にコメントする

削除パスワード

No.25222

Re:switchとcaseを使ったプログラムのチェック(初心者)
投稿者---雪だるま(2006/01/11 20:30:26)


>× switch(kigo);{
>○ switch(kigo) {
>
>他にもあるかもしれないけど。

さっそくのレスありがとうございます。
始めは私も上記のようにしていたのですが、エラー文に

test1-2.c(11) : error C2143: syntax error : missing ';' before '{'

なんてものが出まして、;を入れてみたら消えたので良かったのかなあなんて思ってました。
やっぱり、;は必要ないですよね。なんで、こんなエラー文がでるのかさっぱり分かりません・・・・・(泣)。というより、このエラー文が何を意味するのかさえ良く分かってませんが。


この投稿にコメントする

削除パスワード

No.25231

Re:switchとcaseを使ったプログラムのチェック(初心者)
投稿者---RAPT(2006/01/11 21:56:17)


>始めは私も上記のようにしていたのですが、エラー文に
>
>test1-2.c(11) : error C2143: syntax error : missing ';' before '{'
>
>なんてものが出まして、;を入れてみたら消えたので良かったのかなあなんて思ってました。
>やっぱり、;は必要ないですよね。
>なんで、こんなエラー文がでるのかさっぱり分かりません・・・・・(泣)。
>というより、このエラー文が何を意味するのかさえ良く分かってませんが。

そのままです。'{'の前に';'がない。
もっとも、コンパイラの構文チェックは、内容を吟味しないので、
エラーメッセージを鵜呑みにしても解決しない事が多いです。

大抵の場合、その場所よりも前の部分で構文ミスをしています。
この場合は、if文条件式の =! によるものだったのかもしれません。



この投稿にコメントする

削除パスワード

No.25238

Re:switchとcaseを使ったプログラムのチェック(初心者)
投稿者---nop(2006/01/12 09:00:39)


> この場合は、if文条件式の =! によるものだったのかもしれません。

「=」は代入演算子、「!」は単項の否定演算子なので、

>> if(kigo=!'$')

はコンパイルエラーにはなりません。
恐らく別の要因でしょう。

# VC++6.0 にてコンパイル済み。


この投稿にコメントする

削除パスワード

No.25219

Re:switchとcaseを使ったプログラムのチェック(初心者)
投稿者---とろり(2006/01/11 20:26:25)


こんにちは。

とりあえず気が付いたところだけ。

1."switch(xxx)"の後ろ不用な";"がある。
2.if else の{}の対応がおかしい。
3.繰返し制御がされていない。


この投稿にコメントする

削除パスワード

No.25224

Re:switchとcaseを使ったプログラムのチェック(初心者)
投稿者---雪だるま(2006/01/11 20:42:45)


>こんにちは。
>
>とりあえず気が付いたところだけ。
>
>1."switch(xxx)"の後ろ不用な";"がある。
>2.if else の{}の対応がおかしい。
>3.繰返し制御がされていない。

チェックありがとうございます。指摘された部分を見直したら、とりあえずコンパイルはできました。
3の繰り返し制御、確かにされてませんでした・・・・・・。見直して、書き換えたいと思います。
またの書き込みの際にはよろしくお願いします。


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧