1

Тема: Розміщення за алфавітом в структурі

Привіт, допоможіть відсортувати структуру за алфавітним порядком по назвах пункту призначення

#include <iostream>
#include <iomanip>
#include <windows.h>

using namespace std;

struct TRAIN
{
    char item[15];
    int number;
    int time;
};
 
int main()
{
setlocale(0, "Rus");

int i, n=8;
TRAIN pot[n];

for(i=1; i<n; i++)
{
    cout<<"Данi про потяг "<<"\n";
    cout<<"Пункт призначення \t";
    cin>>pot[n].item;
    cout<<"Номер потяга \t";
    cin>>pot[n].number;
    cout<<"Час прибуття (год : хв) \t";
    cin>>pot[n].time;
    cout<<"\n";
}
 
}

2

Re: Розміщення за алфавітом в структурі

#include <algorithm>
...
int compare( const TRAIN *a, const TRAIN *b )
{
  return strcmp((char*)a->item,(char*)b->item);
}
...
qsort(pot, (size_t)n, sizeof(TRAIN  * ), compare );

Підходить?

Подякували: Arete1

3

Re: Розміщення за алфавітом в структурі

можливо я щось не так записав, та вибиває помилку

#include <iostream>
#include <iomanip>
#include <windows.h>
#include <algorithm>
 
using namespace std;
 
struct TRAIN
{
    char item[15];
    int number;
    int time;
};

int compare( const TRAIN *a, const TRAIN *b )
{
  return strcmp((char*)a->item,(char*)b->item);
}
 
int main()
{
setlocale(0, "Rus");
 
int i, n=8;
TRAIN pot[n];
 
qsort(pot, (size_t)n, sizeof(TRAIN  * ), compare );
for(i=1; i<n; i++)
{
    cout<<"Данi про потяг "<<"\n";
    cout<<"Пункт призначення \t";
    cin>>pot[n].item;
    cout<<"Номер потяга \t";
    cin>>pot[n].number;
    cout<<"Час прибуття (год : хв) \t";
    cin>>pot[n].time;
    cout<<"\n";
}
 
}

4 Востаннє редагувалося Itari (06.12.2015 18:08:52)

Re: Розміщення за алфавітом в структурі

По-перше: Про помилку треба повідомляти, а не чекати, коли хтось зазирне у хрустальний шар.
По-друге: Чому у тебе "n" не описана яка константа? Що в тебе за компілятор?
По-третє: Раджу частише зазирати до хелпу, де показано як що описується. Наприклад я не перевіряв приклад. Але мені це по цимбалах, а ось чому ти не перевірив й не прочитав тексти помилок невідомо.

int compare( const void *a, const void *b )
{
  return strcmp((char*)((TRAIN*)a)->item,(char*)((TRAIN*)b)->item);
}

Ну і нарешті: Чому сортування поставив до вводу даних? Де вивід даних?

Маємо: Повний нєуд по вмотивованості та хисту щось вирішити самостійно. Сідай - два.

Подякували: Yegor, koala2

5

Re: Розміщення за алфавітом в структурі

Itari написав:

Що в тебе за компілятор?

Нормальний сучасний компілятор з підтримкою C99/C++14.

Itari написав:

Маємо: Повний нєуд по вмотивованості та хисту щось вирішити самостійно. Сідай - два.

Що, вже почало набридати писати за інших код, тепер злість зриваєте? Не варто. Просто ставте питання і уточнюйте, що хочете побачити. Якщо людині це треба - то відповість. Образи тут не допомагають.