структуры. не получается сортировка.

Тема в разделе "Общие вопросы по С и С++", создана пользователем grewnica, 11 май 2009.

Статус темы:
Закрыта.
  1. grewnica

    grewnica Гость

    описать структуру с именем train, содержащую след. поля:
    1)название пункта назначения
    2)номер поезда
    3)время отправления
    написать программу, выполняющую след. действия:
    1)ввод с клавиатуры данных в массив, состоящий из 8 элементов типа train, записи должны быть размещены в алфавитном орядке по названиям пунктов назначения
    2)вывод на экран информации о поездах, отправляющихся после введенного с клавы времени
    3)если таких нет, выдать соответствующее сообщение


    вот код:
    [codebox]#include <iomanip.h>
    #include <windows.h>
    #include <conio.h>

    char bufRus[256];

    char *Rus(const char *text)
    {
    CharToOem(text,bufRus);
    return bufRus;
    }

    struct TRAIN
    {
    char punkt[10];
    int number;
    int time[2];
    };

    int main()
    {
    //-----------Введение данных о маршруте----------------------------------------------------------------
    const int n = 8;
    TRAIN tran[n];

    for(int i = 0; i < n; i++)
    {
    system("cls");
    cout << Rus("Введите пункт назначения:");
    cin >> tran.punkt;

    cout << Rus("Введите номер маршрута:");
    cin >> tran.number;

    cout << Rus("Введите через пробел часы и минуты времени отправления:");
    cin >> tran.time[0] >> tran.time[1];
    }
    //------------Сортировка масива структур--------------------------------------------------------------
    for ( i=0 ; i<n-1 ; i++)
    {
    int imin = i;
    for (int j = i ; j<n ;j++)
    {

    for(int k = 0; ((tran[j].punkt[k] != 0) || (tran[imin].punkt[k] !=0)); k++)
    {
    if (tran[j].punkt[k] < tran[imin].punkt[k])
    {
    imin = j;
    break;
    }
    }
    }

    TRAIN tranVr = tran;
    tran = tran[imin];
    tran[imin] = tranVr;
    }
    //-------------------Вывод данных о маршруте-------------------------------------------------------------
    system("cls");
    cout << setfill('-') << setw(59) <<endl << setfill(' ');

    cout << Rus("| Номер маршрута ");
    cout << Rus("| Пункт назначения ");
    cout << Rus("| Время отпавления |") << endl;

    cout << setfill('-') << setw(59) <<endl << setfill(' ');

    for(i = 0; i < n; i++)
    {
    cout << '|' << setw(18) << tran.number << '|'
    << setw(18) << tran.punkt << '|'
    << setw(15) << tran.time[0] << ':' << setw(2) << setfill('0') << tran.time[1] << '|' << endl;

    cout << setfill('-') << setw(59) <<endl << setfill(' ') ;
    }
    getch();
    //---------Вывод номеров по заданному времени--------------------------------------------------------------

    int time_vr[2];

    cout << Rus("Введите время отправления через пробел: ");
    cin >> time_vr[0] >> time_vr[1];

    system("cls");
    cout << setfill('-') << setw(59) <<endl << setfill(' ');

    cout << Rus("| Номер маршрута ");
    cout << Rus("| Пункт назначения ");
    cout << Rus("| Время отпавления |") << endl;

    cout << setfill('-') << setw(59) <<endl << setfill(' ');

    bool bla = false;
    for(i = 0; i < n; i++)
    {
    if(time_vr[0] < tran.time[0])
    {
    cout << '|' << setw(18) << tran.number << '|'
    << setw(18) << tran.punkt << '|'
    << setw(15) << tran.time[0] << ':' << setw(2) << setfill('0') << tran.time[1] << '|' << endl;

    cout << setfill('-') << setw(59) <<endl << setfill(' ') ;
    bla = true;
    }
    else if(time_vr[0] == tran.time[0])
    {
    if(time_vr[1] < tran.time[1])
    {
    cout << '|' << setw(18) << tran.number << '|'
    << setw(18) << tran.punkt << '|'
    << setw(15) << tran.time[0] << ':' << setw(2) << setfill('0') << tran[i].time[1] << '|' << endl;

    cout << setfill('-') << setw(59) <<endl << setfill(' ') ;
    bla = true;
    }
    }
    }

    if(bla == false)
    {
    system("cls");
    cout << Rus("Поездов, отправляющихся после заданного времени нет!") << endl;
    }

    getch();
    return 0;
    }[/codebox][/i]
     
  2. grewnica

    grewnica Гость

    никто не поможет? (
     
  3. Гость

    То что очевидно: ты сделал сортировку не по тому признаку, по которому заявлено в условии задачи.
    Ты сделал по времени отправления, а в условии - по пункту назначения.
    может с этим проблема?
    Далее, сортировку можно сделать и по другому.
    Добавляешь в структуру два указателя типа самой структуры - prev и nex, указывающие соответственно на предведущий и на последующий элементы.
    Но в первую очередь проверь по какому условию ты сортируешь.
     
  4. grewnica

    grewnica Гость

    спасибо. уже сделала..
     
Загрузка...
Похожие Темы - структуры не получается
  1. dimat
    Ответов:
    0
    Просмотров:
    2.290
  2. Miroslava
    Ответов:
    4
    Просмотров:
    1.790
  3. NatNiM
    Ответов:
    5
    Просмотров:
    1.841
  4. TSoprano
    Ответов:
    1
    Просмотров:
    1.007
  5. vlada
    Ответов:
    6
    Просмотров:
    1.457
Статус темы:
Закрыта.

Поделиться этой страницей