0 / 0 / 0
Регистрация: 30.05.2018
Сообщений: 16
1

В списке удалить элементы равные полусумме своих соседей

09.06.2018, 09:35. Показов 500. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Список из n целых чисел a1,a2,...,an, Удалить элементы равные полусумме своих соседей в исходном списке
при тестировании на списке 12359 не правильно вывод результат: 91. ошибка в условии удаления.Помогите пожалуйста
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
#include <iostream>
using namespace std;
 
struct element //Структура с инфополями и адресным полем
{
    int x; //Инфополе. значения из x будут передаваться в список
    element *Next; //Адресное поле
};
 
class List //Класс Список
{
    element *Head; //Указатель на последний активный элемент или просто голова списка
public:
    List() { Head = NULL; } //Конструктор и инициализация указателя пустым значением
    ~List(); //Деструктор
    void Add(int x); //Функция для добавления значений в список
    void Show(); //Функция для отображения списка на экране
    bool try_to_del_element();
    void dell_them_all();
    void PoslList();
};
 
List::~List() //Деструктор вынесен за класс
{
    while (Head)  //Пока по адресу не пусто 
    {
        element *temp = Head->Next; //Временная переменная для хранения адреса следующего элемента
        delete Head; //Освобождаем адрес обозначающий начало
        Head = temp; //Меняем адрес на следующий
    }
}
 
void List::Add(int x) //Функция добавления элементов в список
{
    element *temp = new element; //При каждом вызове выделяется память
    temp->x = x; //Записываем x в элемент структуры  element (в x структуры element)
    temp->Next = Head; //Указываем, что след. элемент это объект по адресу Head
    Head = temp; //Указываем, что последний активный элемент это только что введенный
}
 
void List::Show() //Функция отображения списка на экране
{
    element *temp = Head; //Определяем указатель, который изначально он равен адресу начала списка
 
    while (temp != NULL) //До тех пор пока не встретит пустое значение
    {
        cout << temp->x << " "; //Выведет элемент x из списка
        temp = temp->Next; //Указываем, что далее нам нужен следующий элемент
    }
}
 
bool List::try_to_del_element() // при вводе 1 2 3 5 9
{                               
    bool deleted = false;     
    element *prev, *current, *next;
    current = Head;
    while ((prev = current) != NULL && (current = prev->Next) != NULL && (next = current->Next) != NULL)
    {
        if (prev->x + next->x == 2 * current->x)
        {
            prev->Next = next;
            delete current;
            current = next;
            deleted = true;
        }
    }
    return deleted;
}
 
void List::dell_them_all()
{
    while (try_to_del_element());
}
 
int main()
{
    setlocale(0, "rus");
    int N; //Число элементов в список
    int x; //Элементы вводимые в список
    List lst; //Переменная, тип которой список
 
    cout << "Введите размер списка: ";//7
    cin >> N; //Указали сколько элементов вводить в список
 
    for (int i = 0; i<N; i++)
    {
        cout << "A[" << i + 1 << "] = ";// 1 2 3 4 6 9 11
        cin >> x; //Ввод x с клавиатуры
        lst.Add(x); //Добавление элемента в список
    }
    cout << "\nТекущий список:\n";
    lst.Show(); //Вывод списка на экран
 
    lst.dell_them_all();
    cout << "\nРезультат:\n";
    lst.Show();// 1 2 6 9 11 удалены 3 и 4 
    system("pause");
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.06.2018, 09:35
Ответы с готовыми решениями:

В списке удалить элементы равные полусумме своих соседей
Дана задача &quot;Список из n целых чисел a1,a2,...,an, Удалить элементы равные полусумме своих соседей...

Найти и удалить в списке элементы, равные сумме своих соседей.
Пожалуйста помогите. Надо создать список произвольной длины. Найти и удалить элементы, равные сумме...

Удалить из списка элементы которые равны полусумме своих соседей
Помогите срочно...задача удалить из списка элементы которые равны полусумме своих соседей...я так...

Удалить все элементы, равные полусумме своих соседей в исходном списке
Дан список из n целых чисел a1, a2,..., an. Удалить все элементы, равные полусумме своих соседей в...

0
09.06.2018, 09:35
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.06.2018, 09:35
Помогаю со студенческими работами здесь

Удалить из одномерного массива все элементы, которые больше своих соседей, без изменения порядка
Удалить из одномерного массива все элементы, которые больше своих соседей, без изменения порядка.

Как в списке удалить все элементы, равные указанному
Люди добрые помогите пожалуйста очень срочно надо как в списке удали все эллементы равные...

Удалить из матрицы строки, в которых есть элементы, равные сумме своих индексов
Из-за работы не уделял внимания на учебный материал и сейчас не могу справится. Помогите написать...

Найти минимальный элемент в списке и удалить все элементы равные минимальному (файловый ввод/вывод)
Каждую задачу данного раздела решить, реализовав список в виде линейно связанной структуры: стека,...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru