1時間ごとに更新!Amazon.co.jpで今売れている本トップ100   掲示板ランキング



掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板1

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧

No.6038

エラーについて
投稿者---たけだ(2006/07/03 23:51:28)


プログラムのコンパイラーもちゃんと通り実行しようとしました。そして入力ファイル名など必要なことを打ち込み最後に出力ファイル名を入力してエンターキーを押すと”floating expection"(すいませんfloatingのあとの文字は忘れてしまい、たしかexなんとかでした。)というのが出てしまいます。どなたかわかる人はいますか?ぜひ教えてください。お願いします。


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:エラーについて 6039 たけだ 2006/07/03 23:57:27
<子記事> Re:エラーについて 6041 たかぎ 2006/07/04 00:39:18


No.6039

Re:エラーについて
投稿者---たけだ(2006/07/03 23:57:27)


思い出しました。floating exceptionsです


この投稿にコメントする

削除パスワード

No.6040

Re:エラーについて
投稿者---PSB(2006/07/04 00:01:23)


十中八九

>出力ファイル名を入力して

のあたりがバグってるんでしょう。コンパイルできる=バグが無い
ではありません。


この投稿にコメントする

削除パスワード

No.6041

Re:エラーについて
投稿者---たかぎ(2006/07/04 00:39:18)
http://takagi.in/


環境とソースがなければ、正確なことはわかりません。

多分、浮動小数点演算周りでエラーが発生しているのだとは思います。
0で除算しているとか、非数になるような演算をやっているとか...



この投稿にコメントする

削除パスワード

No.6046

Re:エラーについて
投稿者---acid(2006/07/04 09:03:50)


取りあえず、ソースを貼ってみるといいんじゃなーい?

で、そのエラーが出た時の入力値と出力値も書いてくれると助かります。


この投稿にコメントする

削除パスワード

No.6051

Re:エラーについて
投稿者---たけだ(2006/07/04 16:23:16)


ソースはこんな感じです。サブルーチンもありますが。それはちゃんとできてますので。メイン関数だけを掲示させていただきます。
/* ライブラリーの宣言 */
#include <stdio.h>
#include <stdlib.h>
#include <math.h>


void main(void)
{
/* データ型の宣言 */
FILE *fin , *fout;
char fnin[20] , fnout[20];
int i , j , isc , isl , iec , iel , k ;
int idata[50][50];
int imin , imax , iave ;
float ihensa ;
int b , c , d , e , f , g ;
double hensa( int[][] , int , int , int , int , int );
int min( int[][] , int , int , int , int );
int max( int[][] , int , int , int , int );
int heikin( int[][] , int , int , int , int );




/* 入力ファイル名の読み込み */
printf( " 入力ファイル名を入力してください : \n" );
scanf( "%s" , fnin );


/* 入力ファイルのオープン -> データの読み込み -> 入力ファイルのクローズ */
if(( fin = fopen( fnin , "r")) == NULL ){
printf( "入力ファイルがオープンできません \n" );
exit( -1 );
}
else{
for( j = 0 ; j <= 48 ; j++ ){
for( i = 0 ; i <= 48 ; i++ ){
fscanf( fin , "%5d" , &idata[i][j] );
}
}
}
fclose( fin );

printf( " (1,1):\n " );
printf( " +--------------------------------------------------+ \n" );
printf( " | | \n" );
printf( " | (isc,isl) | \n" );
printf( " | +-----------------------------------+ | \n" );
printf( " | | | | \n" );
printf( " | | | | \n" );
printf( " | +-----------------------------------+ | \n" );
printf( " | (iec,iel) | \n" );
printf( " | | \n" );
printf( " +--------------------------------------------------+ \n" );
printf( " (49,49) \n" );
printf(" === 切出し位置を指定してください ===\n" );
printf( " 始点の座標(isc,isl) :\n" );
scanf( "%d%d" , &isc , &isl );
printf( " 終点の座標(iec,iel) :\n" );
scanf( "%d%d" , &iec , &iel );

imin = min( idata , isc , isl , iec , iel );
imax = max( idata , isc , isl , iec , iel );
printf( "\最大値 = %5dM \n 最小値 = %5dM \n" ,imax , imin );
iave = heikin( idata , isc , isl , iec , iel );
ihensa = hensa( idata , isc , isl , iec , iel , iave );

/* 分割の設定 */
printf("\n ヒストグラムの分割の仕方を設定 \n");
printf("\n ヒストグラムどれくらい分割しますか? \n");
scanf("%d",&b );
c =( imax-imin )/b;

/* 一つを何個? */
printf(" * を何個分にする?: ");
scanf("%d" , &b );

/* 出力ファイル名の読み込み */
printf( " 出力ファイル名を入力してください : \n");
scanf( "%s" , fnout );


/* 出力ファイルのオープン -> データの書き込み -> 出力ファイルのクローズ */
if(( fout = fopen( fnout , "w" )) == NULL ){
printf( "出力ファイルがオープンできません \n" );
exit( -1 );
}
else{

fprintf( fout , "-- ヒストグラム --\n\n" );
fprintf( fout , "始点 = (%d,%d) 終点 = (%d,%d) \n" , isc , isl , iec , iel );
fprintf( fout , "最大値 = %d[m] 最小値 = %d[m] < * 一つ %d個 > \n" , imax , imin , d);
fprintf( fout ,"\n以上[m]---未満[m] |個数| ヒストグラム *****<階差 =%d[m] >***** \n",c);
fprintf( fout ,"---------------------------------------------------------------------------\n");
for( k=0 ; k<=b-2 ; k++ ){
g=0;
for( j=isl-1;j<=iel-1 ;j++ ){
for( i=isc-1;i<=iec-1 ;i++ ){
if(idata[i][j] >=k*c+imin && idata[i][j] <(k+1)*c+imin){
g=g+1;
}
}
}
fprintf( fout , "%5d---%5d |%5d|" ,imin+k*c,imin+(k+1)*c,g);
e=g/d;
for( f=0 ; f<=e-1;f++){
fprintf( fout , "%c" , '*');
}
fprintf( fout , "\n" );
}
g=0;
for( j=isl-1;j<=iel-1 ;j++ ){
for( i=isc-1;i<=iec-1 ;i++ ){
if(idata[i][j] >=(b-1)*c+imin && idata[i][j] <= imax){
g=g+1;
}
}
}
fprintf( fout , "%5d---%5d |%5d|" , imin+(b-1)*c,imax,g);
e=g/d;
for( f=0 ; f<=e-1 ; f++){
fprintf( fout , "%c" , '*' );
}
fprintf( fout , "\n" );
fprintf( fout , "--------------------------------------------------------------------------\n");
fprintf( fout , " 総個数 |%5d|\n" , (iec-isc+1)*(iel-isl+1) );
fprintf( fout , "\n 平均 : %5.0f[m] \n 標準偏差 : %5.1f \n" , iave , ihensa );
}
fclose( fout );
}


この投稿にコメントする

削除パスワード

No.6052

Re:エラーについて
投稿者---papa(2006/07/04 16:44:41)


>ソースはこんな感じです。サブルーチンもありますが。それはちゃんとできてますので。メイン関数だけを掲示させていただきます。

サブルーチン(じゃなくって、関数)や入力データが明らかでないため、
ご自身以外の人のところでは実行できない、というのが現状です。


この投稿にコメントする

削除パスワード

No.6054

Re:エラーについて
投稿者---acid(2006/07/04 17:24:42)


>/* 出力ファイル名の読み込み */
>printf( " 出力ファイル名を入力してください : \n");
>scanf( "%s" , fnout );

出力ファイルの入力で、とのことなので一つ発見。
&ないよ。



この投稿にコメントする

削除パスワード

No.6055

Re:エラーについて
投稿者---wis(2006/07/04 19:45:56)


>出力ファイルの入力で、とのことなので一つ発見。
>&ないよ。

問題ないと思いますが。。。?



この投稿にコメントする

削除パスワード

No.6056

Re:エラーについて
投稿者---ruby(2006/07/04 19:47:02)


>>scanf( "%s" , fnout );
>
>出力ファイルの入力で、とのことなので一つ発見。
>&ないよ。

&は不要です。


この投稿にコメントする

削除パスワード

No.6057

Re:エラーについて
投稿者---ruby(2006/07/04 20:12:48)


>ソースはこんな感じです。サブルーチンもありますが。それはちゃんとできてますので。メイン関数だけを掲示させていただきます。

とりあえずコンパイルしてみました。
すると、多くのエラーや警告が出ました。本当に実行できているのですか?

エラーや警告の中で、今回の件に直接関係ありそうなのは
↓ ここです。
>/* 一つを何個? */
>   printf(" * を何個分にする?: ");
>   scanf("%d" , &b );  

scanfの第2引数は&dではないでしょうか。
後ろの方の文で、「dに値を代入する前に使っている」という警告が出ていました。
で、もっと後の方で、dで割っている文があります。おそらく、そこで
ゼロ割りしているのでしょう。

コンパイル時のメッセージに、もっと目を配りましょう。


この投稿にコメントする

削除パスワード

No.6058

Re:エラーについて
投稿者---たけだ(2006/07/04 20:54:20)


いろいろありがとうございます。本当に助かります。明日最大や最小などの関数のソースを掲示させていただくのでよろしくお願いします。


この投稿にコメントする

削除パスワード

No.6059

Re:エラーについて
投稿者---ruby(2006/07/04 21:06:18)


>いろいろありがとうございます。本当に助かります。明日最大や最小などの関数のソースを掲示させていただくのでよろしくお願いします。

まずは、main関数のコンパイル時に出るエラーや警告を修正してください。
その後、実行モジュールを作成し、実行結果を確認してください。
実行結果が思わしくなければ、あらためて質問してください。
実行結果が思ったとおりであれば、main以外の関数を見せていただく必要は特にありません。


この投稿にコメントする

削除パスワード

No.6060

Re:エラーについて
投稿者---たけだ(2006/07/04 21:08:15)


わかりました!


この投稿にコメントする

削除パスワード

No.6061

Re:エラーについて
投稿者---たけだ(2006/07/04 21:10:47)


質問ですが、Linuxをどこかで手に入れれば自分の家でC言語の勉強はできるのですか?



この投稿にコメントする

削除パスワード

No.6062

Re:エラーについて
投稿者---Blue(2006/07/04 21:36:53)


>質問ですが、Linuxをどこかで手に入れれば自分の家でC言語の勉強はできるのですか?
LinuxでなくともWindowsでもフリーのCコンパイラはありますよ。
(Macは知りません)
http://homepage3.nifty.com/mmgames/c_guide/p_compiler.html



この投稿にコメントする

削除パスワード

No.6066

Re:エラーについて
投稿者---asd(2006/07/05 09:22:44)


>質問ですが、Linuxをどこかで手に入れれば自分の家でC言語の勉強はできるのですか?

C言語のためだけにLinuxに手を出すと別のところでつまづくと思うので、
Blueさんのレスを参考にWindowsでやったほうがいいかと思います。

# windowsでもつまづくときはつまづくけど^^;


この投稿にコメントする

削除パスワード

No.6068

Re:エラーについて
投稿者---near(2006/07/05 12:40:01)


なぜデバッガを使わないのでしょうか?
デバッガがなくてもprintfデバッグでエラーの場所ぐらいわかると思いますが。


この投稿にコメントする

削除パスワード

No.6069

Re:エラーについて
投稿者---たかぎ(2006/07/05 14:04:13)
http://takagi.in/


> fprintf( fout , "\n 平均 : %5.0f[m] \n 標準偏差 : %5.1f \n" , iave , ihensa );

この行が非常に臭い。



この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧





掲示板提供:(有)リアル・インテグリティ