私のプログラムのこのリンクには完全なコードがあります。 https://pastebin.com/NpspcJB8値の同期が正しく機能していません
評価の一部として、私のコードで配列インデックスを別のものと「同期させる」ようにしています。発生する問題は、私は繰り返しコードの一部を実行すると、出力は、例えば、I入力後の値を変更しないことである。
case 'b':
CaseBPrompt();
for (t=0;t<350;t++) {
int result2[350];
result2[t] = strcmp(blankSpace, parkingSpace[t]); // determine if the value of parkingSpace is the same as strcmp "empty"
Synchronise(t);
if (result2[t] == 0) { // if value of parkingSpace == "empty"
// use spaceNumber; sync int variable w/array index
LevelPrint(t);
strcpy(carCustomer[t], customerName);
// copy value of car number to index
strcpy(parkingSpace[t], carNumber); // omit array index to ensure this can run
break; // required, as will print other available spaces otherwise
}
}
printf("You will take %s's car\n", carCustomer[t]);
printf("Please drive the car over to %c%d\n", level, spaceNumber[t][3]);
break;
t
私はmain
の外グローバルに宣言整数の変数です。私はここで使用される機能の内容は次のとおりです。私は、出力のためにアスタリスクで囲まれた文字は何の懸念をされている
empty
350
25
Please write car number (without spaces):
b
b
Valet options (press the corresponding letter to select):
a) Check available spaces
b) Park a customer's car
c) Retrieve a customer's car
q) Exit the program
Your choice: b
You have chosen to park a customer's car
Please input the customer's name, using _ in lieu of a space
b
Please input the values of the number plate
b
There is an available space at parking space A1
You will take b's car
Please drive the car over to A1
Valet options (press the corresponding letter to select):
a) Check available spaces
b) Park a customer's car
c) Retrieve a customer's car
q) Exit the program
Your choice: b
You have chosen to park a customer's car
Please input the customer's name, using _ in lieu of a space
b
Please input the values of the number plate
b
There is an available space at parking space **A1**
You will take b's car
Please drive the car over to **A1**
Valet options (press the corresponding letter to select):
a) Check available spaces
b) Park a customer's car
c) Retrieve a customer's car
q) Exit the program
Your choice: c
You have chosen to retrieve a customer's car
Please write their name, again with _ in lieu of a space:
c
Please write down what was on their number plate:
90jda
c's car is at **1**.
Valet options (press the corresponding letter to select):
a) Check available spaces
b) Park a customer's car
c) Retrieve a customer's car
q) Exit the program
Your choice:
:私は、コードを実行すると
void CaseBPrompt() {
printf("You have chosen to park a customer's car \n");
printf("Please input the customer's name, using _ in lieu of a space\n");
scanf(" %s", &customerName);
// assign customer's name to carNumber - new array?
printf("Please input the values of the number plate\n");
// ensure use %s, as collecting string, and so const char/char error won't occur
scanf(" %s", &carNumber);
}
void LevelPrint(int n) {
if (spaceNumber[n][3] <= 100) {
level = 'A';
// don't forget to write out complete matrix for spaceNumber!
printf("There is an available space at parking space %c%d\n", level,spaceNumber[n][3]);
// assign parkingSpace array index w/user input
} else if (spaceNumber[n][3] > 100 && spaceNumber[n][3]<= 200) {
level = 'B';
spaceNumber[n][3]-=100; // display correct parking space at corresponding level
printf("There is an available space at parking space %c%d\n", level,spaceNumber[n][3]);
} else if (spaceNumber[n][3] > 200 && spaceNumber[n][3]<= 300) {
level = 'C';
spaceNumber[n][3]-=200; // display correct parking space at corresponding level
printf("There is an available space at parking space %c%d\n", level,spaceNumber[n][3]);
} else if (spaceNumber[n][3] > 300 && spaceNumber[n][3]<= 350) {
level = 'D';
spaceNumber[n][3]-=300; // display correct parking space at corresponding level
printf("There is an available space at parking space %c%d\n", level,spaceNumber[n][3]);
}
}
void Synchronise(int a) {
spaceNumber[a][3] = n+1; // synchronise w/parking space
carCustomer2[a][3] = n+1; // synchronise w/car customer name
}
、私はこの出力を受け取ります私はcase 'c'
の下にコードを追加する前に、case b
のコードが正しく印刷されるため、私はDevC++を使用しています。私のコードに何か問題があるかどうか疑問に思っています。
私がオプションBをやり直すことを選択したとき、コードはこれより前の各繰り返しでA2、A3などを出力し、オプションCの出力に表示されるのは149の値です。 90jda
の下にあり、parkingSpace[150][3]
の下にある。
parkingSpace
下値をcase 'b'
ためblankSpace
と同期することを意味するが、それはそのfor
ループにおけるその利用可能なスペースを出力しています。 case 'c'
の場合、parkingSpace
は、ユーザー入力carNumber
と同じ文字列を保持するインデックスと同期することを意味し、for
ループの先頭でcase 'c'
の下に比較されます。
あなたの質問にここに投稿するには、このような膨大な量のコードとテキストが本当に必要ですか? –
なぜ 'result2'を配列として宣言していますか?あなたはそれの1つの要素だけを使用します。 – Barmar
複数の配列の代わりに 'struct'sの配列を使うことを検討してください。 –