Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.86/37: Рейтинг темы: голосов - 37, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 27.02.2021
Сообщений: 34

Функция, которая вставляет новый элемент за каждым вхождением заданного элемента

30.03.2021, 09:38. Показов 7779. Ответов 29

Студворк — интернет-сервис помощи студентам
Всем привет! Помогите пожалуйста выполнить следующее задание:
Написать программу, содержащую процедуру, которая вставляет новый элемент за каждым вхождением заданного элемента. Если элементы не найдены, то выдать на экран соответствующие сообщение.
Буду рад любым пояснениям и подсказкам
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.03.2021, 09:38
Ответы с готовыми решениями:

Составить программу, которая вставляет в список L новый элемент F перед первым вхождением элемента Е
на с++. Составить программу, которая вставляет в список L но¬вый элемент F перед первым вхождением элемента Е, если Е входит в L.

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

4. Написать программу, содержащую процедуру, которая вставляет новый элемент перед каждым вхождением заданного элемента. Если элементы не найдены, то
4. Написать программу, содержащую процедуру, которая вставляет новый элемент перед каждым вхождением заданного элемента. Если элементы не...

29
0 / 0 / 0
Регистрация: 27.02.2021
Сообщений: 34
31.03.2021, 11:15  [ТС]
Студворк — интернет-сервис помощи студентам
Вот что выходит в консоли:
Миниатюры
Функция, которая вставляет новый элемент за каждым вхождением заданного элемента  
0
0 / 0 / 0
Регистрация: 27.02.2021
Сообщений: 34
31.03.2021, 11:23  [ТС]
Теперь намного лучше, но есть еще небольшая проблемка:
Миниатюры
Функция, которая вставляет новый элемент за каждым вхождением заданного элемента  
0
1498 / 1213 / 821
Регистрация: 29.02.2016
Сообщений: 3,631
31.03.2021, 11:24
и еще, исходный список нужно переприсваивать каждый раз
0
0 / 0 / 0
Регистрация: 27.02.2021
Сообщений: 34
31.03.2021, 11:26  [ТС]
afront, когда я ввожу число, не находящееся в списке и добавляю после него число, равное какому-либо значению из списка, то программа не выдает ошибку

Добавлено через 43 секунды
Цитата Сообщение от afront Посмотреть сообщение
и еще, исходный список нужно переприсваивать каждый раз
это как?
0
1498 / 1213 / 821
Регистрация: 29.02.2016
Сообщений: 3,631
31.03.2021, 17:17
Headless Ghost2, тут много вариантов. Например, запомнить случайные числа в числовом массиве и каждый раз присваивать их значения в список. В общем нужно каждый раз список восстанавливать до исходного состояния
0
0 / 0 / 0
Регистрация: 27.02.2021
Сообщений: 34
31.03.2021, 18:18  [ТС]
Не могли бы вы подсказать, как это реализовать в коде?
0
1498 / 1213 / 821
Регистрация: 29.02.2016
Сообщений: 3,631
31.03.2021, 19:26
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
118
119
120
121
122
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <sstream>
#include <clocale>
#include <cmath>
#include <ctime>
#include <stdio.h>      
#include <stdlib.h>     
 
 
typedef struct Node* NodePtr;
 
 
struct Node
{
    int value;
    NodePtr next;
};
 
void Insert(NodePtr L, NodePtr E, NodePtr E1)
{
 
    NodePtr curr;
    NodePtr elem;
    int v, v1;
    v = E->value;
    v1 = E1->value;
    curr = L;
    while (curr)
    {
 
        if (curr->value == v)
        {
            elem = new Node();
            elem->value = v1;
            elem->next = curr->next;
            curr->next = elem;
        }
        curr = curr->next;
    }
    if (curr == L) 
        std::cout << "\nТакого числа нет";
}
int main(int argc, char** argv)
{
    setlocale(LC_CTYPE, "rus");
//  srand(time(NULL));
    NodePtr head = NULL;
    int arr[20];
    NodePtr* ptr = &head;
    for (int n = 1; n <= 20; ++n)
    {
        arr[n-1] = rand() % 4 + 1;
    }
    for (int n = 1; n <= 20; ++n)
    {
        *ptr = new Node;
        (*ptr)->value = arr[n - 1];
        ptr = &(*ptr)->next;
    }
    *ptr = NULL;
 
    std::cout << "Начальный список\n";
    NodePtr p = head;
    while (p)
    {
        std::cout << p->value << ' ';
        p = p->next;
    }
    std::cout << "\n";
 
 
 
 
    NodePtr ptr1 = new Node;
    int num, ask =-1;
    do
    {
        head = NULL;
 
         ptr = &head;
        for (int n = 1; n <= 20; ++n)
        {
            *ptr = new Node;
            (*ptr)->value = arr[n - 1];
            ptr = &(*ptr)->next;
        }
        *ptr = NULL;
        std::cout << "\nВведите элемент E: "; std::cin >> num;
        ptr1->value = num;
        NodePtr ptr2 = new Node;
        std::cout << "\nВведите элемент F: "; std::cin >> ask;
        ptr2->value = ask;
        p = head;
        Insert(p, ptr1, ptr2);
 
 
        p = head;
        std::cout << "\n";
        if (ask != 0)
        {
            while (p)
            {
                std::cout << p->value << ' ';
                p = p->next;
            }
            std::cout << "\n";
        }
        while (head)
        {
            NodePtr victim = head;
            head = head->next;
            delete victim;
        }
    }
    while (ask != 0);
 
    system("PAUSE");
    return 0;
}
0
0 / 0 / 0
Регистрация: 27.02.2021
Сообщений: 34
31.03.2021, 20:38  [ТС]
afront, всё равно не выдает сообщение об ошибке
0
1498 / 1213 / 821
Регистрация: 29.02.2016
Сообщений: 3,631
31.03.2021, 21:15
Лучший ответ Сообщение было отмечено Headless Ghost2 как решение

Решение

Тогда так
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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <sstream>
#include <clocale>
#include <cmath>
#include <ctime>
#include <stdio.h>      
#include <stdlib.h>  
#include <algorithm>  
 
 
typedef struct Node* NodePtr;
 
 
struct Node
{
    int value;
    NodePtr next;
};
 
void Insert(NodePtr L, NodePtr E, NodePtr E1)
{
 
    NodePtr curr;
    NodePtr elem;
    int v, v1;
    v = E->value;
    v1 = E1->value;
    curr = L;
    while (curr)
    {
 
        if (curr->value == v)
        {
            elem = new Node();
            elem->value = v1;
            elem->next = curr->next;
            curr->next = elem;
        }
        curr = curr->next;
    }
 
}
int main(int argc, char** argv)
{
    setlocale(LC_CTYPE, "rus");
    //  srand(time(NULL));
    NodePtr head = NULL;
    int arr[20];
    NodePtr* ptr = &head;
    for (int n = 1; n <= 20; ++n)
    {
        arr[n - 1] = rand() % 4 + 1;
    }
    for (int n = 1; n <= 20; ++n)
    {
        *ptr = new Node;
        (*ptr)->value = arr[n - 1];
        ptr = &(*ptr)->next;
    }
    *ptr = NULL;
 
    std::cout << "Начальный список\n";
    NodePtr p = head;
    while (p)
    {
        std::cout << p->value << ' ';
        p = p->next;
    }
    std::cout << "\n";
 
 
 
 
    NodePtr ptr1 = new Node;
    int num, ask = -1;
    int n = 20;
    do
    {
        head = NULL;
 
        ptr = &head;
        for (int n = 1; n <= 20; ++n)
        {
            *ptr = new Node;
            (*ptr)->value = arr[n - 1];
            ptr = &(*ptr)->next;
        }
        *ptr = NULL;
        std::cout << "\nВведите элемент E: "; std::cin >> num;
        ptr1->value = num;
        NodePtr ptr2 = new Node;
        std::cout << "\nВведите элемент F: "; std::cin >> ask;
        int *res = std::find(std::begin(arr), std::end(arr), num);
        if (res != std::end(arr))
        {
 
            ptr2->value = ask;
            p = head;
            Insert(p, ptr1, ptr2);
 
 
            p = head;
            std::cout << "\n";
            if (ask != 0)
            {
                while (p)
                {
                    std::cout << p->value << ' ';
                    p = p->next;
                }
                std::cout << "\n";
            }
            while (head)
            {
                NodePtr victim = head;
                head = head->next;
                delete victim;
            }
        }
 
        else
        {
            std::cout << "\nТакого числа нет";
        }
    }
        while (ask != 0);
 
        system("PAUSE");
        return 0;
    }
1
0 / 0 / 0
Регистрация: 27.02.2021
Сообщений: 34
31.03.2021, 21:22  [ТС]
afront, вот теперь точно всё Спасибо вам огромное!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.03.2021, 21:22

5. Написать программу, содержащую процедуру, которая вставляет новый элемент за каждым вхождением заданного элемента. Если элементы не найдены, то выд
5. Написать программу, содержащую процедуру, которая вставляет новый элемент за каждым вхождением заданного элемента. Если элементы не...

Написать программу, которая вставляет в список L новый элемент F за каждым вхождением элемента E
Друзья, доброго времени суток. Нужна помощь. Нужно по заданию: написать программу, которая вставляет в список L новый элемент F за...

Составить программу, которая вставляет в список L новый элемент F за каждым вхождением элемента E
помогите пож.

Описать процедуру, которая вставляет в список L новый элемент E1 за каждым вхождением элемента Е
Описать процедуру, которая вставляет в список L новый элемент E1 за каждым вхождением элемента Е

Написать функцию, которая вставляет в список M новый элемент Е1 за каждым вхождением элемента Е
вот программа,в нее нужно добавить вышеописанную функцию. ее прототип M* variant ();и вызов ее должен осуществляться через кейс case 4:. ...


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

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Новые блоги и статьи
Сезонность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы Всем привет! Хочу поделиться свежим (и довольно. . .
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения: - добавлена многоязычность - добавлено снятие скриншотов - добавлено поддержание бафов хождения по воде (для жреца, дк и шамана) - и так, по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru