Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
triadec_96
12 / 12 / 8
Регистрация: 27.12.2012
Сообщений: 448
Завершенные тесты: 1
1

Ошибка в роботе с контейнером: set iterator not incrementable

03.12.2013, 12:54. Просмотров 677. Ответов 6
Метки нет (Все метки)

Задание:Дано предложение.Какие большие и маленькие буквы с этих 'k','p','s','t','f','h','c' не содержатся в предложении.
Обязательным условием написания программы есть использование контейнера set.
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
#include <iostream>
#include <set>
#include <conio.h>
#include <string>
using namespace std;
void main()
{
    set<char> c;
    set<char>::iterator it;
    char a[14]={'k','p','s','t','f','h','c','K','P','S','T','F','H','C'};
    string str;
    getline(cin,str);//считую предложение
    int i;
    for(i=0,it=c.begin();i<sizeof(str);i++,it++)//забиваю его в сет
        c.insert(str[i]);
    bool l[14];//каждый l отвечает своей букве в массиве символов "а"
    for(it=c.begin();it!=c.end();it++)
        for(i=0;i<14;i++)
            if(*it==a[i]) l[i]=1;//проверка наличия символа в сете
    cout<<"Nemaye takyh liter:";
    for(i=0;i<14;i++)//вывод символов,которые отсутствуют
        if(l[i]==0) cout<<a[i]<<" ";
    getch();
}
Но после ввода предложения выбивает ошибку:set iterator not incrementable.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.12.2013, 12:54
Ответы с готовыми решениями:

Ошибка list iterator not incrementable
код: std::list&lt;Platform * &gt; Platform::Platform_list; //статическое поле...

Ошибка при запуске программы "vector iterator not incrementable"
при запуске программы (без разницы какой функции) вылетает ошибка (заг. темы)...

Vector iterator not incrementable
Здравствуйте. Подскажите, из-за чего не работает код? При запуске программы...

Синхронизация map и vector. Iterator not incrementable
День добрый. Надо синхронизровать vector и map, чтобы в них были только...

Ошибка Expression: map/set iterator not dereferencable
Здравствуйте! Мне нужно вывести контейнер map в обратном порядке. Делаю...

6
ForEveR
В астрале
Эксперт С++
7997 / 4755 / 652
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
03.12.2013, 12:59 2
triadec_96, Зачем в первом цикле вообще используется переменная it?
1
triadec_96
12 / 12 / 8
Регистрация: 27.12.2012
Сообщений: 448
Завершенные тесты: 1
03.12.2013, 13:16  [ТС] 3
Цитата Сообщение от ForEveR Посмотреть сообщение
Зачем в первом цикле вообще используется переменная it?
Понял.Спасибо)
Но теперь выбивает ошибку: string subscript out of range.
Но выбивает её только тогда,когда нету в предложении каких-то заданых букв.

Добавлено через 15 минут
Строки 14-15
C++
1
2
for(i=0;i<sizeof(str);i++)
        c.insert(str[i]);
0
ForEveR
В астрале
Эксперт С++
7997 / 4755 / 652
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
03.12.2013, 13:20 4
triadec_96, sizeof(str) это размер объекта string. Для кол-ва символов используйте str.size() или str.length().
1
triadec_96
12 / 12 / 8
Регистрация: 27.12.2012
Сообщений: 448
Завершенные тесты: 1
03.12.2013, 13:23  [ТС] 5
Цитата Сообщение от ForEveR Посмотреть сообщение
triadec_96, sizeof(str) это размер объекта string. Для кол-ва символов используйте str.size() или str.length().
Спасибо.А какая разница между sizeof(str) и str.size().Они дают разные значения?
Теепрь 14-я строка имеет такой вид:
C++
1
for(i=0;i<str.size();i++)
Но когда ввожу "kp KP ",то в результате ничего не выводится.Типа все буквы есть в сете.
0
ForEveR
В астрале
Эксперт С++
7997 / 4755 / 652
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
03.12.2013, 14:01 6
triadec_96, Да, они дают разные значения.
0
Alex5
1123 / 784 / 232
Регистрация: 12.04.2010
Сообщений: 2,012
03.12.2013, 16:43 7
triadec_96, Из-за того, что массив l[] не инициализирован, там (с большой вероятностью) все элементы true. Так как любое ненулевое целое после приведения к типу bool даёт true.
Попробуйте написать
C++
1
bool l[14] = { false };//каждый l отвечает своей букве в массиве символов "а"
1
03.12.2013, 16:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.12.2013, 16:43

map/set iterator not dereferencable
map&lt;string,int&gt; optimized(map&lt;string,int&gt;&amp;dict){ map&lt;string,int&gt;::iterator...

Map/set!( iterator not dereferencable)
Есть функция,в которой происходит поиск в map по ключу. Если по данному ключу...

Map/set iterator not dereferencable
Всем доброго времени суток. Суть задания в том, чтобы удалить повторы...


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

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

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