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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Lers
13 / 13 / 3
Регистрация: 27.05.2012
Сообщений: 203
#1

В каждом слове заменить первую букву на прописную - C++

15.05.2013, 16:40. Просмотров 1347. Ответов 9
Метки нет (Все метки)

Дана строка символов, состоящая из произвольного текста, слова
разделены пробелами. В каждом слове заменить первую букву на прописную.Использовать тип (класс) string.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
string task3(string s,string s1)
{
 
  int pos=1,len=0,i;
 
  len=s.length();
  s[0]=char(int(s[0])-32);
  for (i=0;i<len;i++)
  {
  pos=s.find(' ');
  s[pos+1]=char(int(s[pos+1])-32);
 
  }
 
 
  return s;
 
}
P.S. проблема в том, что когда я нахожу пробел и след.символ делаю большим, потом нужно же продолжить цикл, а для этого я понял нужно запомнить строку в которой символ редактировал, удалить часть строки и продолжить цикл. Проблема с реализацией моих мыслей. Хелп.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.05.2013, 16:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос В каждом слове заменить первую букву на прописную (C++):

В следующем слове после точки, первую строчную букву заменить на прописную - C++
В строке, содержащей последовательность слов, найти конец предложения, обозначенный символом &quot;точка&quot;. В следующем слове первую строчную...

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

Заменить каждую первую букву слов, начинающихся с гласной буквы, на прописную - C++
В произвольно взятом предложении (английский шрифт) заменить каждую первую букву слов, начинающихся с гласной буквы, на прописную. ...

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

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

В каждом слове заданного предложения поменять местами первую букву и последнюю - C++
Вообщем осталось две программки написать, а я как ни старался ничего не получалось. Очень надеюсь на вашу помощь. Завтра зачёт. =( 1)...

9
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
15.05.2013, 17:31 #2
Данную программу можно сделать с помощью цикла while. Условием цикла будет поиск пробелов в строке, то есть, выполнять поиск пока функция find() не вернет значение string::npos(это будет означать, что больше пробелов в строке нету). Для поиска следующего пробела надо запомнить позицию предыдущего и передавать его параметр(не забыть добавить +1 к нему), то есть вот так:
C++
1
pos=s.find(' ', pos+1);
0
Lers
13 / 13 / 3
Регистрация: 27.05.2012
Сообщений: 203
15.05.2013, 17:51  [ТС] #3
C++
1
2
3
4
5
6
7
s[0]=char(int(s[0])-32);
  while(pos>0)
  {
  pos=s.find(' ',pos+1);
  s[pos+1]=char(int(s[pos+1])-32);
 
  }
Вот так написал, вроде бы работает, но 1 символ(т.е. нулевой) вечно какой-то кривой. В чем проблема?
0
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
15.05.2013, 18:15 #4
что значит "кривой"?
0
Lers
13 / 13 / 3
Регистрация: 27.05.2012
Сообщений: 203
15.05.2013, 18:35  [ТС] #5
Цитата Сообщение от metaluga145 Посмотреть сообщение
что значит "кривой"?
допустим я ввожу qwe, должно быть Qwe а получается 1we, а дальше все ок.
0
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
15.05.2013, 19:14 #6
Lers, можно полный код? потому что у меня вот такой код работает
C++
1
2
3
4
char a='q';
    a=char(int(a)-32);
    std::cout<<a<<std::endl;
    system("pause");
Добавлено через 27 секунд
как и положено выводит 'Q'
0
Lers
13 / 13 / 3
Регистрация: 27.05.2012
Сообщений: 203
15.05.2013, 19:20  [ТС] #7
Это функция.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
string task3(string s,string s1)
{
 
  int pos=1,i;
 
  s[0]=char(int(s[0])-32);
  while(pos>0)
  {
  pos=s.find(' ',pos+1);
  s[pos+1]=char(int(s[pos+1])-32);
 
  }
 
 
  return s;
 
}
Вот так вызываю
C++
1
2
3
4
5
6
7
8
9
case 2:
            {
            string s;
            int post;
            s=M2->Text.c_str();
            string s1=task3(s,s1);
            M3->Lines->Add(AnsiString(s1.c_str()));
            break;
            }
0
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
15.05.2013, 19:31 #8
Lers, там получается 1, потому,что в первом проходе pos=1(т.е. больше 0), оно заходит в цикл, находит новое значение pos=-1, а потом опять меняет элемент с индексом pos+1(который равен 0).
1
Lers
13 / 13 / 3
Регистрация: 27.05.2012
Сообщений: 203
15.05.2013, 19:33  [ТС] #9
Цитата Сообщение от metaluga145 Посмотреть сообщение
Lers, там получается 1, потому,что в первом проходе pos=1(т.е. больше 0), оно заходит в цикл, находит новое значение pos=-1, а потом опять меняет элемент с индексом pos+1(который равен 0).
спасибо, не обратил внимание))
0
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
15.05.2013, 19:33 #10
перепишите код вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
string task3(string s)
{
 
  int pos=-1;
 
  
  do
  {
      s[pos+1]=char(int(s[pos+1])-32);
      pos=s.find(' ',pos+1);
  }while(pos>0);
 
 
  return s;
 
}
1
15.05.2013, 19:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.05.2013, 19:33
Привет! Вот еще темы с ответами:

Заменить в слове первую букву “A” на символ - C++
Задание такого: Ввести с клавиатуры слово и символ. Заменить в слове первую букву “A” на символ. Присоединить введенный символ к...

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

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

Как прочитать первую букву в слове - C++
Есть button по нажатии которой выводится в Memo слово Hello, как сделать чтобы выводилось только первая буква, пробовал простым char (в...


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

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

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