Загрузка...

Table output

Thread in C/C++ created by xFlow May 23, 2023. 156 views

  1. xFlow
    xFlow Topic starter May 23, 2023 8 Aug 9, 2019
    подскажите кто-нибудь, как можно реализовать вывод данных в виде такой таблицы?
    [IMG]

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

    class Motorcycle {
    public:
    int oneSeat;
    int twoSeats;
    int threeSeats;
    int owners;
    string brand;

    Motorcycle() : oneSeat(0), twoSeats(0), threeSeats(0), owners(0), brand("") {}

    void input() {
    cout << "Enter the number of one-seat motorcycles: ";
    cin >> oneSeat;
    cout << "Enter the number of two-seat motorcycles: ";
    cin >> twoSeats;
    cout << "Enter the number of three-seat motorcycles: ";
    cin >> threeSeats;
    cout << "Enter the number of owners: ";
    cin >> owners;
    cout << "Enter the brand name: ";
    cin.ignore();
    getline(cin, brand);
    }

    void display() {
    cout << setw(8) << oneSeat << setw(8) << twoSeats << setw(8) << threeSeats;
    if (owners > 0)
    cout << setw(8) << owners;
    else
    cout << setw(16) << "";
    cout << setw(16) << brand << "\n";
    }

    bool isDucati() {
    return brand == "Ducati";
    }

    static bool compareByOwners(const Motorcycle& m1, const Motorcycle& m2) {
    return m1.owners > m2.owners;
    }
    };

    class MotorcycleList {
    private:
    static const int SIZE = 5;
    Motorcycle motorcycles[SIZE];

    public:
    void inputList() {
    cout << "Enter details for " << SIZE << " motorcycles:\n";
    for (int i = 0; i < SIZE; i++) {
    cout << "Motorcycle #" << (i + 1) << ":\n";
    motorcycles[i].input();
    }
    }

    void displayList() {
    cout << "Motorcycle List:\n";
    cout << setw(8) << "1-seat" << setw(8) << "2-seat" << setw(8) << "3-seat"
    << setw(8) << "Owners" << setw(16) << "Brand" << "\n";
    for (int i = 0; i < SIZE; i++) {
    motorcycles[i].display();
    }
    }

    void displayDucatiMotorcycles() {
    cout << "Ducati Motorcycles:\n";
    cout << setw(8) << "1-seat" << setw(8) << "2-seat" << setw(8) << "3-seat"
    << setw(8) << "Owners" << setw(16) << "Brand" << "\n";
    for (int i = 0; i < SIZE; i++) {
    if (motorcycles[i].isDucati()) {
    motorcycles[i].display();
    }
    }
    }

    void sortByOwners() {
    sort(motorcycles, motorcycles + SIZE, Motorcycle::compareByOwners);
    }
    };

    int main() {
    MotorcycleList list;
    list.inputList();

    cout << "---- Motorcycles List ----\n";
    list.displayList();

    cout << "---- Ducati Motorcycles ----\n";
    list.displayDucatiMotorcycles();

    cout << "---- Sorted by Owners ----\n";
    list.sortByOwners();
    list.displayList();

    system("pause");
    }
    код выше выводит таблицу в 5 раздельных столбцов
    [IMG]
     
  2. ChatGPT
    ChatGPT May 23, 2023 2250 Mar 14, 2023
    xFlow, для вывода таблицы в таком формате можно использовать функцию setw() из библиотеки iomanip. Вот пример кода, который выводит таблицу в нужном формате:

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

    int main() {
    cout << setw(10) << "Name" << setw(10) << "Age" << setw(10) << "Gender" << setw(10) << "City" << endl;
    cout << setw(10) << "John" << setw(10) << "25" << setw(10) << "Male" << setw(10) << "New York" << endl;
    cout << setw(10) << "Mary" << setw(10) << "30" << setw(10) << "Female" << setw(10) << "Los Angeles" << endl;
    cout << setw(10) << "Bob" << setw(10) << "40" << setw(10) << "Male" << setw(10) << "Chicago" << endl;
    return 0;
    }
    В этом примере мы используем функцию setw(10), чтобы задать ширину каждого столбца в 10 символов. Также мы используем endl, чтобы перевести курсор на новую строку после каждой записи.

    В твоём коде, чтобы вывести таблицу в нужном формате, ты можешь использовать функцию setw() в методе display() класса Motorcycle. Вот пример кода:

    Code
    void display() {
    cout << setw(8) << oneSeat << setw(8) << twoSeats << setw(8) << threeSeats << setw(8) << owners << setw(16) << brand << "\n";
    }
    В этом примере мы используем функцию setw() для каждого столбца таблицы. Также мы используем "\n", чтобы перевести курсор на новую строку после каждой записи.

    Надеюсь, это поможет тебе реализовать вывод таблицы в нужном формате. Если у тебя есть какие-либо вопросы, не стесняйся задавать их!
     
  3. Daemon
    Daemon May 23, 2023 1680 Jan 8, 2021
    Ну где ячейки объединены, использовать двойной отступ, как например последний столбец с вашего скриншота.
     
  4. KinetiK
    KinetiK May 23, 2023 20,066 Jan 18, 2020
    берешь табличку символов, ищешь нужные тебе символы для создания таблицы и хуяришь функцию обработки значений в цикле
     
  5. xFlow
    xFlow Topic starter May 23, 2023 8 Aug 9, 2019
    спасибо
     
Loading...
Top