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

Не могу разобраться со строками - C++

Восстановить пароль Регистрация
 
ekplayz
0 / 0 / 0
Регистрация: 12.03.2012
Сообщений: 6
17.04.2013, 17:00     Не могу разобраться со строками #1
Вот задание:
Напишите программу поиска в строке знаков пунктуации. Программа должна позволить ввести символьную строку, содержащую знаки пунктуации, и вывести ту же строку но уже без знаков пунктуации.

Я написал программу которая подсчитывает знаки пунктуации, а вот как их удалить или скрыть из текста и потом его вывести я не до понимаю. Помогите разобраться.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
 
using std::string;
using std::cin;
using std::cout;
using std::endl;
 
int main()
{
  string s;
  string::size_type punct_cnt = 0;
  cin >> s;
  for (string::size_type ix = 0; ix != s.size(); ++ix)
    if (ispunct(s[ix]))
        ++punct_cnt;
  cout << punct_cnt << endl;
    return 0;
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.04.2013, 17:00     Не могу разобраться со строками
Посмотрите здесь:

C++ не могу разобраться
Ребяты помогите со строками чуток разобраться. C++
не могу разобраться с написанием 3 программ. не могу никак, лабы сдавать надо. Спасибо заранее! C++
Не могу разобраться C++
C++ Не могу разобратся со строками!
не могу разобраться C++
C++ Не могу разобраться
Не могу разобраться в if C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
17.04.2013, 17:11     Не могу разобраться со строками #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <string>
using std::string;
using std::cin;
using std::cout;
using std::endl;
 
int main()
{
  string s;
  cin >> s;
  string::size_type punct_cnt = 0;
  for (string::size_type ix = 0; ix < s.size(); ++ix)
    if (ispunct(s[ix])){
        s.erase(ix,1);
          ++punct_cnt;--ix;
     }
  cout << punct_cnt << endl;
  return 0; 
}
Добавлено через 3 минуты
И вот такой вариант еще:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <string>
#include <algorithm>
using std::string;
using std::cin;
using std::cout;
using std::endl;
using std::remove_if;
 
int main(){
  string s;
  cin >> s;
  string::size_type punct_cnt = s.size();
  s.erase(remove_if(s.begin(),s.end(),ispunct),s.end());
  punct_cnt-=s.size();
  cout << punct_cnt << endl;
  cout<<s<<endl;
  return 0; 
}
ekplayz
0 / 0 / 0
Регистрация: 12.03.2012
Сообщений: 6
17.04.2013, 17:27  [ТС]     Не могу разобраться со строками #3
В первом варианте после любого знака пунктуации удаляет следующие записи букв
а во втором пишет ошибку error: 'remove_if' was not declared in this scope
UPD. всё равно результат не тот получаеться. удаляеться строка после знака пунктуации

Добавлено через 6 минут
все разобрался
Yandex
Объявления
17.04.2013, 17:27     Не могу разобраться со строками
Ответ Создать тему
Опции темы

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