jeudi 19 mai 2022

The loop in the DateEntry function does not work. for (int i = 0, i

The DateEntry function does not work properly. Allocated memory for data recording but the cycle ends quickly or endless depending on where to put the system ("pause"). Tried everything and so I can not understand the mistake. Loop: for (int i = 0; i <n; i++).

Function: DateEntry(Date* (&d), int &n);

Screen Error: enter image description here

My code:

Functions.cpp

#include "Functions.h"

void DataEntry(Date* (&d), int& n)
{
    cout << "Введiть скiльки маршутiв ви хочете добавити: ";
    cin >> n;

    d = new Date[n];
    int choose_m;
    for (int i = 0; i < n; i++) {
        cout << "Введiть iнформацiю про маршут:" << endl;
        cout << "Номер маршуту: ";
        cin >> d[i]._trans.num_t;
        cout << "Пункт Призначення: ";
        cin >> d[i]._trans.destination;
        cout << "Дистанцiя: ";
        cin >> d[i]._trans.distance;
        cout << "Мiсто виЇзду: ";
        cin >> d[i]._trans.city;

        cout << "Введiть iнформацiю про бiлет: " << endl;
        cout << "Номер бiлету: ";
        cin >> d[i]._tick.ID_tick;
        cout << "Мiсце продажi: ";
        cin >> d[i]._tick.place;
        cout << "Цiна: ";
        cin >> d[i]._tick.price;

        cout << "Введiть iмя Диспетчера: ";
        cin >> d[i]._dis.D_name; 
        
        cout << "Водiй: " << endl;
        cout << "Введiть iмя водiя: ";
        cin >> d[i]._driv.d_name;
        cout << "Номер телефону: ";
        cin >> d[i]._driv.num_phone;

        cout << "Автобус: " << endl;
        cout << "Номернi знаки автобуса: ";
        cin >> d[i]._b.num_bus;
        cout << "Модель: ";
        cout << "[0] - BMW" << endl;
        cout << "[1] - Mercedes" << endl;
        cout << "[2] - Hyundai" << endl;
        cin >> choose_m;
        switch (choose_m)
        {
        case 0: d[i]._b.model = "BMW"; break;
        case 1: d[i]._b.model = "Mercedes"; break;
        case 2: d[i]._b.model = "Hyundai"; break;
        }
        cout << "Колiр автобуса: "; 
        cin >> d[i]._b.color;

        cout << "_______________________________________" << endl;
    }
}
void Print(Date* d, int n)
{
    int _choose_;
    for (int i = 0; i < n; i++)
    {
        cout << "Перевезення #" << i + 1 << endl;
        cout << "Номер маршуту: " << d[i]._trans.num_t << "Номер бiлета:" << d[i]._tick.ID_tick << "Диспетчер: " << d[i]._dis.D_name << "Водiй: " << d[i]._driv.d_name << "Автобус:" << d[i]._b.num_bus << endl;
    }
    cout << "Вивести детальнiшу iнформацiю про маршут?" << endl;
    cout << "[1] - Так\t [2] - Нi" << endl;
    cin >> _choose_;

    int num_tt;
        switch (_choose_)
        {
        case 1: 
            cout << "Введiть номер маршуту: ";
            cin >> num_tt;
            system("cls");
            for (int i = 0; i < n; i++)
            {
                if (d[i]._trans.num_t == num_tt)
                {
                    int _choose_2;
                    cout << "Виберiть яку iнформацiю вивести: " << endl;
                    cout << "[0] - Маршут" << endl;
                    cout << "[1] - Бiлет" << endl;
                    cout << "[2] - Диспетчер" << endl;
                    cout << "[3] - Водiй" << endl;
                    cout << "[4] - Автобус" << endl;
                    cin >> _choose_2;
                    switch (_choose_2)
                    {
                    case 0:
                        for (int i = 0; i < n; i++) {
                            cout << "Маршут: " << endl;
                            cout << d[i]._trans.num_t << endl;
                            cout << d[i]._trans.destination << endl;
                            cout << d[i]._trans.distance << endl;
                            cout << d[i]._trans.city << endl;
                        }
                        break;
                    case 1: 
                        for (int i = 0; i < n; i++) {
                            cout << "Бiлет: " << endl;
                            cout << d[i]._tick.ID_tick << endl;
                            cout << d[i]._tick.price << endl;
                            cout << d[i]._tick.place << endl;
                        }
                        break;
                    case 2: 
                        for (int i = 0; i < n; i++) {
                            cout << "Диспетчер:" << endl;
                            cout << d[i]._dis.D_name << endl;
                        }
                        break;
                    case 3: 
                        for (int i = 0; i < n; i++)
                        {
                            cout << "Водiй: " << endl;
                            cout << d[i]._driv.d_name << endl;
                            cout << d[i]._driv.num_phone << endl;
                        }
                        break;
                    case 4: 
                        for (int i = 0; i < n; i++)
                        {
                            cout << "Автобус: " << endl;
                            cout << d[i]._b.num_bus << endl;
                            cout << d[i]._b.model << endl;
                            cout << d[i]._b.color << endl;
                        }
                        break;
                    }
                }
            }
        }
}
void EditDate(Date* (&d), int n)
{
    for (int i = 0; i < n; i++)
    {
        cout << "Перевезення #" << i + 1 << endl;
        cout << "Номер маршуту: " << d[i]._trans.num_t << "Номер бiлета:" << d[i]._tick.ID_tick << "Диспетчер: " << d[i]._dis.D_name << "Водiй: " << d[i]._driv.d_name << "Автобус:" << d[i]._b.num_bus << endl;
    }

    int _n;
    cout << "Введiть номер перевезання який хочете змiнити: ";
    cin >> _n;
    _n--;

    system("cls");
    int choose_m;
    if (_n > -0 && _n < n) {

        cout << "Введiть iнформацiю про маршут:" << endl;
        cout << "Номер маршуту: ";
        cin >> d[_n]._trans.num_t;
        cout << "Пункт Призначення: ";
        cin >> d[_n]._trans.destination;
        cout << "Дистанцiя: ";
        cin >> d[_n]._trans.distance;
        cout << "Мiсто виЇзду: ";
        cin >> d[_n]._trans.city;

        cout << "Введiть iнформацiю про бiлет: " << endl;
        cout << "Номер бiлету: ";
        cin >> d[_n]._tick.ID_tick;
        cout << "Мiсце продажi: ";
        cin >> d[_n]._tick.place;
        cout << "Цiна: ";
        cin >> d[_n]._tick.price;

        cout << "Введiть iмя Диспетчера: ";
        cin >> d[_n]._dis.D_name;

        cout << "Водiй: " << endl;
        cout << "Введiть iмя водiя: ";
        cin >> d[_n]._driv.d_name;
        cout << "Номер телефону: ";
        cin >> d[_n]._driv.num_phone;

        cout << "Автобус: " << endl;
        cout << "Номернi знаки автобуса: ";
        cin >> d[_n]._b.num_bus;
        cout << "Модель: ";
        cout << "[0] - BMW" << endl;
        cout << "[1] - Mercedes" << endl;
        cout << "[2] - Hyundai" << endl;
        cin >> choose_m;
        switch (choose_m)
        {
        case 0: d[_n]._b.model = "BMW"; break;
        case 1: d[_n]._b.model = "Mercedes"; break;
        case 2: d[_n]._b.model = "Hyundai"; break;
        }
        cout << "Колiр автобуса: ";
        cin >> d[_n]._b.color;

        cout << "_______________________________________" << endl;
    }
}

Functions.h

#pragma once
#include <iostream>
#include <string>

using namespace std;

struct Transportation // Маршут
{
    int num_t;
    string destination;
    int distance;
    int city;
};
struct Tickets // Бiлет
{
    int ID_tick;
    string place;
    double price;
};

struct Dispatcher // Диспетчер
{
    string D_name;
};

struct Driver // Водiй
{
    string d_name;
    int num_phone;
};
struct Bus {
    int num_bus;
    string model;
    string color;

};

struct Date {
    Transportation _trans;
    Tickets _tick;
    Dispatcher _dis;
    Driver _driv;
    Bus _b;
};

void DataEntry(Date* (&d), int &n);
void Print(Date* d, int n);
void EditDate(Date* (&d), int n);

Source.cpp

#include "Functions.h"

int start;
void Menu()
{
    cout << "Меню:" << endl;
    cout << "[0] - Вивести iнформацiю про касу" << endl;
    cout << "[1] - Створити новий маршут" << endl;
    cout << "[2] - Змiнити маршут" << endl;
    cout << "[3] - Вихiд" << endl;
    cin >> start;
}

void main() {
    setlocale(LC_ALL, "Russian");
    Menu();

    int amountofD = 0;
    string filename;

    Date* d = new Date[amountofD];
    while (start != 3)
    {
        switch (start)
        {
        case 0: 
            system("cls");

            if (amountofD != 0)
            {
                Print(d, amountofD);
            }
            else
            cout << "iнформацiя не iснує" << endl;
            system("pause");
            system("cls");
            Menu();
            break;
        case 1:
            DataEntry(d, amountofD);
            system("pause");
            system("cls");
            Menu();
            break;
        case 2: 
            system("cls");
            EditDate(d, amountofD); 
            Menu();
            break;
        }
    }
}

Aucun commentaire:

Enregistrer un commentaire