Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/16: Рейтинг темы: голосов - 16, средняя оценка - 4.75
0 / 0 / 2
Регистрация: 09.05.2010
Сообщений: 9
1

Вставка в вектор элементов с использованием итератора

17.10.2010, 11:42. Просмотров 3254. Ответов 2
Метки нет (Все метки)

Задание:
Напишите программу, сохраняющую в векторе числа, полученные из стандартного
ввода (окончанием ввода является число 0). Удалите все элементы, которые
делятся на 2 (не используете стандартные алгоритмы STL), если последнее
число 1. Если последнее число 2, добавьте после каждого числа которое делится
на 3 три единицы.

У меня не получается выполнить добавление 3-х единиц (последнее предложение задачи).
Мне кажется ошибка здесь элементарная, но где???
Параллельно буду сам разбираться.

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
//Директивы препроцессору о включении библиотек
#include <iostream> 
#include <vector> 
#include <conio.h>
  
using namespace std; 
 
// Основная программа
// arr - имя вектора
// i - число в векторе
 
int main() 
{ 
   // Вектор 
   vector<int> arr; 
   vector<int>::iterator Iter;
   
   //Описание типов переменных
   int i;
      
   //Вводим числа в векторе
   cout<<"Vvedite chisla v vector. Okonchanie vvoda - 0:"<<"\n";
    i=1;
    while (i!=0)
    {
        cin>>i;
        if (i!=0) arr.push_back(i);
    }
       
    // Печатаем неотсортированный вектор
    cout<<"Vector:"<<"\n";
    for (Iter = arr.begin(); Iter != arr.end(); Iter++) cout << *Iter <<" "; cout<<endl;
        
    // Удаляем элементы, которые делятся на 2, если последнее число в векторе 1 (работает)
    
    Iter--=arr.end();
    if (*Iter==1)
       {
       for (Iter=arr.begin(); Iter!=arr.end();)
           {
              if ((*Iter%2)==0) Iter = arr.erase(Iter);
              else Iter++;
           }  
       }
 
    // Вставляем три единицы после каждого числа, которое делится на 3 (не работает)
    if (*Iter==2)
      {
       for (Iter=arr.begin(); Iter!=arr.end();)
         {
            if ((*Iter%3)==0)
               {
            arr.insert(Iter,1,1);    ???????????
               }                            ???????????
            else Iter++;              ???????????
                 }
      }  
   // Вывод отредактированного вектора
     cout<<"Sorted Vector"<<"\n";
     for (Iter = arr.begin(); Iter != arr.end(); Iter++) cout << *Iter <<" ";   cout<<endl;
     getch();
     return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.10.2010, 11:42
Ответы с готовыми решениями:

Удаление элементов вектора с использованием итератора в STL
Задача: создать программу, в которую пользователь может ввести свой список из 50 названий игр, а...

Cоздание итератора с использованием шаблонов
Привет всем! Возникла следующая проблема в шаблонной функции класса возникоет следующая...

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

Удаление елемента списка с использованием итератора. STL
Надо удалить из списка елементы, значение которых входит в некий диапазон. Я хочу использовать для...

2
245 / 177 / 47
Регистрация: 14.06.2010
Сообщений: 422
17.10.2010, 12:48 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
#include <iostream> 
#include <vector> 
#include <conio.h>
 
using namespace std; 
 
int main() 
{ 
    std::vector<int>Arr;
    std::vector<int>::iterator Iter;
int i = 1;
 
while(i != 0)
{
    cin >> i;
    if(i != 0) Arr.push_back(i);
}
cout << "\n\n";
for(Iter = Arr.begin();Iter != Arr.end();++Iter) cout << *Iter << " ";
cout << "\n\n";
Iter--;
if(*Iter == 2){
        for(Iter = Arr.begin();Iter != Arr.end();++Iter){
            if(*Iter%3 == 0) {
                Iter = Arr.insert(Iter+1,3); 
                Iter = Arr.insert(Iter+1,3); 
                Iter = Arr.insert(Iter+1,3);
            }
        }
}
for(Iter = Arr.begin();Iter != Arr.end();++Iter) cout << *Iter << " " << endl;
 
getch();
return 0;
}
0
0 / 0 / 2
Регистрация: 09.05.2010
Сообщений: 9
17.10.2010, 13:18  [ТС] 3
Цитата Сообщение от NikolaWhite Посмотреть сообщение
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
#include <iostream> 
#include <vector> 
#include <conio.h>
 
using namespace std; 
 
int main() 
{ 
    std::vector<int>Arr;
    std::vector<int>::iterator Iter;
int i = 1;
 
while(i != 0)
{
    cin >> i;
    if(i != 0) Arr.push_back(i);
}
cout << "\n\n";
for(Iter = Arr.begin();Iter != Arr.end();++Iter) cout << *Iter << " ";
cout << "\n\n";
Iter--;
if(*Iter == 2){
        for(Iter = Arr.begin();Iter != Arr.end();++Iter){
            if(*Iter%3 == 0) {
                Iter = Arr.insert(Iter+1,3); 
                Iter = Arr.insert(Iter+1,3); 
                Iter = Arr.insert(Iter+1,3);
            }
        }
}
for(Iter = Arr.begin();Iter != Arr.end();++Iter) cout << *Iter << " " << endl;
 
getch();
return 0;
}

Спасибо за помощь, только нужно так Iter=Arr.insert(Iter+1,3);
А что это за город такой Санкт-Новгород???
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.10.2010, 13:18

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

Дан целочисленный вектор А(12), среди его элементов есть одинаковые. Создать вектор В из различных элементов вектора А
Дан целочисленный вектор А(12), среди его элементов есть одинаковые. Создать вектор В из различных...

Тело метода не может быть блоком итератора, так как "void" не является типом интерфейса итератора
using UnityEngine; using UnityEngine.UI; using System.Collections.Generic; using...

Класс "вектор" с конструкторами, позволяющими создать нулевой вектор и вектор с произвольным числом элементов
Привет! Задача следующая. Нужно реализовать класс &quot;вектор&quot; с конструкторами, которые позволяют...

Перебор элементов поимённо в цикле с помощью итератора
вопрос: на форме есть десять элементов: txtBox1 txtBox2 txtBox3 ... txtBox10 можно ли к...


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

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

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