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

Оставить в строке только один экземпляр каждого встречающегося символа

09.01.2019, 12:35. Показов 1181. Ответов 4

Не понимаю почему выдаёт ошибку.
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
#include "pch.h"
#include <iostream>
#include <ctime>
#include <string>
#include <Windows.h>
#include <iomanip>
using namespace std;
class String
{
    int length;
    string str;
    void Input_string()
    {
        cout << "Input string: "; getline(cin, str); cout << endl;
        length = str.size();
    }
    void Change_string()
    {
        Input_string();
 
        for (size_t i = 0; i < length; i++)
        {
            for (size_t j = i; j < length; j++)
            {
                if (str[i] == str[j + 1])
                {
                    str.erase(str[i], 1);
                    break;
                }
            }
        }
        cout << "\nModified string: " << str << endl;
    }
public:
    void Start()
    {
        this->Change_string();
    }
};
 
 
 
 
 
 
 
int main()
{
    setlocale(LC_ALL, "rus");
    srand(time(0));
 
String a;
a.Start();
 
 
    cout << endl;
    return 0;
}
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.01.2019, 12:35
Ответы с готовыми решениями:

Оставить в строке только один экземпляр каждого встречающегося символа
Оставить в строке только один экземпляр каждого встречающегося символа.

Оставить в строке только один экземпляр каждого встречающегося символа.
оставить в строке только один экземпляр каждого встреяающегося символа.

Оставить в строке только один экземпляр каждого встречающегося символа
С клавиатуры вводится строка. Оставить в строке только один экземпляр каждого встречающегося...

Оставить в строке только один экземпляр каждого встречающегося символа
Задачка такова: Вводиться с клавиатуры предложение. Оставить в строке только один экземпляр...

4
3 / 3 / 1
Регистрация: 17.12.2018
Сообщений: 255
09.01.2019, 12:37  [ТС] 2
Скрин:
0
Миниатюры
Оставить в строке только один экземпляр каждого встречающегося символа  
Эксперт C
25816 / 16099 / 3454
Регистрация: 24.12.2010
Сообщений: 35,196
09.01.2019, 12:41 3
Лучший ответ Сообщение было отмечено Ivan _pupkin как решение

Решение

Цитата Сообщение от Ivan _pupkin Посмотреть сообщение
почему выдаёт ошибку.
Какую и где?

Добавлено через 3 минуты
Цитата Сообщение от Ivan _pupkin Посмотреть сообщение
str[j + 1]
Ясно. Выходишь за отведенную память. При j = length - 1
1
566 / 349 / 132
Регистрация: 15.09.2017
Сообщений: 1,239
09.01.2019, 13:00 4
Ivan _pupkin, Я бы так написал:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <string>
#include <set>
using namespace std;
 
int main(){
    char buf[81] = {0};
    cin.getline(buf, 80);
    set<char> s(buf, buf + 80);
    string str(s.begin(), s.end());
    cout << str << endl;
    
    return 0;
}
1
6240 / 4232 / 2444
Регистрация: 18.12.2017
Сообщений: 13,210
09.01.2019, 13:32 5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <string>
using namespace std;
 
int main()
{
    string s;
    cout << "String:\n";
    getline(cin, s);
    
    for (size_t i = 0; i < s.size() - 1; i++) 
    for (size_t j = i + 1; j < s.size(); j++) 
    if (s[i] == s[j]) {s.erase(j, 1);j--;}  
 
    cout <<s<<"\n";
system("pause");
return 0;
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.01.2019, 13:32

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Оставить в строке только один экземпляр каждого встречающегося символа
С клавиатуры вводится строка. Оставить в строке только один экземпляр каждого встречающегося...

Оставить в строке только один экземпляр каждого встречающегося символа
есть прога и есть задание: Оставить в строке только один экземпляр каждого встречающегося символа...

Оставить в строке только по одному экземпляру каждого символа
Задание: нужно оставить в строке только по одному экземпляру каждого символа (повторения учитывать...

Оставить в строке только первое вхождение каждого символа. Взаимный порядок оставленных символов сохранить
Решил данную задачу так: //Оставить в строке только первое вхождение каждого символа. Взаимный...


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

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

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