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

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

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

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

Q&A

解決済

1回答

4696閲覧

C言語 「3つの数の整列」の問題について

Takumi0106

総合スコア17

C

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

0グッド

0クリップ

投稿2015/08/26 12:54

最近プログラミングの勉強をはじめた学生です。
現在C言語の勉強しているのですが、AIZUONLINE というサイトの問題の「3つの数の整列」というもので
つまずいています。

問題の内容は

3つの整数を読み込み、それらを値が小さい順に並べて出力するプログラムを作成して下さい。
Input
3つの整数が空白で区切られて与えられます。
Output
小さい順に並べ替えた3つの整数を1行に出力して下さい。整数の間に1つの空白を入れて下さい

というもので、
自分の書いたコードが

C

1 2#include <stdio.h> 3 4int main(void){ 5 6 int a, b, c, d; 7 scanf("%d %d %d", &a, &b, &c); 8 9 if (a > b){ 10 d = a; 11 a = b; 12 b = d; 13 } 14 if (b > c){ 15 d = b; 16 b = c; 17 c = d; 18 } 19 if (a < c){ 20 d = a; 21 a = c; 22 c = d; 23 } 24 25 printf("%d %d %d\n", a, b, c); 26 27 return 0; 28} 29

というものなんですけどこれだとエラーが出て

エラー 1 error C1010: プリコンパイル ヘッダーを検索中に不明な EOF が見つかりました。'#include "stdafx.h"' をソースに追加しましたか?

と表示されるのですがこの文がどの間違いを指摘しているのかがわかりません。
このサイトので回答されている方々なら本当に初歩的なことかもしれませんが教えていただけたらうれしいです。

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

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

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

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

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

argius

2015/08/26 13:00

AOLはやっていませんが、コンパイルエラーはAOL上で起きているのですか?
Takumi0106

2015/08/26 13:05

Visual Stdioのコンソールアプリケーションのプロジェクトで記載のコード書いたところ コンパイルエラーがでました。 AOLのサイトでこのコードを送ったところWrong Answer と表示されました。
guest

回答1

0

ベストアンサー

投稿2015/08/26 13:10

Jake

総合スコア289

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

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

Takumi0106

2015/08/26 13:19

URLありがとうございます。 その通りにしたところ、先ほどのエラーメッセージは消えたのですが エラー 1 error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. と表示されました。scanfの使い方に何か間違いがあるということなのでしょうか? できれば教えて頂けたら有難いです。
cateye

2015/08/26 13:32

エラーメッセージのとおりです。 「scanf()は問題があるのでscanf_s()を使いなさい。 このエラーを出したくない場合は、_CRT_SECURE_NO_WARNINGSを使いなさい」 といっていますが・・・ 以下を参照 http://independence-sys.net/main/?p=735
Takumi0106

2015/08/26 13:49

ありがとうございます。 scanf_sをつかったところエラーはでませんでした。しかしよく見たところ コードの中のアルゴリズムに間違いがあったため求めた結果が出ていなかったようです AOLのサイトのほうではscanf_sを使うとコンパイルエラーになり、scanfになおしてみたら正解ということでした。
raccy

2015/08/26 14:01

AOJではGCCを使っているらしいので、scanf_sは対応していません。 AOJ投稿前の確認はVisualStudioを使わずにGCCを使うことをお勧めします。
Jake

2015/08/26 14:02

[deprecated]というのは、現在のスタンダードからすると古いメソッドで、サポート外の物の事で、製品にしたりするには良くないですが、自分の勉強のためであれば、使ったところで害はないです。(新しい情報にアップデートしていくほうがベターではありますが) こういうった数字のような「想定しやすいデータ」が入ってくる場合は、実際にデータを使って、試しにやってみましょう。 4 10 8という3つの整数の場合 if1 (4>10) = false if2 (10>8) = true if3 (4<8) = true という感じの結果になりますので、エラーの出る原因がわかりますね?
Takumi0106

2015/08/26 22:34

皆さんコメントありがとうございます。無事理解できました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問