Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.01.2015, 21:18   #1
wolchara
Пользователь
 
Регистрация: 10.01.2015
Сообщений: 30
По умолчанию Посчитать количество знаков препинания С++

Подсчитать количество знаков препинания в строке, считанной из текстового поля. Удалить их.

Рекомендации к выполнению:

Данную задачу можно выполнить, обрабатывая строку как массив символов. Чтобы подсчитать, сколько раз в строке встречается некоторый символ, например "," нужно завести переменную-счетчик, каждый символ исходной строки сравнивается с заданным (","), в случае совпадения, переменная-счетчик увеличивается на 1. Ниже приведен код данной программы:

Код:
string str2;
str2 = textBox2.Text;
int count = 0;
for (int  i=0; i < str2.Length; i++)
if (str2[i].ToString() == ",")
count++;
В задаче 2 требуется подсчитать сколько раз в строке встречаются знаки препинания , а не только запятая. Поэтому код нужно выполнить несколько раз, при этом вместо знака ", " подставлять другие знаки. Очевидно, что в этом случае код будет длинным. Для упрощения кода все знаки препинания можно запомнить в массив: string[] punctuation_marks = { ".", ",", "!", "?", ";", ":", "-"}; и уже для каждого элемента массива выполнять проверку. Код программы будет представлять собой два вложенных цикла.

Для удаления знаков препинания из строки можно использовать аналогичный алгоритм.

Эту задачу можно решить другим способом, используя методы класса string:

int index = str2.IndexOf(punctuation_marks[j]);// переменная index будет равна позиции искомого знака препинания (для того чтобы найти все знаки препинания этот метод нужно вызывать в цикле).

Если данного символа в строке нет, то переменная index будет равна -1. Таким образом, для подсчета количества знаков препинания в строке переменную count нужно увеличивать на 1 в том случае, если index!=1.

Для удаления знаков препинания можно использовать метод string remove(int index, int count), который возвращает строку, удалив из исходной строки count символов начиная с index. Например:

Код:
string str="это пример";

str= str.Remove(3, 7);// переменная str стала равна "'это"
Для решения задачи 2 метод должен вызываться после вызова метода int index = str2.IndexOf(punctuation_marks[j]); после проверки условия:

Код:
if (index != -1)
{
count++;
str2 = str2.Remove(index, 1);// 
}

Последний раз редактировалось Stilet; 11.01.2015 в 14:40.
wolchara вне форума Ответить с цитированием
Старый 11.01.2015, 13:58   #2
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,814
По умолчанию

Код:
punctuation_marks = { ".", ",", "!", "?", ";", ":", "-"};
string str2;
str2 = textBox2.Text;
for (int j=1; j<=7;j++)//идём по всем знакам препинания, не пропуская ни одного
{
  int count=0;//обнуляем счётчик
  for (int i=1; i < str2.Length; i++)//идём по всем символам строки
  {
     if (str2[i].ToString() == punctuation_marks[j])then
     {
        str2= str2.Remove(i,1);//удаляем один символ 
        count++;
        i=i-1;//возвращаемся снова на исходную позицию, вдруг за одним знаком ";" шёл снова знак ";", а мы его пропустим
      }
  }
 cout<<"количество знаков "<<punctuation_marks[j]<<" = "<<count<<"/n";
}
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.

Последний раз редактировалось NetSpace; 11.01.2015 в 14:01.
NetSpace вне форума Ответить с цитированием
Старый 11.01.2015, 14:36   #3
wolchara
Пользователь
 
Регистрация: 10.01.2015
Сообщений: 30
По умолчанию

Вы супер спасибо огромное!
wolchara вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление знаков препинания из текстов. С++ Angriff Помощь студентам 3 08.03.2012 15:52
Посчитать кол-во знаков препинания в тексте. Dane4ka Помощь студентам 10 08.05.2011 20:50
Как посчитать количество знаков PARTOS Microsoft Office Excel 11 05.06.2010 22:46
последовательность знаков препинания Владимир_король Помощь студентам 3 29.04.2010 10:56
Программа удаления знаков препинания... hen Общие вопросы C/C++ 17 11.10.2009 16:57