質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

5回答

213閲覧

C言語 ジャンケンゲームのエラー

ringoame_coc

総合スコア16

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2018/10/02 01:50

前提・実現したいこと

ジャンケンゲームを作る
■■な機能を実装中に以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

「32行目」で記述エラーを発見しました。
「identifier」を付け忘れています。

31.32(else printf("\n1.2.3.以外を記述しています。あなたの負けです。");)
を消すとコンパイラに内部エラーが発生しました。
undefined symbol 'main'
と出てきます

該当のソースコード

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int ransuu()
{
int s;//乱数
srand(time(NULL));
s = rand() % 3 + 1;
switch(s){
case 1:
printf("\n\n勝った!\n\n");
break;
default:
printf("\n\n負けた\n\n");
break;
return 0;

int main(void);

int a;//入力 printf("ジャンケン!\n\n"); scanf("%d",a); if(a==1); ransuu(); if(a==2); ransuu(); if(a==3); ransuu(); else printf("\n1.2.3.以外を記述しています。あなたの負けです。"); return 0; }

}

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答5

0

とりあえずif文末尾のセミコロンは余計ですね。
まずはこれを取ってみてください。
if(a==1);if(a==1)

また、main関数の記述もおかしいです。
int main(void);int main(void) {

他にも

  • srand関数の使い方がおかしい
  • 多くのブロックが適切に閉じていない
  • ransuu関数の返り値がint型である必然性が全くない
  • 入力値の違いによってプログラムの動作に変化がない

など、問題だらけです。基礎的な知識を復習してください。

コードの書き方について

teratailには、コードを見やすく表示する機能があります。
質問編集画面を開き、コードを選択した状態で<code>ボタンを押してください。
C

投稿2018/10/02 01:53

編集2018/10/02 01:59
LouiS0616

総合スコア35660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

本来の要望ですが、**「ジャンケンゲームを作れるようになる」**かと思います。

おそらく学校の課題だとおもいますが、まず少し書いたらコンパイルして実行できることを確認しましょう。慣れないうちは、少しずつ書き足しましょう。

エラーが出たら、なぜエラーが出たのか調べましょう。
次に、解決するにはどうすればいいかを調べましょう。

学校によっては、初心者に次のような残念な指導を行うところがあります。

  • 文法や構文を教えるが、エラー解決のノウハウは教えない
  • 課題としてコンパイルできないようなひな形を渡す

書き方がそもそも不安であれば、絵本シリーズでいいので読みましょう。
長くても2日あれば読めるレベルなのでしんどくないです。
いきなり分厚いの買うと、プログラムを組むことなく人生を終えることになりえます。

また、手間でしょうが多少は反復練習も必要です。
Paizaのスキルチェックで、一番簡単なレベルの問題をいくつも解きましょう。
九九の算数できない人が、数学やるのはなかなか難しそうですよね。
そんなん一分で書けてるわ!となったらぼちぼち、三分でデバッグまでできるわとなったら初心者としてはまずまずかと思います。

初心者の人は、今の自分になにが欠けているかを考えてみてください。
また、ないとは思いますが忙しいからと人の課題を少し変えて提出すると、
関係者全員呼び出し(学年丸ごと)などかなり大ごとになることがあるのでやらないよう気を付けてください。

投稿2018/10/02 03:21

編集2018/10/02 03:48
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dice142

2018/10/02 03:54

> Paizaのスキルチェックで、一番簡単なレベルの問題をいくつも解きましょう。 Paizaのスキルチェックは制約が多いので、練習目的であればAOJやtopcoderの方が良い気がします。
退会済みユーザー

退会済みユーザー

2018/10/02 03:57

いいですね!トップページが英語っぽいのですが、日本語のものもありますか?できれば初心者には日本語のものをお勧めしたいです。 ちなみに、数学嫌いじゃない人であればEuler Projectなどもおすすめです。
dice142

2018/10/02 04:01

AOJは右上のJapaneseを選択すれば日本語になります。topcoderは日本語はなかった気が…。 AOJであれば他の解答者のコードを参考にできるので練習向きですね。 Euler Projectも英語サイトだった気がしますが、頭使ういい問題ですね。
退会済みユーザー

退会済みユーザー

2018/10/02 04:07

ありがとうございます!やってみます。
ringoame_coc

2018/10/02 09:02

プログラマーを目指している中学生です。 教えていただいている方はいるものの、ほとんど独学なのでデバックの作法は役に立つのでありがたいです。 初めての参考書として苦しんで覚えるCを現在進行形で使っています。 Cの絵本の購入を検討していたのでとても参考になります。 ありがとうございます。
退会済みユーザー

退会済みユーザー

2018/10/02 09:37

お役に立てたみたいで幸いです。少し慣れたら苦しんでみてもいいかもしせませんw。本を探すときは、キーワード「良書」などでググるといいかなーと。読むときは、1ページずつ読まず、まず目次でどういったことがどの章に書かれているか把握したり、どこを読めばどんなことがわかりそうか考えたり、いま必要なのはどこか、章によってはあとでよむようにするなど、工夫しながら読むと捗るかもしれません。
ringoame_coc

2018/10/04 02:24

苦しんでCを読んでたら必ずいろんな知人に突っ込まれるんですよね、、、笑 ポインタ完全制覇の本を借りてきたら 「長文コード書かないんだからメモリ節約しても意味ないやろが!」 と突っ込まれましたし、いま必要なのはどこかを考えるのは必要ですね、、、 良本と調べた際、Pythonをfor文までやりましたが苦しんでCは別のプログラムを学んだことがある方に向いている、中級者用の本とのことで絵本は初心者向けとのことですし、復習用でアマゾンで400円で買えるので買ってみます。 わざわざ返信までしていただきありがとうございました! 失礼します!!
guest

0

ベストアンサー

#include <stdio.h> #include <stdlib.h> #include <time.h> int ransuu() { int s;//乱数 srand(time(NULL)); s = rand() % 3 + 1; switch(s){ case 1: printf("\n\n勝った!\n\n"); break; default: printf("\n\n負けた\n\n"); break; } return 0; } int main(void){ int a=0;//入力 printf("ジャンケン!\n\n"); scanf("%d",&a); if(a==1) ransuu(); if(a==2) ransuu(); if(a==3) ransuu(); else printf("\n1.2.3.以外を記述しています。あなたの負けです。"); return 0; }

イメージ説明

投稿2018/10/02 01:58

Wenjie

総合スコア29

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

文法上の記述ミスは他の方の指摘が有りますので・・・
関数ransuu()で乱数を発生させ勝ち負けを決定しているようですが、ユーザが入れた数値1〜3との比較はしなくていいですか?・・・また、1〜3の意味(グー/チョキ/パー)はどうなっていますか?

で、まずじゃんけんのルールを復習してみましょう。その上で、どういった機能が必要か考えましょう。

投稿2018/10/02 02:51

cateye

総合スコア6851

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cateye

2018/10/02 02:52

かぶった^^;
ringoame_coc

2018/10/02 08:53

1~3の数値の比較は初心者なのでまだできません。 ZAWAZAWAの方にジャンケンコードを書いていただきありがとうございます。 辞書と睨めっこしながら勉強してみます!
cateye

2018/10/02 10:56

とりあえず動くようにしただけなので、かえって恐縮です^^;
guest

0

構文が色々違うと思います。
void main(void){
if(式){
}else{
}
return 0;
}

のように記述します。
入力 aが勝敗に意味が全くない処理ですけど、これはOKですか?
if(a == 1 || a == 2 || a == 3){
ransuu(a);
}else{
printf("\n1.2.3.以外を記述しています。あなたの負けです。");
}
が良いと思いました。

投稿2018/10/02 02:31

MasaakiIrie

総合スコア1021

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問