私には取り組んできた課題があります。私のコードは正しい数学演算と正しい順序 (少なくともシーケンスに関して) を持っているように見えますが、私の答えは少し厄介です。入力値に従って各質問の一部を正しく取得しますが、入力値と同じ部分が変化することはありません。これを引き起こしているCの操作順序について、私が見逃しているものはありますか?
問題は
intPeople = intCarCounter * intTrainCounter * CAR_CAPACITY;
サンプル ラン #3 では、最初の 2 つの入力に対して 120 人 (正解よりも正確に 20 人多い) を取得し、余剰数はサンプル ラン #4 にあるはずです。3 番目の入力では、112 人が得られました。これは、サンプル ラン #4 の正解です。最後に、サンプル ラン #4 で 128 人 (正解より 16 人多い) が得られ、余剰数はサンプル ラン #3 にあるはずです。何か案は?
割り当て: http://cop3223.blogspot.com/2013/01/problem-c-roller-coaster-design-coasterc.html
私のコード:
#include <stdio.h>
#include <stdlib.h>
#define FIRST_CAR_LENGTH 10
#define NORMAL_CAR_LENGTH 8
#define CAR_CAPACITY 4
int main(void)
{
/* Initialize Variables */
int intTrack,intMaxTrainSize,intActualTrainSize,intPeople,intCarCounter,intTrainCounter,n;
/* Ask user for value of N */
printf("What is the value for N?> ");
scanf("%d",&n);
for (int i=0; i<n;i++)
{
/* Ask user for total length of track */
printf("\nWhat is the total length of the track, in feet?> ");
scanf("%d",&intTrack);
/* Ask user for maximum length of each train */
printf("What is the maximum length of a train, in feet?> ");
scanf("%d",&intMaxTrainSize);
/* Set/Reset initial values of intActualTrainSize, intCarCounter and intTrainCounter */
/* Each train will begin with FIRST_CAR_LENGTH -> intActualTrainSize=FIRST_CAR_LENGTH */
/* Each train will begin with 1 car -> intCarCounter=1 */
/* Train counter will begin at 0 -> intTrainCounter=0 */
intActualTrainSize=FIRST_CAR_LENGTH;
intCarCounter=1;
intTrainCounter=0;
/* Continue to add additional cars using NORMAL_CAR_LENGTH until the maximum train size has been reached */
/* Count how many NORMAL_CAR_LENGTH cars are added -> intCarCounter++*/
while (intActualTrainSize < intMaxTrainSize)
{
intActualTrainSize=intActualTrainSize+NORMAL_CAR_LENGTH;
intCarCounter++;
}
/* Count how many trains can be added until 25% of the track is used up -> intTrainCounter++ */
while (intTrainCounter*intActualTrainSize < (int)(intTrack*.25))
{
intTrainCounter++;
}
/* Count how many people can be on the track at one time -> intPeople = intCarCounter * intTrainCounter * CAR_CAPACITY */
intPeople = intCarCounter * intTrainCounter * CAR_CAPACITY;
printf("\nYour ride can have at most %d people on it at one time.",intPeople);
if (intActualTrainSize>intMaxTrainSize)
printf("\nMaximum Train Length has surplus of %d feet.\n",intActualTrainSize-intMaxTrainSize);
else if (intMaxTrainSize==intActualTrainSize)
printf("\nMaximum Length fits exactly.\n");
}
system("pause");
return 0;
}