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

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

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

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

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

3回答

25379閲覧

【C言語の質問です】10から0までカウントダウンしていくプログラムについて

退会済みユーザー

退会済みユーザー

総合スコア0

C

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

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2016/02/25 11:50

*たくさんの方よりご指摘をいただけてとてもありたいです。
引き続き、よろしくお願い致します。

C言語を勉強している初心者のものです。

今課題をいただき、その作成をしております。
先日提出(全18問)したのですが、大部分が間違っているので、
再度問題を見なおした上で提出してくれと言われてしまいました。

今回は課題なので、間違っている点を教えていただけませんでした。
個人的には、どの辺りが間違っているのかわからないため、
客観的な視点が欲しく、今回ご相談させていただきました。

18問の中の1つですが、
この問題は①、②どちらの解釈が正しいのでしょうか。
*回答2は私が考えたものではありません。
ネットに記載あったものを抜粋させていただきました。

個人的には、初心者向けの課題なので、
回答は①になると思ってはいたのですが・・・

皆様のお考えをお聞かせいただきたいです。

【問題】
10から0までカウントダウンしていくプログラムを作成せよ。

【回答1】

#include <stdio.h> int main(void) { int i; for(i = 10 ; i >= 0 ;--i) { printf("%d\n ",i); } return 0; }

【回答2】

#include <stdio.h> #include <dos.h> int main(void) { int COUNTDOWN = 10; /* カウントダウンタイム */ while(COUNTDOWN) { printf("\r%2.2d", COUNTDOWN); fflush(stdout); sleep( 1 ); /* コンパイラ依存関数 */ COUNTDOWN--; } puts("\r 0"); return 0; }

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

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

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

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

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

guest

回答3

0

回答1は10から0まで即表示されているのでカウントダウンとしては正しくないと思います。
1秒待機してから表示するなどの処理が必要になると思います。

投稿2016/02/25 12:01

kabuto_0170

総合スコア28

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

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

退会済みユーザー

退会済みユーザー

2016/02/25 12:03

ご回答ありがとうございます。 たしかに仰る通り、カウントダウンの意味を考えると回答1ではありませんでした・・・ ご指摘ありがとうございます。 回答2を研究します。
Chironian

2016/02/25 13:24

tomo3さん。 時間計測が必要になるのでしたら、お使いのOSを開示されるとスムーズですよ。 時間計測関係は、OS毎に対処が異なる場合が多いですので。
退会済みユーザー

退会済みユーザー

2016/02/25 14:05

Chironianさん いつもご回答ありがとうございます。 そうなんですね! ありがとうございます。初めて知りました。 OSは、Windows7を使っているのですが、 今回のカウントダウンは、この時間計測の方法で作成したほうがいいのでしょうか。
Chironian

2016/02/25 15:02

ああ、回答2はdos.hなんてインクルードしてますね!どこから拾ってきたのでしょうか? たぶん、MS-DOS用のヘッダと思いますが、MS-DOSは1995年頃以降急激に使われなくなりました。 Windows7でしたら、Sleep(大文字で始まる)が使えます。 https://msdn.microsoft.com/ja-jp/library/cc429358.aspx
退会済みユーザー

退会済みユーザー

2016/02/26 04:49

ご回答ありがとうございます! これはyahooの掲示板だったと思います。 ネットで検索したらありました。 もう使われていないのですね・・ ご指摘ありがとうございました。 またsleep教えていただきありがとうございます!! 早速URL拝見させていただきながら直してみます。
退会済みユーザー

退会済みユーザー

2016/02/26 05:06

sleep関数ご教示いただき、ありがとうございました。 sleep関数を使いたかったのですが、 調べても何をインクルードすればいいのかわからなかったので、 Windows特有になっちゃいますが、Sleep関数にて作りました。 一応カウントダウンはするのですが、 おそらくWindowsでしか起動しないのが、懸念点です。。 #include <stdio.h> #include <windows.h> int main(void) { int i; for (i=10; i>-1; --i) { Sleep(1000); printf("%d\n",i); } return 0; }
WoodenHamlet

2016/02/26 05:15

volatile 変数を加算とかの単純な処理をこれでもかってくらいLOOPでぶん回せばウェイトはとれるんじゃない? ※volatile : コンパイル時に最適化させない(冗長なコードだからと言って削除させない)型指定
退会済みユーザー

退会済みユーザー

2016/02/26 06:34

WoodenHamletさん ご回答ありがとうございます。 volatile変数ちょっと調べてみます!! ありがとうございました!
guest

0

何秒かは知らないけどとりあえず人間が見れるくらいのウェイト取りたいって場合

C

1#include <stdio.h> 2 3//******************************************************************************************** 4/** 5 * @brief 適当に休む関数. 6 * @details 何秒休んでるかはクロックとかなんかいろいろ計算してよ(投げやり) 7 */ 8//******************************************************************************************** 9void OverSlept(void) 10{ 11 unsigned long int i; 12 while(i < 0xFFFFFFF) // 適当な数字:unsigned longのバイト数を超えないよう注意 13 { 14 i++; 15 } 16} 17 18int main(void) 19{ 20 int count = 10; /* カウントダウンタイム */ 21 while(count) 22 { 23 printf("\r%2.2d", count); 24 OverSlept(); 25 count--; 26 } 27 puts("\r 0"); 28 return 0; 29}

投稿2016/02/26 14:58

WoodenHamlet

総合スコア306

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

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

退会済みユーザー

退会済みユーザー

2016/02/28 01:22

ご回答ありがとうございます。 OverSlept関数は初めて知りましたので、早速調べてみます。 ありがとうございました!!
guest

0

カウントダウンと言っても1秒ごととか厳密に定義されていないので回答1も間違いとまでは言えないと思います。
また、回答2にある dos.h は環境依存のインクルードファイルではないでしょうか。
汎用性という意味では回答1の方がいいと思います。

投稿2016/02/25 13:39

yoshi777

総合スコア674

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

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

退会済みユーザー

退会済みユーザー

2016/02/25 14:07 編集

ご回答ありがとうございます。 おっしゃるとおり、OS等に依存するものだったみたいです・・・ ご指摘ありがとうございます。 修正しましたら再度ご相談させてください。
k1000

2016/02/26 07:49

そういえば「東京オリンピック開会まであと○日!」などというのも「カウントダウン」ですしね。“10日かけて終了するプログラム”をしれっと提出して笑ってくれる先生だと良いのですが、どうもそんなではなさそうだなあ。 ……と、ひとさまの回答欄で雑談みたいなコメント失礼しました。
退会済みユーザー

退会済みユーザー

2016/02/26 07:56

k1000さん たしかにそれで笑ってくれる人ならもっとヒントをくれたかもしれません笑
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問