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

Ошибка в коде (Ошибка сегментирования (core dumped)

12.07.2015, 12:50. Показов 889. Ответов 8
Метки нет (Все метки)

Добрый день.

Подскажите пожалуйста, где ошибка в коде?

C++
1
2
3
4
5
6
7
8
9
    char ch;
    string s;
 
    while ((ch = cin.get()) != '0' )
    {
        string::iterator i = s.begin();
        if(!isspace(ch)) ++i;
        s.insert(s.begin(),ch);
    }
Заранее спасибо.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.07.2015, 12:50
Ответы с готовыми решениями:

Ошибка сегментирования (core dumped)
собственно вот такая проблема: при попытке помять строки местами возникает сообщение "Ошибка...

Ошибка сегментирования (core dumped)
Такая проблема: при запуске программы, выдает ошибку "Ошибка сегментирования (core dumped)" Вот...

Ошибка сегментирования (core dumped)
Ошибка сегментирования (core dumped) вылазиет при запуске скомпилированной программы(компилировал в...

Ошибка сегментирования (core dumped)
Всё компилируется нормально (не считая ошибки: In file included from...

8
lss
936 / 864 / 356
Регистрация: 10.10.2012
Сообщений: 2,706
12.07.2015, 15:36 2
C++
1
2
3
4
5
6
7
8
9
    char ch;
    string s;
 
    while ((ch = cin.get()) != '\n' )
    {
        string::iterator i = s.begin();
        //if(!isspace(ch)) ++i;
        s.insert(s.begin(),ch);
    }
0
0 / 0 / 0
Регистрация: 12.07.2015
Сообщений: 6
12.07.2015, 20:33  [ТС] 3
Переписал код, сама программа должна выводить введенные числа через пробел в обратном порядке, на конце строки ввода 0, который выводить не нужно.

Выводит все ошибку.
Подскажите пожалуйста, как можно переместить вставку при инсерте в строку?
Без смещения работает, со смещением выдает ошибку сегментирования.
По примерам использования вроде все правильно...

C++
1
2
3
4
5
6
7
8
9
10
    char ch;
    string s;
    int i=0;
    while ((ch = cin.get()) != '0' )
    {
        if(!isspace(ch))i++;
        s.insert(s.begin()+i,ch);
    }
    s.erase(s.begin());
    cout << s << endl;
0
lss
936 / 864 / 356
Регистрация: 10.10.2012
Сообщений: 2,706
12.07.2015, 22:27 4
Цитата Сообщение от w0lfheart Посмотреть сообщение
сама программа должна выводить введенные числа через пробел в обратном порядке, на конце строки ввода 0, который выводить не нужно.
Пример ввода, и что должно получиться.
0
lss
936 / 864 / 356
Регистрация: 10.10.2012
Сообщений: 2,706
12.07.2015, 22:31 5
Так, что ли?
C++
1
2
3
4
5
6
7
8
9
10
11
12
char ch;
    string s;
    
    while ((ch = cin.get()) != '0' )
    {
        s.insert(s.begin(), ch);
        s.insert(s.begin(), ' ');
    }
    
    cout << s << endl;
    
    system("pause");
Миниатюры
Ошибка в коде (Ошибка сегментирования (core dumped)  
1
0 / 0 / 0
Регистрация: 12.07.2015
Сообщений: 6
12.07.2015, 22:36  [ТС] 6
Пример ввода и вывода:
Sample Input:
1 2 3 4 0
Sample Output:
4 3 2 1

Простой вывод делал, возникает не правильный вывод при вводе чисел: 100, 10 или любых чисел больше 9..
Для этого ввел сдвиг, а с ним теперь выдает ошибку..
0
lss
936 / 864 / 356
Регистрация: 10.10.2012
Сообщений: 2,706
13.07.2015, 00:17 7
Так?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
   string ins;
    string s;
    
    while ((cin >> ins))
    {
        if (ins != "0")
        {
            s.insert(s.begin(), ins.begin(), ins.end());
            s.insert(s.begin(), ' ');
        }
        else
            break;
            
    }
    
    cout << s << endl;
Миниатюры
Ошибка в коде (Ошибка сегментирования (core dumped)  
1
0 / 0 / 0
Регистрация: 12.07.2015
Сообщений: 6
13.07.2015, 10:08  [ТС] 8
Огромное спасибо.
Разобрался.
0
0 / 0 / 0
Регистрация: 12.07.2015
Сообщений: 6
14.07.2015, 20:42  [ТС] 9
Не долго радовался, вылезла новая проблема с недопонимаем..
Помогите плз, понять почему в функции не выполняется вторая часть (else)?
Функция соединяет два char*. и заканчивает строку нулем.

Заранее большое спасибо.


C++
1
2
3
4
5
6
7
void strcat(char *to, const char *from) {
    for (int k=0;to[k];k++)
    {
    if(*to != '\0')to++;
    else {*to = (*from?*from:'\0'); to++; from++;}
    }
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.07.2015, 20:42

Ошибка сегментирования (core dumped)
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; #include &lt;math.h&gt; int main() { int...

Связать Си и ассемблер: Ошибка сегментирования (core dumped)
Здравствуйте помогите разобраться почему не работает... пишет Ошибка сегментирования (core dumped)...

Ошибка сегментирования (core dumped) при обработке файла большого размера
Поблочно обрабытываю текстовый файл ~1,5 Гб, при достижении конца файла получаю: Ошибка...

Ошибка сегментации (core dumped)
Есть программа, реализующая неименованный программный канал. Первый процесс передает процессу...


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

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

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