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

Найти пару чисел и вставить между ними цифру - C++

Восстановить пароль Регистрация
 
defetex
2 / 2 / 1
Регистрация: 08.03.2014
Сообщений: 45
08.03.2014, 20:00     Найти пару чисел и вставить между ними цифру #1
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
float a,b;
    cout<<"Enter a"<<endl;
    cin>>a;
    cout<<"Enter b"<<endl;
    cin>>b;
 
    
    it=el.begin();
    while(it!=el.end())
    {
        if(*it==a)
        {   it++;
            if(*it==b)
        {
                it--;
                el.insert(++it, 9);
            
            }}
        else if( it!=el.end()) it++;
 
        }
 
    for(it=el.begin();it!=el.end();it++)
    {
        cout<<*it<<" ";
    }
    cout<<endl;
Программа должна найти пару чисел и вставить между ними 9ку. Вроде работает, но не во всех случаях. Например если ввести 1 1 1 выкидывает с ошибкой
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.03.2014, 20:00     Найти пару чисел и вставить между ними цифру
Посмотрите здесь:

две строки... Соединить их ,вставить между ними соединительное слово... C++
C++ Задача на рекурсию. Найти кратчайшее расстояние между городами i и j даже если между ними нет прямой дороги
Скорость первого автомобиля V1 км/ч, второго — V2 км/ч, расстояние между ними S км. Определить расстояние между ними через T часов, если автомобили пе C++
C++ Даны два натуральных числа. Определить сколько чисел на отрезке между ними являются факториалами
Массивы. Вместо чисел, имеющих в составе цифру P, вставить сумму цифр этого числа C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Logumanov
 Аватар для Logumanov
15 / 11 / 2
Регистрация: 06.03.2014
Сообщений: 71
08.03.2014, 20:37     Найти пару чисел и вставить между ними цифру #2
Тебе же два числа ввести надо, а не три.
defetex
2 / 2 / 1
Регистрация: 08.03.2014
Сообщений: 45
08.03.2014, 20:42  [ТС]     Найти пару чисел и вставить между ними цифру #3
Logumanov, я о том, что есть список 1 1 1. Ввожу пару 1 1 чтобы между ними вставить 9ку и выдает ошибку.
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
08.03.2014, 21:04     Найти пару чисел и вставить между ними цифру #4
строка 12. it != end но ссылается на последний элемент списка. после
выполнения it++ итератор уже невалидный. его можно только с el.end() сравнивать.
но в строке 13 на это забивается и идет попытка разыменовывания:
if(*it==b)
defetex
2 / 2 / 1
Регистрация: 08.03.2014
Сообщений: 45
08.03.2014, 21:10  [ТС]     Найти пару чисел и вставить между ними цифру #5
DU, Не подскажите как можно решить эту проблему?
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
08.03.2014, 21:28     Найти пару чисел и вставить между ними цифру #6
бегать до предпоследнего а не до последнего:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
  std::list<int>::iterator end = el.end();
  --end;
 
  while (it != end)
  {
    if (*it == a)
    {
      it++;
      if (*it == b)
      {
        it--;
        el.insert(++it, 9);
      }
    }
    else if (it != end)
    {
      it++;
    }
  }
работать будет с std::list. для других контейнеров нужно учитывать
наступление невалидности итераторов после изменения контейнера.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.03.2014, 23:12     Найти пару чисел и вставить между ними цифру
Еще ссылки по теме:

Найти минимум и максимум в массиве, их номера, количество элементов между ними C++
C++ Написать функцию, принимающую параметрами 2 целых числа, и возвращающую сумму чисел из диапазона между ними
C++ Вместо чисел, имеющих в составе цифру P, вставить сумму цифр этого числа

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

Или воспользуйтесь поиском по форуму:
defetex
2 / 2 / 1
Регистрация: 08.03.2014
Сообщений: 45
08.03.2014, 23:12  [ТС]     Найти пару чисел и вставить между ними цифру #7
[img]http://i023.***********/1403/7a/78c0ed3428e6.jpg[/img]
Ничего не изменилось( Так же выдает ошибку

Добавлено через 1 час 22 минуты
Yandex
Объявления
08.03.2014, 23:12     Найти пару чисел и вставить между ними цифру
Ответ Создать тему
Опции темы

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