1 Востаннє редагувалося Slavik (20.12.2016 14:13:07)

Тема: потрібна допомога з написання структури С++

допоможіть потрібно впорядкувати записи за датою та часом відправлення поїзда

#include <iostream> 
#include <string> 
#include <conio.h> 

using namespace std;
void sort_poezd(struct TIMETABLE *TRAIN);
void sort_n(struct TIMETABLE *TRAIN);
struct TIMETABLE//структура
{
    string NAME;
    string NAZV;
    string NUMR;
    float DATE;
    float TIME;
};

void main()
{
    setlocale(LC_ALL, "");
    int n;



    cout << "Введите количество поездов ";
    cin >> n;
    TIMETABLE train[100];


    for (int i = 0; i < n; i++)
    {
        cout << "Введите номер " <<
            "поезда под номером " << i + 1 << " : ";
        cin >> train[i].NAME;
        cout << "Введите пункт призначення поезда №" <<
            train[i].NAME << " : ";
        cin >> train[i].NAZV;
        cout << "Введите дату отправления " <<
            train[i].NAZV << " : ";
        cin >> train[i].DATE;
        cout << "Введите время отправления " <<
            train[i].NAZV << " : ";
        cin >> train[i].TIME;

        if (train[i].DATE < 31.12) {
            cout << "ERROR" << endl;
        }
        if (train[i].TIME > 24.00)
        {
            cout << "error" << endl;
        }
        //тут потрібно відсортувати
    }
    system("pause");
}

2

Re: потрібна допомога з написання структури С++

У вас дуже невдалий формат для зберігання дат. Так, 3.10 у вас пізніше за 8.5, але раніше за 2.12 та 31.11. Є стандартний struct tm та time_t.

3

Re: потрібна допомога з написання структури С++

могли б винавести приклад?
з часом?

4

Re: потрібна допомога з написання структури С++

З часом наведем, а ви поки самі спробуйте

5 Востаннє редагувалося Betterthanyou (20.12.2016 16:00:50)

Re: потрібна допомога з написання структури С++

Ось підказка
Тут подивіться інформацію про ctime (бібліотека для часу)

#include <stdio.h>
#include <time.h>

int main(int argc, char *argv[])
{
    tm date1 = { 0 }; // структура для дати яку я введу сам
    
    date1.tm_year = 116;// 2016 - 1900 = 116
    date1.tm_mon = 11; //Грудень
    date1.tm_mday = 20; //20 день місяця
    date1.tm_hour = 15; //15 год
    date1.tm_min = 46; //46 хв

    time_t currentTime = time(nullptr); // поточний час

    printf("2016.12.20 15:46 = %.f seconds\n", difftime(currentTime, mktime(&date1))); // перетворюю дату (рік, місяць ... ) в секунди (з 1900 року), і дізнаюся різницю

    tm *date2; // структура для дати яка буде створена автоматично 

    date2 = gmtime(&currentTime); //перетворюю секунди в дату за UTC, а можна і локальну дату дізнатися
    
    date2->tm_hour += 2; // Україна + 2 за UTC

    printf("Current time is: %s", asctime(date2)); // виводжу 

    getchar();
    return 0;
}