プログラミング課題で

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Jul

プログラミング課題で

#1

投稿記事 by Jul » 14年前

Linuxでフラッシュ暗算を製作しているのですが、一定時間、数字を表示させるのにsleep関数を使ってみたところ、エラー表示になりました。
また関数を使わなかったら数字が表示されるまもなく答えるようになってしまいます。どうすればいいのでしょうか。ご教授お願いいたします。

アバター
Dixq (管理人)
管理人
記事: 1662
登録日時: 15年前
住所: 北海道札幌市
連絡を取る:

Re: プログラミング課題で

#2

投稿記事 by Dixq (管理人) » 14年前

情報が少なくて答えにくいと思います。
エラーが出た時の詳細なログや表示はどんなものでしたか?
また、何で表示していますか?
シェル?SDL? OpenGL?

Jul

Re: プログラミング課題で

#3

投稿記事 by Jul » 14年前

シェルです。以下のプログラムを組んだんですが、作動しませんでした。

コード:

#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: プログラミング課題で

#4

投稿記事 by softya(ソフト屋) » 14年前

codeタグをお使い下さい。 → http://dixq.net/board/board.html
SleepはWindowsの関数なのでLinuxだとusleepなどを使って下さい。
「Man page of USLEEP」
http://linuxjm.sourceforge.jp/html/LDP_ ... eep.3.html
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

Jul

Re: プログラミング課題で

#5

投稿記事 by Jul » 14年前

sleep表示の部分をusleep

コード:

に書き換え実行したところ、
エラーで

コード:

expected declaration spesifiers  or ’…’ before numericconstant 
と表示されました。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: プログラミング課題で

#6

投稿記事 by softya(ソフト屋) » 14年前

こちらで書き換えた所、エラーは出ませんでした。
ソースコードをcodeタグで貼りつけてみてください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

jul

Re: プログラミング課題で

#7

投稿記事 by jul » 14年前

コード:

#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]
[/code]

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

Re: プログラミング課題で

#8

投稿記事 by みけCAT » 14年前

関数呼出しの前にintはいりません。
uleepはusleepのtypoでしょう。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: プログラミング課題で

#9

投稿記事 by softya(ソフト屋) » 14年前

関数の宣言と呼び出しの区別がついていないようです。

これは宣言で
int usleep(useconds_t usec);
呼び出しは
usleep( 100*1000 ); //単位はマイクロ秒
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

Jul

Re: プログラミング課題で

#10

投稿記事 by Jul » 14年前

指摘された部分を修正したところ、エラー文が表示されることなく作動したのですが、問題の数字の表示が見えません。
数字の表示時間が短すぎるからなのでしょうか。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: プログラミング課題で

#11

投稿記事 by softya(ソフト屋) » 14年前

ストリーム出力系のprintfなどはバッファがあるのでバッファに溜まったまま出力されていないんだと思います。
fflush(stdout);
で強制出力を行なって下さい。printfの直後にこの命令を書きます。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

Jul

Re: プログラミング課題で

#12

投稿記事 by Jul » 14年前

fflush追加したところ、無事に起動できました。
本当にありがとうございました!!

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: プログラミング課題で

#13

投稿記事 by softya(ソフト屋) » 14年前

解決したら「解決チェック」をお願いします。それと解決したコードを掲載して下さい。後の人の参考になるコードを残すのがルールとなっております。
もうひとつインデント(字下げ)がちゃんとされていないので読みづらいので気を付けられたほうが良いと思います。バグの原因にもなります。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

閉鎖

“C言語何でも質問掲示板” へ戻る