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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.67
Dimon 128500
0 / 0 / 0
Регистрация: 09.05.2010
Сообщений: 9
17.10.2010, 11:42     Вставка в вектор элементов с использованием итератора #1
Задание:
Напишите программу, сохраняющую в векторе числа, полученные из стандартного
ввода (окончанием ввода является число 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.10.2010, 11:42     Вставка в вектор элементов с использованием итератора
Посмотрите здесь:

Удаление элементов вектора с использованием итератора в STL C++
C++ проблема с созданием итератора с использованием шаблонов
Вставка элемента в вектор C++
C++ Удаление елемента списка с использованием итератора. STL
C++ Программа с использованием функции. По заданной квадратной матрицей розмиолм 10х10 построить вектор длиной 19
C++ Bз наибольших элементов каждой строки матрицы построить вектор.найти сумму элементов этого вектора
C++ Умножение матрицы на вектор с использованием функций
C++ Получить вектор age, в котором порядок элементов соответствовал бы порядку элементов вектора name

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TheMachinist
 Аватар для TheMachinist
242 / 174 / 15
Регистрация: 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;
}
Dimon 128500
0 / 0 / 0
Регистрация: 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);
А что это за город такой Санкт-Новгород???
Yandex
Объявления
17.10.2010, 13:18     Вставка в вектор элементов с использованием итератора
Ответ Создать тему
Опции темы

Текущее время: 15:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru