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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.58
DonVito
0 / 0 / 0
Регистрация: 14.03.2013
Сообщений: 3
#1

Поиск элемента в двусвязном списке - C++

19.05.2013, 09:27. Просмотров 1736. Ответов 1
Метки нет (Все метки)

Элемент двусвязного списка точка(x,y). Нужно написать функцию для нахождения максимально удаленной точки от центра координат.

iterator - количество элементов в списке
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void List::FarAway(){
     Item *temp2=new Item;
     Item *temp=first, *p=first;
     int i=0;
     if (!first) return russia("Список пуст.\n");
     if(iterator==1){
         temp2->x=first->x; 
         temp2->y=first->y;
     } else{
     float max=sqrt((first->x)*(first->x)+(first->y)*(first->y));
     for(; temp != NULL; temp = temp->next){
         if(sqrt((temp->x)*(temp->x)+(temp->y)*(temp->y)) > max){
             temp2->x=temp->x;
             temp2->y=temp->y;
         }
     }
     while((p->x!=temp2->x) && (p->y!=temp2->y)){
         p=p->next;
         i++; 
     } 
     }
     russia("Максимально удаленная точка от центра координат: ");
     cout<<"Point"<<i+1<<" ("<<temp2->x<<";"<<temp2->y<<")\n";
Вот что у меня получилось. Но мне кажется это не совсем корректно. К тому же программа вылетает, если я добавлю точку в начало списка, расстояние до которой больше предыдущего максимального а затем вызову эту функцию.

Добавлено через 15 минут
Уже нашел ошибку, нужно было поставить >= в условии. Но вопрос по поводу корректности еще стоит
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.05.2013, 09:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Поиск элемента в двусвязном списке (C++):

Поиск элемента в двусвязном списке - C++
Подскажите пожалуйста. Нужно пройти по списку и найти слово по первой букве, запомнить адрес, и начиная от этого адреса пройтись влево и...

Реализовать поиск максимального элемента в двусвязном списке - C++
Помогите пожалуйста доделать код. Вместо блока удаление нужен осуществить поиск максимального элемента :help: #include &quot;stdafx.h&quot; ...

Нахождение элемента в двусвязном списке - C++
Суть в том, что у меня есть двусвязный список, в котором нужно выяснить есть ли в нём тот или иной элемент. #include &lt;iostream&gt; ...

Сдвиг элемента в двусвязном списке - C++
Нужна функция для сдвига элемента на заданной позиции на k позиций назад (влево) в двусвязном списке.

Поиск в двусвязном списке - C++
#include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;cstring&gt; #include &lt;windows.h&gt; using namespace std; struct element{ ...

Поиск в двусвязном списке - C++
Доброго времени суток. Помогите написать код, который ищет в двусвязном списке елемент по его значению. Тоесть идёт запрос в консоле...

1
Okonenko Stanis
6 / 6 / 1
Регистрация: 06.02.2013
Сообщений: 71
19.05.2013, 13:11 #2
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
// .........
void    List::FarAway()
{
    // создать "Звено", для хранения "макс. Звена".
    Item*   max_item = new      Item;   // ПОМЕНЯЛ temp2 -> max_item    !!!!!
//? // .........
//? Item    *temp = first,  *p = first;
//? // .........
//? int     i=0;
    // если "Список" - ПУСТ ...
    if ( !first )
    {
        russia( "Список пуст.\n" );
        return;
    }
    // индекс "макс. Звена".
    int     maks_ind = 0;
    // если в "Списке" - одно "Звено" ...
    if ( iterator == 1 )
    {
        // сохранить "макс. Звено".
        max_item->x = first->x;
        max_item->y = first->y;
    }
    // если в "Списке" - БОЛЕЕ одного "Звена" ...
    else
    {
        // расстояние от "0-го Звена" "Списка" до начала координат.
        float   max = sqrt( (first->x)*(first->x) + (first->y)*(first->y) );
        // индекс "очередного Звена" "Списка".
        int     i = 1;
        // по всем "Звеньям" "Списка", начиная с "1-го Звена" (исключая "0-е Звено").
        for ( Item* temp=first->next; temp!=NULL; temp=temp->next )
        {
            // если расстояние от "очередного Звена" до начала координат БОЛЬШЕ
            // уже найденного максимума ...
            if ( sqrt( (temp->x)*(temp->x) + (temp->y)*(temp->y) ) > max )
            {
                // пересохранить "макс. Звено".
                max_item->x = temp->x;
                max_item->y = temp->y;
                // индекс "макс. Звена".
                maks_ind = i;   //(int)
            }
            // увеличить индекс "очередого Звена" "Списка".
            i++;
        }
//?     //( ВСЕГО ЭТОГО НЕ НАДО! )
//?     // поиск индекса "макс. Звена".
//?     while ( p->x != max_item->x  && p->y != max_item->y )
//?     {
//?         p=p->next;
//?         i++;
//?     }
    }
 
    russia( "Максимально удаленная точка от центра координат: " );
    cout << "Point" << maks_ind+1 << " (" << max_item->x << ";" << max_item->y << ")\n";
}
- В библиотеках шаблонов STL, и не только в них, Iterator используется совсем в
другом смысле, но не для учета числа Звеньев в Списках или других контейнерах. В
реальной программе может возникнуть путаница! Лучше использовать, например, Items_Num
- число Звеньев, или что-то в этом роде.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.05.2013, 13:11
Привет! Вот еще темы с ответами:

Поиск в линейном двусвязном списке - C++
Программа реализует добавление, удаление элементов списка, просмотр списка и поиск элемента в списке. Проблема в том, что когда поиск...

Как организовать поиск в двусвязном списке? - C++
Есть класс двусвязный список где каждый элемент имеет большое количество полей (Имя, Фамилия, Отчество, номер телефона, дата рождения ) ,...

Вернуть 1, если в двусвязном списке содержится хотя бы 2 элемента с равными значениями - C++
Задание: На языке Си написать ф-цию, возвращающую значение 1, усли в двусвязном списке содержится хотя бы 2 эл-та с равными значениями...

Сортировка в двусвязном списке - C++
Здравствуйте! Есть класс List, в него вложен класс Node, в Node в качестве данных используется класс Circle Задание: Написать для...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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