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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.65
mell
0 / 0 / 0
Регистрация: 25.10.2008
Сообщений: 9
#1

Сортировка поля структуры по возрастанию - C++

26.10.2008, 00:08. Просмотров 3345. Ответов 5
Метки нет (Все метки)

Здравствуйте! Есть вот такой вопрос:
Есть программа печати расписания, вот ее код
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#include <iostream.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
 
const int N=80; 
struct Raspisanie
{
   char pre[N]; //predmet
   char prd[N]; //prepodavatel
   char gru[N]; //nomer gruppi
   char den[N]; //den nedeli
   char cha[N]; //chasi zanatiya
   int  aud;    //auditoria
};
 
void Gen(Raspisanie* ras) //generaciya raspisaniya
{
int ran; //dannaya peremennaya hranit randomnie zna4eniya;
  char* pre[N]={"Mat.An", "Fizika", "Informatika", "Fizra", "IG"};
  char* prd[N]={"Ivanov", "Petrov", "Medvedev", "Volkov", "Suvorov"};
  char* gru[N]={"M-3-6", "M-3-7", "M-3-8", "M-3-9", "M-3-10"};
  char* den[N]={"pon", "vto", "sre", "che", "pya"};
  char* cha[N]={"08.30-10.10", "10.20-12.00", "12.20-14.00", "14.10-15.50", "16.00-15.40"};
 
ran=(rand()%5);                     //generaciya predmeta
strcpy(ras->pre, pre[ran]);
 
ran=(rand()%5);                     //generaciya prepodavatela
strcpy(ras->prd, prd[ran]);
 
ran=(rand()%5);                     //generaciya slu4ainoi gruppi
strcpy(ras->gru, gru[ran]);
 
ran=(rand()%5);                     //generaciya slu4ainogo dna
strcpy(ras->den, den[ran]);
 
ran=(rand()%4);                     //generaciya slu4ainogo vremeni
strcpy(ras->cha, cha[ran]);
 
ras->aud=(rand()%100)+(rand()%100); //generaciya auditorii
}
 
void Print (Raspisanie ras) //pechat raspisaniya
{
 cout<<"Predmet      :     "<<ras.pre<<endl;
 cout<<"Prepodavatel :     "<<ras.prd<<endl;
 cout<<"Gruppa       :     "<<ras.gru<<endl;
 cout<<"Den          :     "<<ras.den<<endl;
 cout<<"Chasi        :     "<<ras.cha<<endl;
 cout<<"Audotoria    :     "<<ras.aud<<endl<<endl<<endl;
}
 
void main()
{
 randomize();
 
 Raspisanie R[4];
 int i;
 int exit=1;
 int menu=1;
 char temp[N];
 
 for (i=0; i<4; i++) Gen(&(R[i])); //generaciya;
 
 while (exit==1)
 {
 clrscr();
 
 cout<<"Menu:"<<endl<<endl;
 cout<<"1 - Generirovat raspisanie zanovo"<<endl;
 cout<<"2 - Uporyado4ennoe po dnyam nedeli"<<endl;
 cout<<"3 - Uporyado4ennoe po chasam"<<endl;
 cout<<"4 - Vivod neuporada4ennogo raspisaniya"<<endl;
 cout<<"0 - Vihod"<<endl;
 
 cin>>menu;
 cout<<endl<<endl;
 
 switch(menu) //perebor punktov menu
 {
  case 1: for (i=0; i<4; i++) Gen(&(R[i])); break;
 
 
 
/*
  case 2: 
 
 
*/
 
/*
  case 3: 
        
 
*/
  
 
 
 
 
  case 4: for(i=0; i<4; i++)
          {
        Print (R[i]); //vivod na pe4at
          } cout<<"najmite lubuu klavishu"; getch(); break;
  case 0: exit=0; break; //prekrashenie vipolneniya programmi
  }
  }
}
В кратце: из массива строк генерируется каждое поле структуры и выводится на печать, результат вот:
Predmet : Informatika
Prepodavatel : Medvedev
Gruppa : M-3-6
Den : sre //среда
Chasi : 12.20-14.00
Audotoria : 92


Predmet : Mat.An
Prepodavatel : Ivanov
Gruppa : M-3-9
Den : pon //понедельник
Chasi : 08.30-10.10
Audotoria : 102


Predmet : Mat.An
Prepodavatel : Ivanov
Gruppa : M-3-7
Den : che //четверг
Chasi : 14.10-15.50
Audotoria : 116


najmite lubuu klavishu
Требуется следущее, чтобы при выборе case 2: все это выводилось в упорядоченном виде по дням недели, тоесть :
Predmet : Mat.An
Prepodavatel : Ivanov
Gruppa : M-3-9
Den : pon //понедельник
Chasi : 08.30-10.10
Audotoria : 102

Predmet : Informatika
Prepodavatel : Medvedev
Gruppa : M-3-6
Den : sre //среда
Chasi : 12.20-14.00
Audotoria : 92

Predmet : Mat.An
Prepodavatel : Ivanov
Gruppa : M-3-7
Den : che //четверг
Chasi : 14.10-15.50
Audotoria : 116
А при выборе case 3: все это выводилось упорядоченно по времени вот так: ну собственно как на цитате выше(так получилось случайной генерацией).

Собственно мои соображения таковы:
Попытатся отсортировать массивы(пусть пузырьковым методом) сгенерированных строк поля den по возрастанию и вывесити его как-нибудь.

Прошу помощи, как это программно реализовать я не совсем понимаю, вернее совсем не понимаю.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.10.2008, 00:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сортировка поля структуры по возрастанию (C++):

Сортировка массива: сначала положительные по возрастанию, потом отрицательные по возрастанию - C++
Пользователь вводит массив чисел,нужно отсортировать его методом выбора,что бы сначала шли положительные числа,потом отрицательные...

Структуры. Сортировка массива структуры - C++
Здравствуйте! В чем моя ошибка?? Нужно отсортировать массив структуры по возрастанию среднего балла?? Делаю это с помощью...

Си++ -> структуры -> упорядочивание по возрастанию - C++
Прошу прощения за создание новой темы, но у меня большая просьба помогите пожалуйста решить задачу на Си++. Разработайте программу для...

Упорядочить номера маршрутов по возрастанию (структуры) - C++
Помогите пожалуйста как упорядочить номера маршрутов по возрастанию?? #include &lt;iostream&gt; #include &lt;string.h&gt; #include...

Закрытые поля структуры. - C++
Существуют ли закрытые поля структуры? Если да, то как их описывать? Добавлено через 39 минут 26 секунд Ну что никто не может...

Поля структуры в памяти - C++
Приветствую всех!!! Интересует следующий вопрос: есть какая нибудь любая структура, например: struct my_struct { int number; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
qwone
9 / 9 / 1
Регистрация: 18.08.2008
Сообщений: 129
26.10.2008, 01:13 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
 struct urok
{
int pre; //predmet
int prd; //prepodavatel
int gru; //nomer gruppi
int den; //den nedeli
int cha; //chasi zanatiya
int  aud;    //auditoria
};
struct Raspisanie
{
urok  Ras[N]
}
а теперь и переставляй уроки в расписании
сортировать лучше в int а при выводе на экран переводи в сообщения 1- ''pon"
mell
0 / 0 / 0
Регистрация: 25.10.2008
Сообщений: 9
26.10.2008, 13:22  [ТС] #3
Большое спасибо! Сейчас буду пробовать, что получится напишу попозже

Добавлено через 4 часа 22 минуты 16 секунд
чтото никак у меня не получается сообразить, можете примерно показать как это выглядить будет?
XuTPbIu_MuHTAu
Эксперт С++
2224 / 739 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
26.10.2008, 13:25 #4
mell, как обычная сортировка.Нужно сортировать по дню недели? сортируйте весь массив структур,сравнивая дни недели.Сортировать по времени?сортируйте,сравнивая время. Алгоритмы сортировки есть в C++ FAQ,тема закреплена как важная.
qwone
9 / 9 / 1
Регистрация: 18.08.2008
Сообщений: 129
26.10.2008, 19:13 #5
C++
1
2
if Ras.den[i]<Ras.den[j] 
           swap(Ras[i],Ras[i]) ;// если день урока i записи меньше дня урока j записи, то эти записи поменять местами
mell
0 / 0 / 0
Регистрация: 25.10.2008
Сообщений: 9
26.10.2008, 21:13  [ТС] #6
Господа, большое спасибо! Все получилось!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.10.2008, 21:13
Привет! Вот еще темы с ответами:

Недоступность поля структуры - C++
В одном заголовке имеется следующая запись: class Game; class Interface; class FS; class Settings; class ScriptEngine; class...

Поля структуры внутри класса - C++
Здравствуйте, почему при выполнении метода movingNode поля элемента структуры node (координаты x и y) не меняются? Метод: void...

Как перебрать поля структуры? - C++
возможно ли это в с++ ? (c# - GetFields)

Структуры. Ввод значения поля - C++
Проблема: при заполнении полей пишет переменная не инициализирована. Т.е. если я в коде инициализирую, то считает. А когда делаешь запрос...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
26.10.2008, 21:13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru