0 / 0 / 0
Регистрация: 01.07.2013
Сообщений: 8
1

Удаления символов из строки

01.07.2013, 18:58. Показов 1898. Ответов 10
Метки нет (Все метки)

Доброго времени суток,в общем создалась проблема в написание программы,которая удаляет из строки все символы a и b,строку нужно ввести с клавиатуры,вроде как задача легкая,перепробовал множество вариантов,но всегда удаляет только до пробела,помогите,пожалуйста.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.07.2013, 18:58
Ответы с готовыми решениями:

Программа удаления из строки символов '0..9'
Программа удаления из строки символов '0..9' #include <iostream> #include <conio.h> using...

Ошибка в функции удаления символов из строки
Вот задача: Разработать класс содержащий: - компоненты данные - методы: а) конструктор по...

Функция удаления из строки n-символов, начиная с q-го
напишите функцию удаления из строки n-символов, начина с q-го

Создать контейнер класса с методами включения и удаления строки, очистки текста, подсчета количества символов
Помогите создать контейнер класса который является абстракцией текста с методами включения и...

10
Эксперт С++
4264 / 2238 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
01.07.2013, 19:00 2
попробуйте по аналогии:
Сжать строку, удалив из нее все пробелы
0
0 / 0 / 0
Регистрация: 01.07.2013
Сообщений: 8
01.07.2013, 19:03  [ТС] 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
#include<iostream>
#include<vector>
#include<string>
using namespace std;
void main()
{
    vector<string>vec;
    string s;
    {
        cin>>s;
    vec.push_back(s);
    }
    
    for(int i=0;i<s.size();i++)
 
    {
        
        if(s[i]=='a')
            s.erase(i,1);
            if(s[i]=='b')
                s.erase(i,1);
            
    }
cout<<s;
}
вот что-то такое
0
What a waste!
1607 / 1299 / 180
Регистрация: 21.04.2012
Сообщений: 2,727
01.07.2013, 19:07 4
i7ungvun, вектора зачем? Так не сойдёт?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <algorithm>
#include <string>
 
 
int main() {
   std::string string;
   std::getline(std::cin, string);
 
   std::string::iterator end = std::remove(string.begin(), string.end(), 'a');
   end = std::remove(string.begin(), end, 'b');
   string.erase(end, string.end());
 
   std::cout << string << std::endl;
}
0
0 / 0 / 0
Регистрация: 01.07.2013
Сообщений: 8
01.07.2013, 19:12  [ТС] 5
ну мы слегка по-другому пишем просто,не думаю,что примут такое,но всё равно спасибо,попробую что-нибудь по аналогии сделать.Но если ещё будут какие-нибудь другие варианты,буду рад.
0
What a waste!
1607 / 1299 / 180
Регистрация: 21.04.2012
Сообщений: 2,727
01.07.2013, 19:13 6
Цитата Сообщение от i7ungvun Посмотреть сообщение
ну мы слегка по-другому пишем просто,не думаю,что примут такое
Всмысле без алгоритмов (std::remove) ?
0
0 / 0 / 0
Регистрация: 01.07.2013
Сообщений: 8
01.07.2013, 19:16  [ТС] 7
да,такого нам не объясняли,если не сложно,можешь написать тоже самое,только более похоже на это
C++ (Qt)
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
#include<iostream>
#include<vector>
#include<string>
using namespace std;
void main()
{
    vector<string>vec;
    string s;
    {
        cin>>s;
    vec.push_back(s);
    }
    
    for(int i=0;i<s.size();i++)
 
    {
        
        if(s[i]=='a')
            s.erase(i,1);
            if(s[i]=='b')
                s.erase(i,1);
            
    }
cout<<s;
}
0
What a waste!
1607 / 1299 / 180
Регистрация: 21.04.2012
Сообщений: 2,727
01.07.2013, 19:18 8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <string>
 
 
int main() {
   std::string string;
   std::getline(std::cin, string);
 
   for (std::size_t i = 0; i != string.length(); ) {
      if ((string[i] == 'a') || (string[i] == 'b')) {
         string.erase(i);
      } else {
         ++i;
      }
   }
 
   std::cout << string << std::endl;
}
0
0 / 0 / 0
Регистрация: 01.07.2013
Сообщений: 8
01.07.2013, 19:24  [ТС] 9
gray_fox, ну если я не ошибаюсь,то это тоже удаляет только до пробела
0
What a waste!
1607 / 1299 / 180
Регистрация: 21.04.2012
Сообщений: 2,727
01.07.2013, 19:27 10
i7ungvun, мм не тот erase, поправил:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <string>
 
 
int main() {
   std::string string;
   std::getline(std::cin, string);
 
   for (std::size_t i = 0; i != string.length(); ) {
      if ((string[i] == 'a') || (string[i] == 'b')) {
         string.erase(i, 1);
      } else {
         ++i;
      }
   }
 
   std::cout << string << std::endl;
}
Добавлено через 37 секунд
http://ideone.com/0JiHdl
1
0 / 0 / 0
Регистрация: 01.07.2013
Сообщений: 8
01.07.2013, 19:57  [ТС] 11
gray_fox, спасибо,теперь осталось мне только преобразовать всё это в более привычный вид для себя и препода

Добавлено через 24 минуты
gray_fox, да есть же,заработало,спасибо ещё раз большое,спас меня
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.07.2013, 19:57
Помогаю со студенческими работами здесь

Написать программу удаления из текстового файла символов перевода строки ‘\n’ и перевода каретки ‘\r’
Здравствуйте,помогите написать программу на подобии этой,только не подсчета,а удаления.Заранее...

Получить из строк новую строку, содержащюю первые N1 символов строки S1 и последнии N2 символов строки S2
помогите написать программу на двух разных классах! 2) Даны целые положительные числа N1 и N2 и...

Добавление символов в массив char без удаления других
Есть у нас массив типа char , в который набрано текст. В нём есть несколько '1', после каждой мы...

Функция удаления символов заключенных между двумя заданными символами
Составить программу обработки массива символов с помощью указателей, которая вводит текст из...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru