プログラミング課題で
-
Jul
プログラミング課題で
Linuxでフラッシュ暗算を製作しているのですが、一定時間、数字を表示させるのにsleep関数を使ってみたところ、エラー表示になりました。
また関数を使わなかったら数字が表示されるまもなく答えるようになってしまいます。どうすればいいのでしょうか。ご教授お願いいたします。
また関数を使わなかったら数字が表示されるまもなく答えるようになってしまいます。どうすればいいのでしょうか。ご教授お願いいたします。
- Dixq (管理人)
- 管理人
- 記事: 1662
- 登録日時: 15年前
- 住所: 北海道札幌市
- 連絡を取る:
Re: プログラミング課題で
情報が少なくて答えにくいと思います。
エラーが出た時の詳細なログや表示はどんなものでしたか?
また、何で表示していますか?
シェル?SDL? OpenGL?
エラーが出た時の詳細なログや表示はどんなものでしたか?
また、何で表示していますか?
シェル?SDL? OpenGL?
-
Jul
Re: プログラミング課題で
シェルです。以下のプログラムを組んだんですが、作動しませんでした。
#include <stdio.h>
#include <stdlib.h> /* rand, srand */
#include <time.h>
int main()
{
int n,sum=0,r;
srand((unsigned)time(NULL));
int i = 0;
while( i <3 )
{
i = i +1 ;
printf("%d秒前\r",3-i);
Sleep(1000);
}
int h = 0;
while( h<5)
{
h = h+1 ;
r=rand()%10;
printf("%d \r",r);
sum+=r;
Sleep(900);
printf("\r");
Sleep(100);
}
printf("ANSWER \n");
scanf("%d",&n);
if(sum==n)
{
printf("OK \n\n");
}
else
{
printf("MISS Answer is %d \n\n",sum);
}
return 0;
}- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: プログラミング課題で
codeタグをお使い下さい。 → http://dixq.net/board/board.html
SleepはWindowsの関数なのでLinuxだとusleepなどを使って下さい。
「Man page of USLEEP」
http://linuxjm.sourceforge.jp/html/LDP_ ... eep.3.html
SleepはWindowsの関数なのでLinuxだとusleepなどを使って下さい。
「Man page of USLEEP」
http://linuxjm.sourceforge.jp/html/LDP_ ... eep.3.html
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
Jul
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: プログラミング課題で
こちらで書き換えた所、エラーは出ませんでした。
ソースコードをcodeタグで貼りつけてみてください。
ソースコードをcodeタグで貼りつけてみてください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
jul
Re: プログラミング課題で
#include <stdio.h>
#include <stdlib.h> /*rand, srand */
#include <time.h>
#include <unistd.h>
int main()
{
int n,sum=0,r;
srand((unsigned)time(NULL));
int i = 0 ;
while(i<3)
i = i+1 ;
printf("%d秒前\r",3-i);
int usleep(useconds_t,1000);
}
int h = 0 ;
while(i<5)
{
h = h+1 ;
r=rand()%10;
printf("%d \r",r);
sum+=r;
int uleep(useconds_t,900);
printf(" \r");
int usleep(useconds_t,100);
}
printf("ANSWER \n");
scanf("%d",&n);
if(sum==n)
printf("OK \n\n");
else
printf("MISS Answer is %d\n\n",sum);
}
return 0;
}
[code=cpp]- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: プログラミング課題で
関数の宣言と呼び出しの区別がついていないようです。
これは宣言で
int usleep(useconds_t usec);
呼び出しは
usleep( 100*1000 ); //単位はマイクロ秒
これは宣言で
int usleep(useconds_t usec);
呼び出しは
usleep( 100*1000 ); //単位はマイクロ秒
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
Jul
Re: プログラミング課題で
指摘された部分を修正したところ、エラー文が表示されることなく作動したのですが、問題の数字の表示が見えません。
数字の表示時間が短すぎるからなのでしょうか。
数字の表示時間が短すぎるからなのでしょうか。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: プログラミング課題で
ストリーム出力系のprintfなどはバッファがあるのでバッファに溜まったまま出力されていないんだと思います。
fflush(stdout);
で強制出力を行なって下さい。printfの直後にこの命令を書きます。
fflush(stdout);
で強制出力を行なって下さい。printfの直後にこの命令を書きます。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: プログラミング課題で
解決したら「解決チェック」をお願いします。それと解決したコードを掲載して下さい。後の人の参考になるコードを残すのがルールとなっております。
もうひとつインデント(字下げ)がちゃんとされていないので読みづらいので気を付けられたほうが良いと思います。バグの原因にもなります。
もうひとつインデント(字下げ)がちゃんとされていないので読みづらいので気を付けられたほうが良いと思います。バグの原因にもなります。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。