Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/15: Рейтинг темы: голосов - 15, средняя оценка - 5.00
1 / 1 / 2
Регистрация: 02.12.2013
Сообщений: 105

Дана последовательность целых чисел. Вставить новый элемент перед всеми четными элементами

09.06.2014, 23:23. Показов 3086. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дана последовательность целых чисел. Вставить новый элемент перед всеми четными элементами
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
#include <iostream>
#include <vector>
 
using namespace std;
 
int main()
{
    setlocale (LC_ALL, "");
    
vector <int> vec; 
 
int x,n;
char c;
cout<< "Ââåäèòå Äëèíó ïîñëåäîâàòåëüíîñòè n = "; cin >> n ; 
for (int i=0;i<n;i++)
{
cout<<"Ââåäèòå ÷èñëî äëÿ ýëåìåíòà ïîñëåäîâàòåëüíîñòè ¹ "<< i+1<<endl; 
cin>> x;
vec.push_back(x);
}
cout<<"Ââåäèòå íîâûé ýëåìåíò ÷èñëîì, êîòîðîå âñòàâèì ïåðåä ÷åòíûìè ýëåìåíòàìè:"<<endl;
cin>>c;
//ïðîâåðÿåì íà ÷åòíîñòü êàæäûé ýëåìåíò
int f=n;//õðàíèì çäåñü ðàçìåð âåêòîðà
for (vector <int>::iterator iter=vec.begin();iter<vec.end();iter++)
{
    if (vec[*iter]%2==0)
    {
        vec.insert(*iter, c);
        f++;
}
}
//âûâîäèì òî, ÷òî ïîëó÷èëîñü
cout<<"Âîò ÷òî ïîëó÷èëîñü: "<<endl;
for (int i=0;i<f;i++)
{
    
    cout<<vec[i]<<" ";
        
}
return 0;
}
Почему выдает ошибку компиляции?

Добавлено через 31 секунду
Указывается ошибка в строке 29, объясните что не так?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.06.2014, 23:23
Ответы с готовыми решениями:

Создать список из целых чисел. Перед всеми минимальными элементами вставить новый элемент
Создать список из целых чисел. После всех максимальных элементов вставить новый элемент. Подскажите в чём ошибка? #include...

Вставить новый элемент, перед всеми чётными элементами одномерного массива
3)В одномерном массив, элементы которого целые числа, произвести следующие действия: вставить новый элемент, перед всеми четными элементами

Вставить новый элемент перед всеми четными
Не могу найти ошибку. #include &lt;iostream&gt; using namespace std; int main() { int n; cout &lt;&lt; &quot;vvedi n : &quot;; cin...

9
zzzZZZ...
 Аватар для dzrkot
527 / 358 / 94
Регистрация: 11.09.2013
Сообщений: 2,041
09.06.2014, 23:51
Цитата Сообщение от filimoncc Посмотреть сообщение
Указывается ошибка в строке 29, объясните что не так?
ну посмотрите консттруктор vector.insert() и поймёте
http://www.cplusplus.com/refer... or/insert/

1)почему у вас вставляется тип char
2)почему вы разыменываете там итератор?
0
1 / 1 / 2
Регистрация: 02.12.2013
Сообщений: 105
10.06.2014, 00:19  [ТС]
Что значит разыменовывается? Поправьте код как надо, не понимаю.
0
zzzZZZ...
 Аватар для dzrkot
527 / 358 / 94
Регистрация: 11.09.2013
Сообщений: 2,041
10.06.2014, 07:57
Цитата Сообщение от filimoncc Посмотреть сообщение
Что значит разыменовывается? Поправьте код как надо, не понимаю.
только честно - вы этот код нашли или сами написали?
http://www.programmersclub.ru/10/
http://ci-plus-plus-snachala.ru/?p=34
0
81 / 80 / 9
Регистрация: 30.10.2013
Сообщений: 251
10.06.2014, 08:32
dzrkot прав
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
#include <iostream>
#include <vector>
 
using namespace std;
 
int main()
{
    setlocale (LC_ALL, "");
 
    vector <int> vec;
 
    int x,n;
    char c;
    cout<< "Введите Длину последовательности n = ";
    cin >> n ;
    for (int i=0; i<n; i++)
    {
        cout<<"Введите число для элемента последовательности № "<< i+1<<endl;
        cin>> x;
        vec.push_back(x);
    }
    cout<<"Введите новый элемент числом, которое вставим перед четными элементами:"<<endl;
    cin>>c;
//проверяем на четность каждый элемент
    int f=n;//храним здесь размер вектора
    for (vector <int>::iterator iter=vec.begin(); iter<vec.end(); iter++)
    {
        if (vec[*iter]%2==0)
        {
            vec.insert(iter,(int) c);
            f++;
        }
    }
//выводим то, что получилось
    cout<<"Вот что получилось: "<<endl;
    for (int i=0; i<f; i++)
    {
 
        cout<<vec[i]<<" ";
 
    }
    return 0;
}
1
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
10.06.2014, 13:18
chedman, как так вы разыменовываете итератор в строке 28?

Добавлено через 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
#include <iostream>
#include <vector>
 
using namespace std;
 
int main()
{
    setlocale (LC_ALL, "");
    
vector <int> vec; 
 
int x,n;
int c;
cout<< "Введите Длину последовательности n = "; cin >> n ; 
for (int i=0;i<n;i++)
{
cout<<"Введите число для элемента последовательности № "<< i+1<<endl; 
cin>> x;
vec.push_back(x);
}
cout<<"Введите новый элемент числом, которое вставим перед четными элементами:"<<endl;
cin>>c;
//проверяем на четность каждый элемент
int f=n;//храним здесь размер вектора
for (vector <int>::iterator iter=vec.begin();iter != vec.end(); iter++)
{
    if (!(*iter % 2))
    {
        vec.insert(iter, c);
        f++;
        iter++;
}
}
//выводим то, что получилось
cout<<"Вот что получилось: "<<endl;
for (int i=0;i<f;i++)
{
    
    cout<<vec[(unsigned int)i]<<" ";
        
}
return 0;
}
Вкратце, у вас (ТС) ошибки: в строке 28 - использование конструкции vec[*iter], когда нужен *iter; Ошибка в строке 29 с методом insert, а также очень хитрая ошибка с тем, что после вставки числа нужно провести инкремент оператора (в моем коде это строка iter++ после f++). И, конечно, в идеале, переменную f не нужно использовать, а вывод вектора сделать опять же через итераторы, а не индексирование.
0
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
10.06.2014, 13:24
Вот результат работы программы:
0
1 / 1 / 2
Регистрация: 02.12.2013
Сообщений: 105
10.06.2014, 15:00  [ТС]
Программа запускается и начинает принимать данные и работать до 34 строки. Почему дальше не работает? У меня лично зависает консоль и выдается ошибка.

Добавлено через 14 минут
FraidZZ, спасибо, все работает. Только непонятно зачем делать инкремент в 31 строке? (Однако без этого виснет прога). Объясните, пожалуйста.
0
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
10.06.2014, 15:11
filimoncc, итератор указывает после вставки на вставленный символ. После инкремента в for он оказывается перед тем самым символом, который только что был обработан. И обрабатывает его бесконечно.
1
1 / 1 / 2
Регистрация: 02.12.2013
Сообщений: 105
10.06.2014, 23:51  [ТС]
нашлась еще одна проблема, при размере вектора меньше 3-х элементов, программа так же вылетает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.06.2014, 23:51
Помогаю со студенческими работами здесь

Вставить новый элемент, перед всеми нечётными элементами одномерного массива
Вставить новый элемент, перед всеми нечётными элементами одномерного массива.

Вставить новый элемент перед всеми четными элементами
Не работает,помогите исправить static void Main() { Random rnd = new Random(); ...

Вставить заданное число в массив целых чисел перед всеми элементами, кратными числу a
Помогите решить задачу. Вставить заданное число в массив целых чисел перед всеми элементами, кратными числу a.

Вставить число 300 перед всеми четными элементами массива.
Дан массив В, состоящий из n элементов. Элементы массива ввести с использованием компонента Edit. Вставить число 300 перед всеми четными...

Вставить перед всеми четными отрицательными элементами массива квадрат их номера
Помогите решить Дан одномерный массив целых чисел. Вставить перед всеми четными отрицательными элементами квадрат их номера.


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru