2016-03-20 104 views
0

好的,所以我的問題是,每次運行代碼並選擇行5 - 9中的任何內容,它不會更新教練計數器,但Buisness類計數器請幫助!爲什麼課堂計數器不會增加Coach課程?

#include<iostream> 
#include<string> 
#include <iomanip> 
using namespace std; 

#include "C:\Users\barta\OneDrive\Documents\Visual Studio 2015\Projects\Project 4\Project 4\array.h" 

void displayPlane(char msg[], char[ROW][COL]); 
void getData(int &, char &); 
void salesReport(int classCtr[],double fare[], string classes[]); 

int main() 
{ 
    int row = 0; 
    char seat; 


    while (row != -1) 
    { 

     displayPlane("\tChesapeaake Airlines", layout); 
     cout << endl; 
     getData(row, seat); 
     if (row == -1) 
      break; 
     cout << endl; 
     int COL = seat - 'A'; 
     if (layout[row - 1][COL] == 'X') 
     { 

      cout << "Sorry this seat is taken" << endl; 
     } 
     else 
     { 

      layout[row - 1][COL] = 'X'; 

     } 

    } 
    double percentOccupied; 
    std::cout << std::fixed; 
    std::cout << std::setprecision(2); 
    int total = 0; 
    for (int i = 0; i < 2; i++) 
    { 
     total += classCtr[i]; 
    } 

    cout << setw(18) << "Total Seats = " << total << endl; 
    percentOccupied = ((double)total/36) * 100; 
    cout << setw(22) << "Percent Occupied = " << percentOccupied << endl; 

    salesReport(classCtr, fare, classes); 
    cout << endl; 
    cout << "Have a nice day! " << endl; 

    system("pause"); 
    return 0; 
} 
void displayPlane(char msg[] , char[ROW][COL]) 
{ 
    cout <<msg << endl; 
    for (int r = 0; r < ROW; r++) 
    { cout << endl; 
    cout << setw(4) << r + 1; 
     for (int c = 0; c < COL; c++) 
     { 
      cout << setw(4) << layout[r][c]; 
     } 

    } 

} 
void getData(int& row, char& seat) 
{ 
     cout << "Enter row <-1 to stop> "; 
     cin >> row; 
     if (row == -1) 
      return; 
     if (row == 1) 
     { 
      classCtr[0]++; 
     } 
     else if (row == 2 || 3 || 4) 
     { 
      classCtr[1]++; 
     } 
     else if (row == 5 || 6 || 7 || 8) 
     { 
      classCtr[2]++; 
     } 

     cout << "Enter your prefered seat "; 
     cin >> seat; 
     seat = toupper(seat); 


} 
void salesReport(int classCtr[], double fare[], string classes[]) 
{ 

    cout << " \tTicket Price" << setw(20) <<"Total Sales\n\n" 
     << setw(14) << classes[0] << "\t" << fare[0] << setw(6) <<classCtr[0] << "\n\n" 
     << classes[1] << "\t" << fare[1] << setw(6) <<classCtr[1] <<"\n\n" 
     << setw(14) << classes[2] << "\t" << fare[2] << setw(6) << classCtr[2]; 
} 

頭文件:

//arrays for airline problem 

const int ROW = 9; 
const int COL = 4; 
const int CTR = 3; 

//initial seats in the plane 
    char layout[ROW][COL] = { { 'A', 'B', 'C', 'D' }, 
          { 'A', 'B', 'C', 'D' }, 
          { 'A', 'B', 'C', 'D' }, 
          { 'A', 'B', 'C', 'D' }, 
          { 'A', 'B', 'C', 'D' }, 
          { 'A', 'B', 'C', 'D' }, 
          { 'A', 'B', 'C', 'D' }, 
          { 'A', 'B', 'C', 'D' }, 
          { 'A', 'B', 'C', 'D' }}; 

    int classCtr[CTR] = {0,0,0}; 

    string classes[] = {"First Class", "Business Class", "Coach"}; 

    double fare [] = {500, 300, 100}; 

這裏是,當我運行的代碼 Chesapeaake航空公司

1 A B C D 
    2 A B C D 
    3 A B C D 
    4 A B C D 
    5 A B C D 
    6 A B C D 
    7 A B C D 
    8 A B C D 
    9 A B C D 
Enter row <-1 to stop> 5 
Enter your prefered seat a 

     Chesapeaake Airlines 

    1 A B C D 
    2 A B C D 
    3 A B C D 
    4 A B C D 
    5 X B C D 
    6 A B C D 
    7 A B C D 
    8 A B C D 
    9 A B C D 
Enter row <-1 to stop> 7 
Enter your prefered seat c 

     Chesapeaake Airlines 

    1 A B C D 
    2 A B C D 
    3 A B C D 
    4 A B C D 
    5 X B C D 
    6 A B C D 
    7 A B X D 
    8 A B C D 
    9 A B C D 
Enter row <-1 to stop> 9 
Enter your prefered seat d 

     Chesapeaake Airlines 

    1 A B C D 
    2 A B C D 
    3 A B C D 
    4 A B C D 
    5 X B C D 
    6 A B C D 
    7 A B X D 
    8 A B C D 
    9 A B C X 
Enter row <-1 to stop> -1 
    Total Seats = 3 
    Percent Occupied = 8.33 
     Ticket Price  Total Sales 

    First Class 500.00  0 

Business Class 300.00  3 <------See this is where the rows are being updated 

     Coach 100.00  0 <---- but i need rows 5 - 9 to be updated here 
Have a nice day! 
Press any key to continue . . . 

回答

2

不能縮寫複合條件語句像這樣放:

else if (row == 2 || 3 || 4) 

你需要寫:

else if (row == 2 || row == 3 || row == 4) 

否則,該語句將被解釋爲「如果row == 2是真的還是3是真的還是4是真實的」。當解釋整數作爲布爾值,C++認爲零爲假非零數字是真實的,那麼你原來的語句相當於

else if ((row == 2) || true || true) 

其中,你可能會注意到,始終是真實的!

您可能還需要考慮的寫作語句喜歡另類:

else if (row >= 2 && row <= 4) 

可以比列出每個可能的號碼,如果號碼的範圍大更加緊湊。

+0

謝謝!人!這是有道理的!我的邏輯不是最好的lmao –