Форум программистов, компьютерный форум CyberForum.ru

Сортировка по алфавиту - C++

Восстановить пароль Регистрация
 
jenya5455
1 / 1 / 0
Регистрация: 07.11.2012
Сообщений: 53
15.04.2013, 21:24     Сортировка по алфавиту #1
Вот программа , там сортировка по нумерации поездов, а нужна по ПУНКТАМ назначения, кто знает поправите, спасибо.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#include<iostream>
#include<conio.h>
#include<stdio.h>
#include<string.h>
 
using namespace std;
 
struct TRAIN
{
       char naz[80];
       int nom;
       float time;
};
 
void vvod(struct TRAIN *a, int n)
{
 
 for(int i=0; i<n; i++)
 {
  cout<<"Point of destination - "; // Ââåñòè ГЇГіГ*ГЄГІ Г*Г*Г§Г*Г*Г·ГҐГ*ГЁГї
  cin>>((a+i)->naz);
  cout<<"Number of the TRAIN - "; // Ââåñòè Г*îìåð ïîåçäГ*
  cin>>((a+i)->nom);
  cout<<"Departure time- "; // Ââåñòè âðåìÿ îòáûòèÿ
  cin>>((a+i)->time);
 }
 
}
 
void sort(struct TRAIN *a, int &n) // СОРТИРОВКА!!!!
{
 TRAIN p;
 
  cout<<"List TRAIN sorted on points of destination"<<endl;   // ÑîðòèðîâêГ* ïîåçäîâ ГЇГ® ìåñòГ*Г¬ Г*Г*Г§Г*Г*Г·ГҐГ*ГЁГї
  
  for(int i=0; i<n; i++)
  for(int j=0; j<(n-1); j++)
   {
    if (a[j].nom>a[j+1].nom) 
    {
                                   p=*(a+j);
                                   *(a+j)=*(a+j+1);
                                   *(a+j+1)=p;
                                  }
 
   }
}
 
void vivod(struct TRAIN *a, int n)
{int i,j;
    int look;
    TRAIN p;
    cout << "Will Enter time of the dispatch: \t" << endl; // Âåäèòå âðåìÿ îòïðГ*ГўГЄГЁ
    cin>>look;
    for (i=0; i<n; i++)
   {
    if((a+i)->time==look)
    {printf("\nPoint of destination:   \t%s", (a+i)->naz); // ГЏГіГ*ГЄГІ Г*Г*Г§Г*Г*Г·ГҐГ*ГЁГї
     printf("\nNumber of the TRAIN:   \t%d", (a+i)->nom);// Íîìåð ïîåçäГ*
     printf("\nDeparture time:   \t%2.2f", (a+i)->time);  // Âðåìÿ îòïðГ*âëåГ*ГЁГї
    }
  else cout<<"\nIn meringue no such TRAIN!"<<endl; // Г‚ ГЎГ*çå Г*ГҐГІ ГІГ*êîãî ïîåçäГ* 
   }
}
 
int main()
{
 struct TRAIN  *a;
 int n;
 cout<<"Will Enter amount a TRAIN: \t"<<endl; // Ââåñòè êîëè÷åñòâî ïîåçäîâ.
 cin>>n;
 a=new TRAIN [n+20];
 vvod(a, n);
 sort(a, n);
 vivod(a, n);
 
 system("pause");
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.04.2013, 21:24     Сортировка по алфавиту
Посмотрите здесь:

Сортировка по алфавиту C++
C++ Сортировка по алфавиту
Сортировка по алфавиту C++
C++ Сортировка по алфавиту
Сортировка по алфавиту C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
edw1n
 Аватар для edw1n
7 / 7 / 1
Регистрация: 12.11.2012
Сообщений: 114
15.04.2013, 21:38     Сортировка по алфавиту #2
C++
1
2
3
4
5
 for(int i=0; i<n; i++)
  for(int j=0; j<(n-1); j++)
   {
    if (a[j].naz>a[j+1].naz) 
    {
Но вам нужно перестановку тогда делать для всех членов структуры, иначе отсортируются только по пунктам назначения, а остальные не сдвинутся с места.

Условие для if - сравнение пунктов назначения, но перестановка для всех элементов, если условие выполнилось, то меняем местами и сам пункт и номер поезда и время отбытия.
zss
Модератор
Эксперт С++
 Аватар для zss
5946 / 5551 / 1784
Регистрация: 18.12.2011
Сообщений: 14,178
Завершенные тесты: 1
15.04.2013, 21:40     Сортировка по алфавиту #3
Сравниваются строки, поэтому надо использовать функцию strcmp():
C++
1
2
3
4
5
for(int i=0; i<n; i++)
  for(int j=0; j<(n-1); j++)
   {
    if (strcmp(a[j].naz,a[j+1].naz)==1) 
    {
edw1n
 Аватар для edw1n
7 / 7 / 1
Регистрация: 12.11.2012
Сообщений: 114
15.04.2013, 21:42     Сортировка по алфавиту #4
Цитата Сообщение от zss Посмотреть сообщение
C++
1
2
3
4
5
for(int i=0; i<n; i++)
  for(int j=0; j<(n-1); j++)
   {
    if (strcmp(a[j].naz,a[j+1].naz)==1) 
    {
Точно, это ж строки, поэтому лучше использовать функцию strcmp. А ещё когда будете переставлять пункты, то можно использовать strcpy.
jenya5455
1 / 1 / 0
Регистрация: 07.11.2012
Сообщений: 53
15.04.2013, 21:51  [ТС]     Сортировка по алфавиту #5
АГА спасибо вам всё НОРМ))))
Yandex
Объявления
15.04.2013, 21:51     Сортировка по алфавиту
Ответ Создать тему
Опции темы

Текущее время: 01:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru