2017-03-27 18 views
0

私のプログラムのこのリンクには完全なコードがあります。 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'の下に比較されます。

+1

あなたの質問にここに投稿するには、このような膨大な量のコードとテキストが本当に必要ですか? –

+0

なぜ 'result2'を配列として宣言していますか?あなたはそれの1つの要素だけを使用します。 – Barmar

+0

複数の配列の代わりに 'struct'sの配列を使うことを検討してください。 –

答えて

0

私はそれを解決することができたと信じています。私のアレイで宣言した値のうち、同一ではないものが原因でした。両方が整数変数として宣言されているため、プログラムはエラーを返さなかった

関連する問題