0

現在、ユーザーに生徒の数を尋ねる課題に取り組んでいます。次に、必要なセクションが最も少なくなるように、必要なセクションの数を計算します(各セクションには35人の生徒がいます)。

モジュラスを使用して計算の1つを実行する方法を理解することに固執しています(必要なプログラムのサンプル実行が提供されています)。

これが私が持っているものです、私はそれがそれほど多くないことを知っています、しかしただ一般的な考えでさえ役に立つでしょう。

if (stdnt % std == 0) {
        sec = stdnt / std;

}
# of students  # of sections  standard section  last section 
 351             11              32               31

これはプログラムの一部にすぎません。

私の問題:

計算の仕方がわからないので、余りがあるとセクションサイズが小さくなり、生徒全員が収まります。

たとえば 、ユーザーが350と入力した場合、セクションごとに最大35のスポットがあるため、10のセクションがあります。上の表に示すように、351を取得する方法がわかりません。

4

4 に答える 4

0
int numOfSections = numOfStudent / sizeOfSection;

基本的に、残りがない場合、これによりセクションの数が得られます。次に、ifステートメントを作成して、残りがあるかどうかを確認します。その場合は、numOfSection に 1 を追加します。

if(numOfStudent % sizeOfSection != 0)
   numOfSection++;
于 2012-09-26T01:14:26.090 に答える
0

セクションごとに最大(ここではMAX_PER_SECTION35 人)の学生がいます。次に、書く

number_of_students = q * MAX_PER_SECTION + r

0 <= r < MAX_PER_SECTION。の場合r == 0qセクションで十分ですが、それ以外の場合は が必要q+1です。その番号は、次のように簡単に取得できます

number_of_sections = (number_of_students - 1) / MAX_PER_SECTION + 1;

最大のセクションと最小のセクションの学生数の差が最小になるように、セクション間の学生の最適な分布を決定する必要があります。(その差はいつでも 0 または 1 にすることができます。) ここでも、余りのある除算を使用して次のように記述します。

number_of_students = s * number_of_sections + t

0 <= t < number_of_sections。次に、学生のtセクションが必要s+1で、残りのnumber_of_sections - tセクションはs学生を対象とします。

例では

351 = 10 * 35 + 1, number_of_sections = (351 - 1) / 35 + 1

したがって、11 のセクションが必要です。

351 = 31 * 11 + 10,

したがって、32 人の学生を含む 10 のセクションと、31 人の学生を含む 1 つのセクションが必要です。

于 2012-09-25T23:24:27.777 に答える
0

モジュロ演算は、除算後の剰余を計算します。式を覚える

x = (x DIV n) + (x MOD n)

「x」と「n」は整数、「DIV」は整数除算、「MOD」は剰余演算を意味します。そこから、C コードを取得できます。

int of_students       = 351;
int standard_section  = 35;

int last_section      = of_students % standard_section;
int of_sections       = of_students / standard_section;
if(last_section != 0) ++of_sections;
于 2012-09-25T23:03:22.780 に答える
0

剰余がゼロより大きい場合は、残りの学生のために別のセクションが必要です。たとえば、351 人の学生をセクションごとの学生数 (35) で割ると、10 セクションが得られます。次に、モジュラス演算子を使用します。一人の学生。

したがって、必要なセクション数の疑似コードは次のとおりです。

number_of_sections = 351/35
if( 351%1 > 0 ) number_of_sections += 1
于 2012-09-25T23:10:43.533 に答える