Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
-1 / 0 / 1
Регистрация: 10.03.2015
Сообщений: 33

Сортировка списка

22.03.2015, 17:40. Показов 1032. Ответов 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
#include<iostream>
#include<string.h>;
using namespace std;
struct seans {
    char name[10];
    int a[2];
    int fulltime;
    int cost;
    seans* next;
};
void main()
{
    setlocale(LC_ALL, "Russian");
    seans *ferst = NULL; 
    seans *nov;
    char fname[10];
    int t[2];
    cout<<"Введите кол-во фильмов ";
    int n,a,sell,k;
    cin>>n;
    for(int i=1;i<n+1;i++)
    {   nov = new seans;
        cout<<"Название фильма "<<i<<" ";
        cin>>fname;
cout<<"Время начала ч ";
        cin>>t[0];
        cout<<"мин ";
        cin>>t[1];
        cout<<"Продолжительность "<<i<<" ";
        cin>>a;
        if(t[0]<6&t[0]>1) k=2; else if (t[0]>6&t[0]<14) k=3; else if (t[0]>14&t[0]<24) k=4;
        sell=a*k;
        strcpy(nov->name,fname);
        nov->a[0]=t[0];
        nov->a[1]=t[1];
        nov->fulltime = a;
        nov->cost = sell;
        nov->next = ferst;
        ferst = nov;
    }
    while (ferst)
    {   
        cout<<"Название фильма - \t";
        cout<<ferst->name<<"\n";
        cout<<"Время начала - \t";
      cout<<ferst->a[0]<<":"<<ferst->a[1]<<"\n";
      cout<<"Продолжительность - \t";
        cout<< ferst->fulltime<<"\n";
        cout<<"Стоимость билета - \t";
        cout<< ferst->cost<<"\n";
        ferst =ferst->next;
    }
    system("pause");
}
помогите пожалуйста уверен что там буквально 1-2 строчки необходима
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.03.2015, 17:40
Ответы с готовыми решениями:

"Сортировка двусвязного списка путем исключения элемента с минимальным значением и включения его в начало нового списка
Здравствуйте! Возникла проблема с программой. Тема: &quot;Сортировка двусвязного списка путем исключения элемента с минимальным значением и...

Сортировка списка
Здравствуйте!!! Прошу помочь мне написать алгоритм сортировки односвязного списка. Задание такое: необходимо из элементов трёх списков...

Сортировка списка
есть список list&lt;Student&gt; g (содержит n-ое количество экземпляров класса). Нужно сделать отдельную функцию которая принимает этот список и...

1
-1 / 0 / 1
Регистрация: 10.03.2015
Сообщений: 33
23.03.2015, 21:03  [ТС]
ау)

Добавлено через 2 часа 47 минут
Все переделал теперь есть сортировка подсчет стоимости в зависимости от времени начала и продолжительности при вводе массива name[10] на выводе получаю только 1 элемент букву из название остальное ------- непонятный символы подскажите что проглядел помогите плз осталось только чтобы поле name выводил полностью и все буду очень благодарен
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
110
111
112
113
114
115
116
117
#include <iostream>
 
using namespace std;
 
struct seans       //Структура являющаяся звеном списка
 {   char name[10];
     int t; 
     int m; 
     int fulltime;
     int cost;
     seans *Next,*Prev; //Указатели на адреса следующего и предыдущего элементов списка
 };
 
 class List   //Создаем тип данных Список
 {
     seans *Head,*Tail; //Указатели на адреса начала списка и его конца
     
 public:
     List():Head(NULL),Tail(NULL){}; //Инициализируем адреса как пустые
     ~List(); //Деструктор
     void Show(); //Функция отображения списка на экране
     void Add(char *name,int t,int m,int fulltime,int cost); //Функция добавления элементов в список
     void Sort(); 
 };
 
List::~List() //Деструктор
 {   
     while (Head) //Пока по адресу на начало списка что-то есть
     {
         Tail=Head->Next; 
         delete Head; 
         Head=Tail; 
     }
 }
 
 void List::Add(char *name,int t,int m,int fulltime,int cost)
 {
   seans *temp=new seans; 
   temp->Next=NULL;  
   *temp->name=*name;
   temp->fulltime=fulltime;
   temp->t=t;
   temp->m=m;
   temp->cost=cost;
   if (Head!=NULL) 
   {
       temp->Prev=Tail; 
       Tail->Next=temp; 
       Tail=temp; 
   }
   else //Если список пустой
   {
       temp->Prev=NULL; 
       Head=Tail=temp; 
   }
 }
 
 void List::Show()
 {
//ВЫВОДИМ СПИСОК С КОНЦА
     seans *temp=Tail;
      //Временный указатель на адрес последнего элемента
     while (temp!=NULL) //Пока не встретится пустое значение
     {
     cout<<"name "<<*temp->name<<"\n"; //Выводить значение на экран
     cout<<"timefull "<<temp->fulltime<<"\n";
     cout<<"begin h "<<temp->t<<":";
     cout<<temp->m<<"\n";
     if(temp->t<0||temp->t>24) cout<<"nevernoe vreme";
     else if(temp->t>19&&temp->t<23) temp->cost=35*temp->fulltime;  
     else if(temp->t>=14&&temp->t<19) temp->cost=25*temp->fulltime;
     else if(temp->t>=10&&temp->t<14) temp->cost=20*temp->fulltime;
     else  temp->cost=16*temp->fulltime;  
     cout<<"cost "<<temp->cost<<"\n";//стоимость в зависимости от времени и продлжительности фильма
     temp=temp->Prev; //Указываем, что нужен адрес предыдущего элемента
     }
     cout<<"\n";
 }
 void List::Sort()
 {
    seans * list = Head; 
    seans * node, * node2;
      for( node = list; node; node = node->Next )
        for( node2 = list; node2; node2 = node2->Next )
            if( ((node->t*60)+node->m) > ((node2->t*60)+node->m) ){ // меняет фильмы в зависимости от времени начала самый раний в начале списка
                char a=node->name[0];
                int i = node->fulltime;
                int s=node->cost;
                int j=node->t;
                int k=node->m;
                node->fulltime = node2->fulltime;
                node2->fulltime = i;
                node->name[0] = node2->name[0];
                node2->name[0] = a;
                node->cost = node2->cost;
                node2->cost = s;
                node->t = node2->t;
                node2->t = j;
                node->m = node2->m;
                node2->m = k;
            }
     std::cout<<"\n";
 }
int main ()
{
 system("CLS");
 List lst; 
 lst.Add("matrix",10,30,10,100); 
 lst.Add("atrix2",9,15,10,100);;
 lst.Add("trix3",15,11,10,100);;
 lst.Add("rix4",21,35,10,100);;
 lst.Show();
 lst.Sort();
  lst.Show();
 cout<<"\n"; 
  system("PAUSE");
}
Добавлено через 32 минуты
Все нашел в чем прикол надо копировать как строку через strcpy вот код если у кого будет подобное задание код универсальный можно преобразовать как хотите для поиска одного элемента из списка тоже подойдет вот готовый рабочий код обидно что никто не отозвался вроде cyberforum лучший считается
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
110
111
112
113
114
115
116
#include <iostream>
#include <string.h> 
using namespace std;
 
struct seans       //Структура являющаяся звеном списка
 {   char name[10];
     int t; 
     int m; 
     int fulltime;
     int cost;
     seans *Next,*Prev; //Указатели на адреса следующего и предыдущего элементов списка
 };
 
 class List   //Создаем тип данных Список
 {
     seans *Head,*Tail; //Указатели на адреса начала списка и его конца
     
 public:
     List():Head(NULL),Tail(NULL){}; //Инициализируем адреса как пустые
     ~List(); //Деструктор
     void Show(); //Функция отображения списка на экране
     void Add(char *name,int t,int m,int fulltime,int cost); //Функция добавления элементов в список
     void Sort(); 
 };
 
List::~List() //Деструктор
 {   
     while (Head) //Пока по адресу на начало списка что-то есть
     {
         Tail=Head->Next; 
         delete Head; 
         Head=Tail; 
     }
 }
 
 void List::Add(char *name,int t,int m,int fulltime,int cost)
 {
   seans *temp=new seans; 
   temp->Next=NULL;  
   strcpy(temp->name,name);
   temp->fulltime=fulltime;
   temp->t=t;
   temp->m=m;
   temp->cost=cost;
   if (Head!=NULL) 
   {
       temp->Prev=Tail; 
       Tail->Next=temp; 
       Tail=temp; 
   }
   else //Если список пустой
   {
       temp->Prev=NULL; 
       Head=Tail=temp; 
   }
 }
 
 void List::Show()
 {
//ВЫВОДИМ СПИСОК С КОНЦА
     seans *temp=Tail;
      //Временный указатель на адрес последнего элемента
     while (temp!=NULL) //Пока не встретится пустое значение
     {
     cout<<"name "<<temp->name<<"\n"; //Выводить значение на экран
     cout<<"timefull "<<temp->fulltime<<"\n";
     cout<<"begin h "<<temp->t<<":";
     cout<<temp->m<<"\n";
     if(temp->t<0||temp->t>24) cout<<"nevernoe vreme";
     else if(temp->t>19&&temp->t<23) temp->cost=35*temp->fulltime;  
     else if(temp->t>=14&&temp->t<19) temp->cost=25*temp->fulltime;
     else if(temp->t>=10&&temp->t<14) temp->cost=20*temp->fulltime;
     else  temp->cost=16*temp->fulltime;  
     cout<<"cost "<<temp->cost<<"\n";//стоимость в зависимости от времени и продлжительности фильма
     temp=temp->Prev; //Указываем, что нужен адрес предыдущего элемента
     }
     cout<<"\n";
 }
 void List::Sort()
 {
    seans * list = Head; 
    seans * node, * node2;
      for( node = list; node; node = node->Next )
        for( node2 = list; node2; node2 = node2->Next )
            if( ((node->t*60)+node->m) > ((node2->t*60)+node->m) ){ // меняет фильмы в зависимости от времени начала самый раний в начале списка
                for(int i=0;i<10;i++)
                swap(node->name[i],node2->name[i]);
                int i = node->fulltime;
                int s=node->cost;
                int j=node->t;
                int k=node->m;
                node->fulltime = node2->fulltime;
                node2->fulltime = i;
                node->cost = node2->cost;
                node2->cost = s;
                node->t = node2->t;
                node2->t = j;
                node->m = node2->m;
                node2->m = k;
            }
     std::cout<<"\n";
 }
int main ()
{
 system("CLS");
 List lst; 
 lst.Add("matrix",10,30,10,100); 
 lst.Add("nemo",9,15,10,100);;
 lst.Add("pirat",15,11,10,100);;
 lst.Add("zlo",21,35,10,100);;
 lst.Show();
 lst.Sort();
  lst.Show();
 cout<<"\n"; 
  system("PAUSE");
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.03.2015, 21:03
Помогаю со студенческими работами здесь

Сортировка списка
Здравствуйте, не совсем понимаю как должна быть реализована сортировка вставками в деке. Что имеется на данный момент: class List...

Сортировка списка
Нужно отсортировать списком класс Flight. class Flight { public: char flight_ID; char city_of_departure;

Сортировка списка
Всем привет) Нужно реализовать сортировку списка, линейного однонаправленного. Написал, но что-то как-то не правильно... void...

Сортировка списка
Помогите пожалуйста, нужна сортировка методом вставок односвязанного кольцевого списка, не пойму как делать. Со списками ток начал...

Сортировка списка
помогите сделать сортировку по возрасту, а то ничего не выходит #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; ...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru