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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 43, средняя оценка - 4.81
ArniLand
4 / 4 / 0
Регистрация: 07.09.2009
Сообщений: 190
#1

Поиск элемента списка Студентов с идеальной массой тела - C++

05.07.2010, 20:53. Просмотров 5389. Ответов 10
Метки нет (Все метки)

Нужно написать программу связанную с двусвязным списком и атд, помогите пожалуйста решить данную задачу, не могу найти теорию и примеры по списками, поэтому прошу вашей помощи. Заранее спасибо.
Суть задания:
1. Описания элемента двунаправленного списка из компонентов согласно варианту задания (табл.1).
2. Описания абстрактного типа данных (АТД) на объектно-ориентированном уровне инкапсуляции, в состав которого входят:
- Область значения: указательные на первый элемент двунаправленного списка;
- Область действия:
а) метод добавления элемента на n-на позицию списка (для инициирования компонент элемента списка необходимо использовать стандартные средства ввода данных);
б) метод удаления элемента n-ной позиции списка;
в) метод вывода всего списка (для этого необходимо использовать стандартные средства вывода данных);
г) метод вывода списка из n-элементов, начиная с первого;
д) метод сортировки списка по одной из действительных или целых компонент значений элементов списка по возрастанию.
3. Реализации АТД:
- Добавление нескольких элементов в список;
- Вывод элементов списка на экран в виде таблицы;
- Поиск элементов списка согласно варианту задания (табл.1) и вывод значений элементов на экран;
- Вывод обновленного списка на экран после каждого изменения состояния списка.

Вариант
1. Компоненты элемента списка -
1-я компонента: Имя - значение перечислительного типа;
2-я компонента: Рост - целое значение;
3-я компонента: Вес - действительное значение

2. Критерий для поиска элемента списка
Студентов с идеальной массой тела (формула: Рост-110 = Вес)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.07.2010, 20:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Поиск элемента списка Студентов с идеальной массой тела (C++):

Реализация списка.Удаление хвостового элемента.Поиск элемента - C++
Всем привет,мое задание выглядит так : В класс List<T> из классной работы добавить следующие методы: void addHead(T...

Удаление элемента из списка и поиск элемента - C++
Нужно удалить определенный элемент из списка. Найти элемент в списк и вывести на него всю информацию. Вот код. Не знаю как написать...

Поиск элемента списка - C++
Немогу понять в чем ошибка!! Неработает элемент списка поиска!! Подскажите где косяк #include <stdio.h> #include <alloc.h> ...

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

Структура: Организовать поиск элемента и проверку на совпадение его с минимальным элементом списка. - C++
Задачи программы. На входе задано линейный список М из n целых чисел. Известно, что большинство элементов этого списка равны нулю....

Вставка элемента в заданную позицию, удаление элемента по заданной позиции, поиск заданного элемента - C++
Добавить в класс "Односвязный список" следующие функции: вставка элемента в заданную позицию, удаление элемента по заданной позиции, поиск...

10
Qwerty_coder
29 / 29 / 2
Регистрация: 14.12.2009
Сообщений: 79
05.07.2010, 21:47 #2
ArniLand, если воспользуетесь поиском по форуму, то, возможно, найдете готовые примеры. По их аналогии и делайте свое задание
0
easybudda
Модератор
Эксперт CЭксперт С++
9663 / 5613 / 952
Регистрация: 25.07.2009
Сообщений: 10,777
05.07.2010, 22:53 #3
Цитата Сообщение от ArniLand Посмотреть сообщение
Имя - значение перечислительного типа
это как?
C++
1
enum { VASYA = 1, KOLYA = 2, PETYA = 3 };
так, не?

Добавлено через 54 секунды
а, не, это перечислимый тип, а надо "перечислительный"...
1
ArniLand
4 / 4 / 0
Регистрация: 07.09.2009
Сообщений: 190
05.07.2010, 23:35  [ТС] #4
подскажите хотя бы где терию с примерами можно почитать, а то темы с форума не сильно понятно и хочется вникнуть в процесс то оно да как
0
Mur3ik
102 / 102 / 4
Регистрация: 12.05.2010
Сообщений: 232
06.07.2010, 02:08 #5
что сложно создать 2 класса?
1й это объект списка
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Human
{
char FIO;
int height;
double waight;
Human *next;//указатель на следующий элемент, если последний то NULL
Human *prev;//указатель на предыдущий элемент, если первый то NULL
public:
....
};
class List//сам список
int size;//кол-во элементов
Human *first;//первый элемент 
Human *last;//последний элемент
public:
...
и элементарные методы...
0
ArniLand
4 / 4 / 0
Регистрация: 07.09.2009
Сообщений: 190
06.07.2010, 12:39  [ТС] #6
классы описывать и создавать методы я у мею, я к примеру не знаю и не догадываюсь зачем создавать указатели на предыдущий и следующий элементы и не понимаю по какому принципу добавлять, удалять, осуществлять поиск нужного элемента и т.д.
0
Mur3ik
102 / 102 / 4
Регистрация: 12.05.2010
Сообщений: 232
06.07.2010, 16:39 #7
Цитата Сообщение от ArniLand Посмотреть сообщение
я к примеру не знаю и не догадываюсь зачем создавать указатели на предыдущий и следующий элементы
чтобы знать какой за каким идет элемент, и чтобы с текущего можно было сдвинуться вперед или назад.
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
List::~List()//деструктор
    {
        Human *tmp;//временный указатель
        while(count>0)//пока есть элементы списка
        {
            tmp=first->get_next();// берем у первого элемента ссылку на следующий элемент и присваиваем его tmp
            delete first;//удаляем первый
            first=tmp;//первым становится следующий
            count--;//уменьшаем количество элементов на 1, и так по кругу :)
        }
    }
    List::List()
    {
        first=NULL;//нет ни первого ни последнего, элементов 0
        last=NULL;
        count=0;
    }
    void List::add(char* fio, int height, double weight)//добавление
    {
        Human *el= new Human(fio,height,weight);//создаем элемент который добавим в список
        if(!first)//если это первый элемент
            {first=el;}//назначаем его первым
        else//иначе
            {
                last->set_next(el);//последнему элементу устанавливаем что следующий будет el - который добавляем
                el->set_prev(last);//для элемента добавления устанавливаем, что текущий последний элемент наш предыдущий
            }
            last=el;//теперь последним является добавленный элемент
            count++;//+1 элемент.
    }
    void List::del(int pos, int num)//удаление, принимает позицию и количество элементов
    {
        if(pos+num<=count)
        {
        Human *tmp, *tmp2, *kill;
        int cpos=0;
        if(pos==0)
        {
        while(cpos<num)
        {
            tmp=first->get_next();
            delete first;
            first=tmp;
            first->set_prev(NULL);
            count--;
            cpos++;
        }
        }
        else
        {
        tmp=first;
        while(cpos<=pos)
        {
            cpos++;
            if(cpos==pos)
            {
                tmp2=tmp;
                for(int i=0;i<=num;i++)
                {
                    kill=tmp2;
                    tmp2=tmp2->get_next();
                    tmp2->set_prev(tmp);
                    if(i)delete kill;
                }
                tmp->set_next(tmp2);
                break;
            }
            tmp=tmp->get_next();
        }
        count-=num;
        }
        }
    }
2
ArniLand
4 / 4 / 0
Регистрация: 07.09.2009
Сообщений: 190
06.07.2010, 18:55  [ТС] #8
как классы List и HUMAN связанные между собой, через класс контейнер? И для делатьреализацию деструктора? Что можно почитать про двусвязный список и реализацию выше описанных задач, раз вы написали, значит не сами придумали
0
ArniLand
4 / 4 / 0
Регистрация: 07.09.2009
Сообщений: 190
06.07.2010, 22:50  [ТС] #9
подскажите, получиться ли реализовать данную программу с помощью стандартного <list>?
0
Mur3ik
102 / 102 / 4
Регистрация: 12.05.2010
Сообщений: 232
06.07.2010, 23:10 #10
ArniLand, стандартный список и есть реализацией списка, там уже написаны почти все методы что ты описал, однако если тебе дали такое задание, то значит тебе нужно написать свою собственную реализацию.
0
Хохол
Эксперт С++
475 / 443 / 13
Регистрация: 20.11.2009
Сообщений: 1,292
06.07.2010, 23:11 #11
Цитата Сообщение от ArniLand Посмотреть сообщение
1. Описания элемента двунаправленного списка из компонентов согласно варианту задания
Ну, первый же пункт задания вроде как намекает, что не получится.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.07.2010, 23:11
Привет! Вот еще темы с ответами:

Дублирование вхождения каждого элемента списка One и формирование из этих значений списка Double (пояснить условие) - C++
Здравствуйте. Вот собственно само задание: В составе программы описать функцию, которая дублирует вхождение каждого элемента списка One и...

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

Вывод списка студентов - C++
Помогите пожалуйста, вот пример #include &lt;stdio.h&gt; #include &lt;conio.h&gt; struct STUDENT { char fio; /*фамилия и.о. */ ...

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


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

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

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