• ベストアンサー

時間内処理のCプログラム

今、LSIC86試食版でプログラムの練習をしています。 時間内処理についてですが、例えば、5秒間HELLOという文字を出力して、5秒後ENDを表示する といったプログラムの作り方をご存知の方いらっしゃらないでしょうか? 5回表示すると言うプログラムでしたらできますが、時間内処理の組み方がわからなくて困っています。 LSIC86番のコンパイラで実行したいので、教えてください。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • akr
  • ベストアンサー率18% (32/173)
回答No.3

下記の宣言は何のために書きましたか。 time_t timer; while文の条件にはなっていますが、初期化も何も行なっていませんよね。 これでは、while文が正常には動かないですよね。 変数の使い方とか、そういったc言語の基本的な部分は理解されてますか? この場合、初期化されていないのでtimer変数は不定値となります。 c言語の条件式は、0以外は真とみなしますから、確率的にはwhileのループに入り永久ループ入りです。 元々の質問文を見る限り、時間内処理の組み方がわかってないとあるのですが、それ以前にc言語のことを理解されてないように思われますが如何ですか。 書いていただいた「プログラム内容」は、解らないところを省略して書いただけで、言語自体は理解しているのってことでしたら御免なさい。 それと、timer_tの宣言まで書かれているのであれば、あとは必要な関数を検索するのは非常に容易いと思います。 timer_tを検索しただけで、色々なサンプルプログラムが出てきます。 それらを参考にして、設計をすれば、適切なのはwhie文なのかif else文なのかfor文なのかは決まってくると思います。 あまり親切とはいえない回答でしたが、これくらいの助言でなんとかなると信じてます。

その他の回答 (2)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

「timerの関数」ってなに? timer の初期値はいくつですか? プログラム中, いつ timer の値を変えていますか?

  • akr
  • ベストアンサー率18% (32/173)
回答No.1

学問・教育のカテゴリーで質問されたってことは、これから勉強してくって意味ですよね。 やり方なんて何通りもありますから、まずあなたがやろうとしている方法を書いてみてください。 そこで、何に困っているか、具体的に書いてみてください。

bonborisan22
質問者

補足

早速の回答ありがとうございます。 はい、これから、勉強していきたいと思ってます。 プログラム内容は、 #include <stdio.h> #include <time.h> int main(void) { time_t timer; while(timer<5) { printf("hello\n"); } return(0); } という内容で、5秒間helloという文字を表示させたいと考えております。 timerの関数は、時間をカウントしてくれるものだと思っていたのですが、 無限ループになり、5秒間表示にはなりませんでした。 whileで条件の間ループさせる方法がいいのか、if_elseなのか、for分がベストなのか よくわかりません。 よろしけば、最適な方法を教えていただければ助かります。 最終的には、CPUのLEDをつけたり消したり、点滅させたいのですが、まずは初歩的な所 から進んでいきたいです。

関連するQ&A

  • 処理時間の計測中に、任意の時間が経過してしまったら、警告表示を行いたいですが、方法が分からないでいます

    C++で、 ある処理の実行に要する時間の計測を行う ソースを書いていたのですが、 時間の計測を開始してから、 3秒以上が経過してしまった場合にのみ、 処理の進行状況に関わらず、 「3秒経過済み」と表示してあげたいと思っていましたが、 時間の計測を、 「difftime」などで表示する方法は分かったものの、 処理の実行中に、3秒以上経過したら、 取り合えず、「3秒経過済み」と表示させる方法が 分からないでいます。 何かアドバイスいただけるとありがたいです。 宜しくお願い致します。 ====================== time_t start, end; time( &start ); //計測開始 //処理が実行される //処理時間の計測中に「最初の3秒が経過してしまった場合」にのみ「3秒経過済み」と表示してあげたい time( &end );//計測終了 ======================

  • 情報処理の問題ですが

    情報処理の問題ですがどなたか解き方を教えて頂けますでしょうか? 宜しくお願い致します。 問題 8000万個の命令を実行するプログラムを60MIPSで実行した場合に 予想される処理時間は何秒か(小数点第3位を四捨五入する) ここで プロセッサの使用率は75%としてオペレーティングシステムのオーバーヘッドは考えないものとする。なお、次の計算式を参考にするとよい (1)1秒間に実行できる命令数=MIPS値×使用率 (2)プログラム処理時間=プログラム命令数/1秒間に実行できる命令数 (3)MIPS値=1秒間に実行できる命令数を百万の単位で示したもの

  • 教えてください。

    今はXPを使っているのですが、C言語をやりたいと思います。そこで、コンパイラするためのソフトで、『なるぞ☆情報処理技術者』とゆうサイトにあるLSIC-86 ver 3.30試食版(コンパイラ)とCPad for LSI C-86(エディタ)を入れようと思うのですが、CPad for LSI C-86の設定をする前にLSICを必ずインストールしてから行ってください。と書いてあるのですが、LSICのインストールの仕方とか説明が書いてないのでやり方がわかりません!分かる方、もしくは説明が載っているサイトを知っている方がいましたら、是非教えてください☆よろしくお願いします!!

  • プログラムの処理速度について

    プログラムを拡張してみたですが、実行してみると処理は5秒以上かかります。あまり望ましくない-.-;;。どこの部分が(例えばどの関数)時間を食うのか?どうやって調べますか? ファイル処理や計算処理をやっていて、ファイル処理時間を抑えるため一応二分探索やってますが。。。それでもまだ時間かかるんです。。。ちなみにネストのデータ構造は結構処理に影響でるんでしょうか? よろしくお願いします。

  • C言語でのプログラムの作り方

    はじめまして。C言語初心者の中学一年生です。 C言語でプログラムを作ろうと思ったのですが、やり方がわかりません。 ”hello”と表示するプログラムの作り方を教えてください。 使用しているコンパイラは"Visual C++ 2010"です。パソコンはWindows xpです。 中学生でも分かるように教えてください。 エディエタ、やソースプログラムなどの用語についても教えてくださると嬉しいです。

  • C言語のプログラムについて(LEDの点灯)

    C言語初心者です. LEDを以下のように点灯させるプログラムをC言語でつくりたいのですが,わからなくて困っており,質問させていただきました. 「LEDを1秒間点灯させ,0.5秒間消灯させ,また1秒間点灯させ,次は0.6秒間消灯させるというように消灯時間を0.1秒おきに増やしていき,消灯時間を1.5秒間まで増やした後,今度は0.1秒おきに消灯時間を減らしていき,消灯時間を0.5秒間まで減らし,これを繰り返す.」(分かりづらくてすみません…) というようなプログラムはどのようにつくればいいでしょうか? ちなみに1秒おきに点灯,消灯を繰り返すプログラムは,メイン関数を void main() { while(1){ LED1_ON(); delay_us(1000); LED1_OFF(); delay_us(1000); } } とすることで出来ました.

  • 処理時間&CSVファイル出力について

    プログラムで処理1~3までの流れがある場合に、処理1~処理3それぞれの処理時間(秒)を求めたいです。 <例> 処理1 処理2 処理3 処理1の前の現在時刻を求めておき、処理2に入ったときの現在時刻から処理1の前の現在時刻を引けば処理時間(秒)求めることができると思うのですが、プログラムでどのように実装すればよいかわかりません。 現在時刻を求めるプログラムは、 Public Function GetTimeLong() As Long '処理時間 Dim stTime As SYSTEMTIME '初期化 GetTimeLong = 0 InitSystemTime stTime '取得して変換 If GetTime(stTime) = True Then GetTimeLong = stTime.wMilliseconds ' ミリ秒 GetTimeLong = GetTimeLong + stTime.wSecond * 1000& ' 秒 GetTimeLong = GetTimeLong + stTime.wMinute * 1000& * 60& '分 End If End Function で求めることができると思います。 また、処理1~3までの得られた処理時間を、 処理1 処理2 処理3 ○秒  ○秒  ○秒 とCSV形式ファイルで保存したい場合、どのようなプログラムを書けば実装できるのでしょうか? どなたかご教授をして頂ければ助かります。 よろしくお願い致します。

  • コマンドプロンプトで一部の処理内容が表示されません

    こんばんは。昨日からC言語に触れ始めた者です。 ネットのC言語初心者講座を参考に、「hello, world」と表示させるソースコードを作成して Cコンパイラ(LSI C-86 試食版)をインストール、Pathやコンパイラの設定を済ませて、 やっとコマンドプロンプト内に「hello, world」と表示させることに成功しました。 ところが、その講座(http://www9.plala.or.jp/sgwr-t/index.html)の中で出題されたある演習問題を コマンドプロンプトで実行してみたところ、何も表示されず改行だけが進むようになってしまいました。 これはおかしい、と先ほどの「hello, world」を実行してみても、やはり何も表示されません。 ソースプログラムから実行モジュールを作成することはできます。でも従来でしたらそのリンクを 実行されたことがコマンドプロンプト内で「lld@link.i」と表示されていたのに、それも無く、真っ黒の 改行だけが行われて実行モジュールができあがるようになってしまいました。 いったい何がいけなかったのでしょう・・・ 「コマンドプロンプト ”表示されない”」でググってみましたが、どうも同じ症状のかたがおられない ようでした。知らず知らずで文字色を黒に変えたので見えなくなったのかなと思ったのですが、 別のエラーメッセージ等は表示されるのでこれも違うようです。 心あたりや解る方がおられましたら何卒よろしくお願いいたします。

  • C言語で作ったプログラムの処理時間を計測するには

    C言語でいくつかのプログラムを作り、それぞれのプログラムの処理時間を計測し、比較したいと考えているのですがどのようにしたらいいのでしょうか?(0.1秒単位なので自分で計測するのはほぼ不可能です) 検索した結果 http://kzk9.net/column/time.html というサイトに辿り着きましたがよく理解できませんでした。 よろしくお願い致します。

  • 24時間後に処理

    とあるサイトで、24時間後に処理を実行できるプログラムは実現可能でしょうか? 24時間なので当然ブラウザを開いた状態ではなく、閉じても24時間後に処理が実行される仕組みはないでしょうか。