Дана строка. Измените регистр символов в этой строке так, чтобы первая буква каждого слова была прописной, а остальные буквы — строчными. Словом называется последовательность строчных или прописных латинских букв. Все остальные символы являются разграничителями между словами.
Ввод: --aBVf---sda
Вывод: --Abvf---Sda
Помогите, сижу второй день над этой задачей, никак решить не могу
C/C++
Слова с прописной буквы с++
#include
#include
#include
using namespace std;
int main()
{
string str;
bool is_word = false;
getline(cin, str);
for (int i = 0; i < str.size(); i++)
{
if (isalpha(str[i]))
{
str[i] = is_word ? tolower(str[i]) : toupper(str[i]);
is_word = true;
}
else is_word = false;
}
cout
Дмитрий Карпеев
так просто? у меня строчек 30 получалось, а тут вон как можно
#include
#include
#include
#include
using namespace std;
void toCamel(string & s) {
bool b = true;
for(auto it = s.begin(); it != s.end(); ++it) {
if (isalpha(*it))
{
*it = b ? toupper(*it): tolower(*it);
b = false;
}
else
b = true;
}
}
int main()
{
{
string s = "hEllo,world!and1961yeAR";
toCamel(s);
assert(s == "Hello,World!And1961Year");
}
{
string s = "one,two";
toCamel(s);
assert(s == "One,Two");
}
{
string s = "1969year";
toCamel(s);
assert(s == "1969Year");
}
можно, например, так вывести твою строку:
#include<stdio.h>
#include<string.h>
#include<ctype.h>
#include<stdlib.h>
int main()
{
char text[256] = {0},
*filter = " ,.;:";
printf("Enter your string:\n");
fgets(text, sizeof(text), stdin);
char *word=strtok(text, filter);
printf("\nResult:\n");
while(word!=NULL)
{
char word2[256]={0};
strcpy(word2, word);
word2[0]=toupper(word2[0]);
for(int i = 1; i < strlen(word2); i++)
word2[i]=tolower(word2[i]);
printf("%s ", word2);
word=strtok(NULL, filter);
}
system("pause");
return 0;
}
#include<stdio.h>
#include<string.h>
#include<ctype.h>
#include<stdlib.h>
int main()
{
char text[256] = {0},
*filter = " ,.;:";
printf("Enter your string:\n");
fgets(text, sizeof(text), stdin);
char *word=strtok(text, filter);
printf("\nResult:\n");
while(word!=NULL)
{
char word2[256]={0};
strcpy(word2, word);
word2[0]=toupper(word2[0]);
for(int i = 1; i < strlen(word2); i++)
word2[i]=tolower(word2[i]);
printf("%s ", word2);
word=strtok(NULL, filter);
}
system("pause");
return 0;
}
Смотрю на вас и худею.
Как же вам легко всем писать код.
Как же вам легко всем писать код.
Александр Карепин
Учись, читай книги, пробуй почаще писать код, начинай на примерах
А в чём проблема сделать обычный костыль (f = 1)?... Циклом перебрать введённую строку. Если символ i - буква, то следующий вопрос: i - первая буква строки (f == 1)? Если да, то увеличиваем f на 1, а i делаем большой. Если нет, то делаем букву маленькой. Если i - не буква, то f = 1. Всё.
Похожие вопросы
- Выбрать из текста слова, в которых имеются удвоенные согласные буквы
- C++ Самая частая буква
- Определить встречается ли в последовательности группа букв 'one', определить последнее вхождение этой группы
- Напишите программу, которая подсчитает и выведет количество слов длины 10, которые можно составить из букв a, b, c.
- Задан текст. Определить, сколько слов начинается на заданную букву.
- Как через регулярный выражения запретить ввод букв?
- Работа со строками, поиск слова
- Отсортировать слова в лексикографическом порядке (C++)
- Самая частая буква
- Задача от компании РБК на должность инженера-разработчика: считать огромный файл, найти топ 10 часто встречающихся слов