Skip to content

Commit b49e1be

Browse files
committed
Преобразование строки так, чтобы каждое слова начиналось с заглавной буквы.
1 parent c417a23 commit b49e1be

File tree

7 files changed

+169
-0
lines changed

7 files changed

+169
-0
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
## Строки
88

9+
- [Преобразование строки так, чтобы каждое слова начиналось с заглавной буквы](capitalize-first-letter-of-ru-words/)
910

1011
## Массивы
1112

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
[Project]
2+
FileName=CapitalizeFirstLetterOfRuWords.dev
3+
Name=CapitalizeFirstLetterOfRuWords
4+
Type=1
5+
Ver=2
6+
ObjFiles=
7+
Includes=
8+
Libs=
9+
PrivateResource=
10+
ResourceIncludes=
11+
MakeIncludes=
12+
Compiler=
13+
CppCompiler=
14+
Linker=
15+
IsCpp=1
16+
Icon=
17+
ExeOutput=
18+
ObjectOutput=
19+
LogOutput=
20+
LogOutputEnabled=0
21+
OverrideOutput=0
22+
OverrideOutputName=
23+
HostApplication=
24+
UseCustomMakefile=0
25+
CustomMakefile=
26+
CommandLine=
27+
Folders=
28+
IncludeVersionInfo=0
29+
SupportXPThemes=0
30+
CompilerSet=0
31+
CompilerSettings=0000000000000000000000000
32+
UnitCount=1
33+
34+
[VersionInfo]
35+
Major=1
36+
Minor=0
37+
Release=0
38+
Build=0
39+
LanguageID=1033
40+
CharsetID=1252
41+
CompanyName=
42+
FileVersion=
43+
FileDescription=Developed using the Dev-C++ IDE
44+
InternalName=
45+
LegalCopyright=
46+
LegalTrademarks=
47+
OriginalFilename=
48+
ProductName=
49+
ProductVersion=
50+
AutoIncBuildNr=0
51+
SyncProduct=1
52+
53+
[Unit1]
54+
FileName=main.cpp
55+
CompileCpp=1
56+
Folder=
57+
Compile=1
58+
Link=1
59+
Priority=1000
60+
OverrideBuildCmd=0
61+
BuildCmd=
62+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
[Editors]
2+
Order=0
3+
Focused=0
4+
[Editor_0]
5+
CursorCol=3
6+
CursorRow=48
7+
TopLine=23
8+
LeftChar=1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# Project: CapitalizeFirstLetterOfRuWords
2+
# Makefile created by Dev-C++ 5.11
3+
4+
CPP = g++.exe
5+
CC = gcc.exe
6+
WINDRES = windres.exe
7+
OBJ = main.o
8+
LINKOBJ = main.o
9+
LIBS = -L"C:/Program Files (x86)/Dev-Cpp/MinGW64/lib" -L"C:/Program Files (x86)/Dev-Cpp/MinGW64/x86_64-w64-mingw32/lib" -static-libgcc
10+
INCS = -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/x86_64-w64-mingw32/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.9.2/include"
11+
CXXINCS = -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/x86_64-w64-mingw32/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.9.2/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.9.2/include/c++"
12+
BIN = CapitalizeFirstLetterOfRuWords.exe
13+
CXXFLAGS = $(CXXINCS)
14+
CFLAGS = $(INCS)
15+
RM = rm.exe -f
16+
17+
.PHONY: all all-before all-after clean clean-custom
18+
19+
all: all-before $(BIN) all-after
20+
21+
clean: clean-custom
22+
${RM} $(OBJ) $(BIN)
23+
24+
$(BIN): $(OBJ)
25+
$(CPP) $(LINKOBJ) -o $(BIN) $(LIBS)
26+
27+
main.o: main.cpp
28+
$(CPP) -c main.cpp -o main.o $(CXXFLAGS)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# Problem Statement
2+
3+
Дана строка – предложение на русском языке.
4+
5+
Преобразовать строку так, чтобы каждое слова началось с заглавной буквы.
6+
7+
Словом считать набор символов, не содержащий пробелов и ограниченный пробелами или началом/концом строки.
8+
9+
Слова, не начинающие с буквы, не изменять.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
// Подключение заголовочных файлов
2+
// из стандартной библиотеки:
3+
#include <string> // строковый тип.
4+
#include <iostream> // ввод/вывод.
5+
#include <windows.h> // нужно для функций SetConsoleOutputCP и SetConsoleCP.
6+
7+
// Переход на кириллицу:
8+
void cyrillic() {
9+
// Эти строки нужны для правильного отображения кириллицы:
10+
SetConsoleOutputCP(1251);
11+
SetConsoleCP(1251);
12+
13+
// Также надо изменить шрифт в консоли на Lucida Console.
14+
// Для замены шрифта кликаете правой кнопкой на надписи «Командная строка» окна консоли.
15+
// В открывшемся меню выбираете «Свойства».
16+
// В появившемся окне выбираете вкладку «Шрифт» и там выбираете «Lucida Console».
17+
}
18+
19+
// Использование пространства имён
20+
// стандартной библиотеки:
21+
using namespace std;
22+
23+
int main() {
24+
cyrillic(); // вкл. кириллицу.
25+
26+
string ruSentence;
27+
// Ввод предложения на русском языке:
28+
getline(cin, ruSentence);
29+
30+
for (int index = 0; index < ruSentence.length(); index++) {
31+
// Если символ является начальным ИЛИ
32+
// перед символом стоит пробел, то:
33+
if (index == 0 || ruSentence.at(index - 1) == ' ') {
34+
// считаем, что этот символ является началом слова.
35+
36+
// Если первый символ слова находится в диапазоне от 'а' до 'я', то:
37+
if (ruSentence.at(index) >= 'а' && ruSentence.at(index) <= 'я') {
38+
39+
// Вычисляем индекс буквы по порядку
40+
// (а - 0, б - 1, в - 2, …, я - 31):
41+
int letterIndex = ruSentence.at(index) - 'а';
42+
43+
// Прибавляем индекс буквы к заглавной 'А',
44+
// чтобы получить нужную заглавную букву:
45+
ruSentence.at(index) = 'А' + letterIndex;
46+
}
47+
}
48+
}
49+
50+
// Вывод преобразованной строки:
51+
cout << ruSentence;
52+
53+
// Пауза перед выходом из программы
54+
// (программа ждёт ввода любого символа):
55+
getchar();
56+
57+
// Возврат нуля,
58+
// что означает успешное завершение программы:
59+
return 0;
60+
}
61+
Binary file not shown.

0 commit comments

Comments
 (0)