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

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

Войти
Регистрация
Восстановить пароль
 
p1ka4y777
 Аватар для p1ka4y777
2 / 2 / 0
Регистрация: 04.10.2013
Сообщений: 155
#1

Абстрактный тип данных - C++

08.11.2013, 04:38. Просмотров 454. Ответов 6
Метки нет (Все метки)

Доброго времени суток! Помогите, пожалуйста, с заданием:
Создать список произвольной организации. Областью данных каждого элемента является строка, содержащая название геометрической фигуры, и площадь этой фигуры. Отсортировать все элементы списка в порядке убывания по названиям фигур (длиной строки) и затем в порядке возрастания по величине занимаемой площади (имеется в виду одноименные фигуры).
P.S. или дайте другие примеры программ, организованных по принципу "FIFO" или "LIFO"...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12537 / 7099 / 797
Регистрация: 27.09.2012
Сообщений: 17,521
Записей в блоге: 2
Завершенные тесты: 1
08.11.2013, 05:19     Абстрактный тип данных #2
Цитата Сообщение от p1ka4y777 Посмотреть сообщение
Помогите, пожалуйста
Давайте свое решение, поможем
Kuzia domovenok
 Аватар для Kuzia domovenok
1886 / 1741 / 117
Регистрация: 25.03.2012
Сообщений: 5,916
Записей в блоге: 1
08.11.2013, 06:16     Абстрактный тип данных #3
А при чем тут вообще последняя фраза про фифо-лифо? Фифо и лифо это не просто список, а очередь и стек соответственно!
Сортировать их бессмысленно, если соблюдается правило фифо(лифо).
p1ka4y777
 Аватар для p1ka4y777
2 / 2 / 0
Регистрация: 04.10.2013
Сообщений: 155
08.11.2013, 19:41  [ТС]     Абстрактный тип данных #4
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
А при чем тут вообще последняя фраза про фифо-лифо? Фифо и лифо это не просто список, а очередь и стек соответственно!
Сортировать их бессмысленно, если соблюдается правило фифо(лифо).
я просто читал о АТД и подумал, что задание связанное именно с этим... извините, ошибся значит... спасибо, за отзыв

Добавлено через 12 часов 51 минуту
значит нужно использовать двунаправленный список, на сколько я понял, да?
Max Dark
В поиске работы
 Аватар для Max Dark
1548 / 1401 / 501
Регистрация: 09.10.2013
Сообщений: 3,184
Записей в блоге: 8
Завершенные тесты: 2
08.11.2013, 19:59     Абстрактный тип данных #5
Цитата Сообщение от p1ka4y777 Посмотреть сообщение
Создать список произвольной организации
Список, судя по заданию, может быть любой структуры, главное чтобы вы смогли его отсортировать)
Kuzia domovenok
 Аватар для Kuzia domovenok
1886 / 1741 / 117
Регистрация: 25.03.2012
Сообщений: 5,916
Записей в блоге: 1
08.11.2013, 20:18     Абстрактный тип данных #6
сортировка пузырьком односвязного списка
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
#include <iostream>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <string>
using namespace std;
struct tElem{
    string name;
    int area;
    tElem *next;
};
tElem* sort_list_by_area(tElem *start){
   tElem *list_ptr;
   tElem *pre_ptr=NULL;
   bool run=true;
   while (run){
       run=false;
       list_ptr=start;
       while (list_ptr->next)
       {
           if (list_ptr->area > list_ptr->next->area){
               if (list_ptr==start){
                    start=list_ptr->next;
                    list_ptr->next=start->next;
                    start->next=list_ptr;
                }
                else{//все остальные случаи
                 pre_ptr->next=list_ptr->next;
                 list_ptr->next=list_ptr->next->next;
                 pre_ptr->next->next=list_ptr;
                }
                run=true;
               }
               pre_ptr=list_ptr;
               list_ptr=list_ptr->next;
            }
        } 
    return start;
}
tElem* make_list(int size){
    tElem* start=NULL;
    while (size--){
        tElem* e=new tElem;
        e->next=start;
        e->area=rand()%90+10;
        start=e;
    }
    return start;
}
void clear_list(tElem* start){
    if (start->next) clear_list(start->next);
    delete start;
}
void print_list(tElem* start){
    for(tElem* i=start; i!=NULL; i=i->next)
      cout<<" "<<i->area;
}
int main()
{
    srand(time(NULL));
    tElem* Mylist=make_list(10);
    print_list(Mylist);
    cout<<endl;
    Mylist=sort_list_by_area(Mylist);
    print_list(Mylist);
    clear_list(Mylist);
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.11.2013, 21:38     Абстрактный тип данных
Еще ссылки по теме:

C++ Абстрактный тип данных
Абстрактный тип данных C++
C++ Разработайте и реализуйте абстрактный тип данных для представления треугольника
C++ Разработайте и реализуйте абстрактный тип данных
C++ Разработать абстрактный тип данных (АТД) «Двусвязный циклический список»

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

Или воспользуйтесь поиском по форуму:
p1ka4y777
 Аватар для p1ka4y777
2 / 2 / 0
Регистрация: 04.10.2013
Сообщений: 155
08.11.2013, 21:38  [ТС]     Абстрактный тип данных #7
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
сортировка пузырьком односвязного списка
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
#include <iostream>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <string>
using namespace std;
struct tElem{
    string name;
    int area;
    tElem *next;
};
tElem* sort_list_by_area(tElem *start){
   tElem *list_ptr;
   tElem *pre_ptr=NULL;
   bool run=true;
   while (run){
       run=false;
       list_ptr=start;
       while (list_ptr->next)  \\ошибка при компиляции
       {
           if (list_ptr->area > list_ptr->next->area){
               if (list_ptr==start){
                    start=list_ptr->next;
                    list_ptr->next=start->next;
                    start->next=list_ptr;
                }
                else{//все остальные случаи
                 pre_ptr->next=list_ptr->next;
                 list_ptr->next=list_ptr->next->next;
                 pre_ptr->next->next=list_ptr;
                }
                run=true;
               }
               pre_ptr=list_ptr;
               list_ptr=list_ptr->next;
            }
        } 
    return start;
}
tElem* make_list(int size){
    tElem* start=NULL;
    while (size--){
        tElem* e=new tElem;
        e->next=start;
        e->area=rand()%90+10;
        start=e;
    }
    return start;
}
void clear_list(tElem* start){
    if (start->next) clear_list(start->next);
    delete start;
}
void print_list(tElem* start){
    for(tElem* i=start; i!=NULL; i=i->next)
      cout<<" "<<i->area;
}
int main()
{
    srand(time(NULL));
    tElem* Mylist=make_list(10);
    print_list(Mylist);
    cout<<endl;
    Mylist=sort_list_by_area(Mylist);
    print_list(Mylist);
    clear_list(Mylist);
    return 0;
}
ошибка при компиляции: 0xC0000005: нарушение прав доступа при чтении по адресу 0x00000020
Yandex
Объявления
08.11.2013, 21:38     Абстрактный тип данных
Ответ Создать тему
Опции темы

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