Как я могу отображать только автомобили с 5 местами? - PullRequest
0 голосов
/ 13 марта 2020

Как я могу заставить программу отображать только автомобили, которые имеют 5 мест, на данный момент, несмотря ни на что, она показывает все автомобили, о которых я пишу информацию, например, если я пишу в консоли, что есть 3 машины и даю информацию о них и скажем, что у одного есть 2 места, а у других - 5, после запуска программы все равно отображаются все 3. Любая идея, как я могу отображать только автомобили с 5 местами? Можно ли как-нибудь использовать функцию quicksort ()?

#include <iostream>

using namespace std;

struct Car
{
    int no_seats;
    int year;
    char brand[20];
    char color[20];
    float horse_power;
};

void read_cars(Car C[], int &n)
{
    int i;
    cout << "Number of parked cars "; cin >> n;
    for(i=1; i<=n; i++)
    {  
       cout << "Brand " ; cin >> M[i].brand;
       cout << "The year it was made in " ; cin >> M[i].year;
       cout << "Color " ; cin >> M[i].color;
       cout << "Power " ; cin >> M[i].horse_power;  
       cout << "Number of seats " ; cin >> M[i].no_seats;
    }  

}

void display_cars(Car C[], int n)
{
    int i;
    for(i=1; i<=n; i++)
    {
       cout << "Brand " ; cout << M[i].brand << endl;
       cout << "The year it was made in " ; cout << M[i].year << endl;
       cout << "Color " ; cout << M[i].color << endl;
       cout << "Power " ; cout << M[i].horse_power << endl; 
       cout << "Number of seats " ; cout << M[i].no_seats << endl;
    }

}

int main()
{
    Car C[50];
    int n;

    read_cars(M, n);
    display_cars(M, n);

    return 0;
}

1 Ответ

0 голосов
/ 13 марта 2020

Вам необходимо добавить условие в l oop:

void display_cars(Car C[], int n)
{
    int i;
    for(i=1; i<=n; i++)
    {
       if(M[i].no_seats == 5)        //     <-   like this
       {
          cout << "Brand " ; cout << M[i].brand << endl;
          cout << "The year it was made in " ; cout << M[i].year << endl;
          cout << "Color " ; cout << M[i].color << endl;
          cout << "Power " ; cout << M[i].horse_power << endl; 
          cout << "Number of seats " ; cout << M[i].no_seats << endl;
       }
    }
}

Другие примечания:

  • Ваш n может только go до 49 - запомни это. Это также означает, что вы тратите элемент на M[0] (да, массивы равны нулю в C ++).
  • Предпочитаете использовать std::vector<Car> C над массивом фиксированного размера. std::vector увеличивается по мере того, как вы push_back добавляете в него все больше и больше элементов - и он отслеживает количество содержащихся элементов, поэтому вам не нужно передавать размер вектора вокруг. C.size() сообщит вам количество элементов.
void display_cars(const std::vector<Car>& C)
{
    std::cout << "There are " << C.size() << " cars in the vector\n";

    for(const Car& a_car : C)    // a range based for-loop
    {
        if(a_car.no_seats == 5)  // a_car will be a reference to each car in the loop
        {
            // use "a_car" to display info about one particular car
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...