Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
i7ungvun
0 / 0 / 0
Регистрация: 01.07.2013
Сообщений: 8
#1

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

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

Доброго времени суток,в общем создалась проблема в написание программы,которая удаляет из строки все символы a и b,строку нужно ввести с клавиатуры,вроде как задача легкая,перепробовал множество вариантов,но всегда удаляет только до пробела,помогите,пожалуйста.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.07.2013, 18:58
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Удаления символов из строки (C++):

Программа удаления из строки символов '0..9' - C++
Программа удаления из строки символов '0..9' #include <iostream> #include <conio.h> using namespace std; int main(int...

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

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

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

Написать программу удаления из текстового файла символов перевода строки ‘\n’ и перевода каретки ‘\r’ - C++
Здравствуйте,помогите написать программу на подобии этой,только не подсчета,а удаления.Заранее благодарен! #include <stdio.h> int...

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

10
Thinker
Эксперт С++
4229 / 2203 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
01.07.2013, 19:00 #2
попробуйте по аналогии:
Сжать строку, удалив из нее все пробелы
0
i7ungvun
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
gray_fox
What a waste!
1522 / 1227 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
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
i7ungvun
0 / 0 / 0
Регистрация: 01.07.2013
Сообщений: 8
01.07.2013, 19:12  [ТС] #5
ну мы слегка по-другому пишем просто,не думаю,что примут такое,но всё равно спасибо,попробую что-нибудь по аналогии сделать.Но если ещё будут какие-нибудь другие варианты,буду рад.
0
gray_fox
What a waste!
1522 / 1227 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
01.07.2013, 19:13 #6
Цитата Сообщение от i7ungvun Посмотреть сообщение
ну мы слегка по-другому пишем просто,не думаю,что примут такое
Всмысле без алгоритмов (std::remove) ?
0
i7ungvun
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
gray_fox
What a waste!
1522 / 1227 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
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
i7ungvun
0 / 0 / 0
Регистрация: 01.07.2013
Сообщений: 8
01.07.2013, 19:24  [ТС] #9
gray_fox, ну если я не ошибаюсь,то это тоже удаляет только до пробела
0
gray_fox
What a waste!
1522 / 1227 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
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
i7ungvun
0 / 0 / 0
Регистрация: 01.07.2013
Сообщений: 8
01.07.2013, 19:57  [ТС] #11
gray_fox, спасибо,теперь осталось мне только преобразовать всё это в более привычный вид для себя и препода

Добавлено через 24 минуты
gray_fox, да есть же,заработало,спасибо ещё раз большое,спас меня
0
01.07.2013, 19:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.07.2013, 19:57
Привет! Вот еще темы с ответами:

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

Ошибка ввода символов строки, при количестве символов кратных 8 - C++
Здравствуйте, уважаемые форумчане! Разбираясь с механизмом ввода и динамическим выделением памяти для строк решил написать такой...

Каждое слово строки состоящее более, чем из 8 символов, сократить до первых 8 символов - C++
Нуждаюсь в помощи. Нужно написать программу на C++(в принципе, и на Си можно) которая делает следующее: В каждой строке каждое слово,...

Удалить конец строки символов. Ввести кол-во удаляемых символов , вывести результат ,String ,задачка,С++ - C++
Удалить конец строки символов. Ввести количество удаляемых символов , вывести результат на печать . Помогите плиз с задачкой. тема :...


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

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

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