• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C言語)

C言語グループのモードについて

このQ&Aのポイント
  • 以下のプログラムは20個の数字を入力し、出現回数が最も多い数字をモードとして表示するものです。
  • プログラムの処理の流れについて詳しく解説してほしいです。
  • C言語のモードについて教えてください。

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

  • ベストアンサー
回答No.2

(1)まず、20個の数を入力します (2)oldcountを0で初期化 (3)その20個の数に付いて最初から順番に(4)~(5)の処理を繰り返します (4)countに1を設定 (5)該当の数以降の入力値について(6)の処理を繰り返す (6)その数が該当の数と等しいなら、oldmodeにその数を設定し、oldcountにcountを設定 (7)oldmodeを表示 20個の入力値について、それぞれ同じ数がないかをチェックして、一番最後に重複が見つかった数字を表示しています。 だた、countに1しか設定されてないし、oldcountが評価されたりしていないので、この2つの変数の意味が不明ですが。ま、重複があったかどうかのチェックに使うつもりだったのかもしれませんが……

smokerls3930
質問者

お礼

ご解答有難う御座いました。 質問のソースが間違っていた為、混乱させてしまい申し訳御座いません。 正確なソースについて再度解説していただけるなら宜しくお願いいたします。

smokerls3930
質問者

補足

申し訳御座いませんソースが間違っていましたので修正いたします。 #include <stdio.h> int main(void) { int stats[20],i,j; int mode,count,oldcount,oldmode; printf("20個の数字を入力して下さい:\n"); for(i=0;i<20;i++) scanf("%d",&stats[i]); oldcount=0; for(i=0;i<20;i++){ mode=stats[i]; count=1; for(j=i+1;j<20;j++) if(mode==stats[j]) count++; if(count>oldcount){ oldmode=mode; oldcount=count; } } printf("モードは%dです\n",oldmode); return 0; }

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • yama5140
  • ベストアンサー率54% (136/250)
回答No.4

う~ん、どうなんだろう?。 投稿ソースを何度か試せば、「以下のプログラムは・・・モードを表示する物です」とは言えないはずなんだけど。 ・目的のものが得られないソースに、「解説が欲しい」。 ・目的のものが得られるようにソースを、「直して欲しい」。 前者は無意味だよね。 ・↓モードが同値の場合を考慮していません(◆先行入力優先)。 #include <stdio.h> int main( void ) {  int iCount[ 20 ], iStore[ 20 ];  int iVal, i, j, iMax, iOk;  int nn = 0, iNum = 0;  printf( "20個の数字を入力して下さい:\n" );  for( i = 0; i < 20; i++ ){   scanf( "%d", &iVal );   iOk = 0;   for( j = 0; j < nn; j++ ){  // いままで入力したものの中に    if( iVal == iStore[ j ] ){ // 同じものがあるか     iOk = 1;     iCount[ j ]++;     break;    }   }   if( iOk ) continue; // 重複入力   iStore[ nn ] = iVal; // 新しい数   iCount[ nn ] = 1;   // 初期化   nn++;  }  iMax = iCount[ 0 ];  for( i = 0; i < nn; i++ ){   if( iCount[ i ] > iMax ){ // ◆    iMax = iCount[ i ];    iNum = i;   }   printf( "%02d %d(%d)\n", ( 1 + i ), iStore[ i ], iCount[ i ] );  }  printf( "\nモードは %d(%d)です\n", iStore[ iNum ], iCount[ iNum ] );  return( 0 ); } 注:インデントに全角空白を用いています。コピペ後、タブに一括変換して下さい。

smokerls3930
質問者

お礼

ご解答有難う御座いました。 質問のソースが間違っていた為、混乱させてしまい申し訳御座いません。 正確なソースについて再度解説していただけるなら宜しくお願いいたします

smokerls3930
質問者

補足

申し訳御座いませんソースが間違っていましたので修正いたします。 #include <stdio.h> int main(void) { int stats[20],i,j; int mode,count,oldcount,oldmode; printf("20個の数字を入力して下さい:\n"); for(i=0;i<20;i++) scanf("%d",&stats[i]); oldcount=0; for(i=0;i<20;i++){ mode=stats[i]; count=1; for(j=i+1;j<20;j++) if(mode==stats[j]) count++; if(count>oldcount){ oldmode=mode; oldcount=count; } } printf("モードは%dです\n",oldmode); return 0; }

すると、全ての回答が全文表示されます。
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

で, #2 の説明から「これではモードが求まらない」ことも自明だね.

smokerls3930
質問者

お礼

解答有難う御座います。 ソース間違いに、気が付くきっかけになりました。

すると、全ての回答が全文表示されます。
  • asuncion
  • ベストアンサー率33% (2127/6290)
回答No.1

モードって何ですか?

smokerls3930
質問者

補足

統計学では、ある数値グループの中でもっとも頻繁に現れる数値をそのグループのモード(最頻値)というそうです。

すると、全ての回答が全文表示されます。