С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
1 / 1 / 0
Регистрация: 23.10.2009
Сообщений: 53
1

Смена регистра в словах

25.06.2010, 13:24. Показов 3458. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите пожалуйста написать программу: Заданный текст превратить таким образом, чтобы каждое слово начиналось с большой буквы. Считать, что слова текста разделены одним пробелом.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.06.2010, 13:24
Ответы с готовыми решениями:

Смена регистра строки на противоположный
Здравствуйте, уважаемые форумчане! Создайте функцию, которая изменяет регистр строки на...

Смена регистра
Заменяет в тексте все строчные латинские буквы на прописные Нужно не испортить исходные данные и...

Смена регистра букв
Здравствуйте. Каким образом можно превращать буквы верхнего регистра в нижний, и наоборот (при...

Смена регистра текста.!
Нужно слова на русском перевести в верхний или нижний регистр. что-то типа этого работает: ...

16
Эксперт С++
476 / 444 / 34
Регистрация: 20.11.2009
Сообщений: 1,293
25.06.2010, 13:29 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <string>
#include <conio.h>
 
using namespace std;
 
int main()
{
     string s;
     while(cin >> s)
     {
           if(s[0] >= 'a' && s[0] <= 'z')
                 s[0] += 'A' - 'a';
           cout << s << ' ';
     }
}
Для выхода нажать ctrl+Z.
Кто-нить, научите меня уже, что делать штоб не нужно было ctrl+Z нажимать? Чтоб она читала до конца строки и успокаивалась.
1
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12832 / 7569 / 1764
Регистрация: 25.07.2009
Сообщений: 13,965
25.06.2010, 13:34 3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
#include <string>
#include <sstream>
#include <cctype>
 
int main(){
    std::string buf;
    
    while ( true ){
        std::cout << "String: ";
        std::getline(std::cin, buf);
        if ( buf.empty() )
            break;
        std::istringstream ist(buf);
        std::ostringstream ost;
        while ( ist >> buf ){
            *buf.begin() = toupper(*buf.begin());
            ost << buf << ' ';
        }
        std::cout << "Result: " << ost.str() << std::endl;
    }
    
    return 0;
}
2
3566 / 2713 / 348
Регистрация: 11.03.2009
Сообщений: 6,247
25.06.2010, 13:38 4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream.h>
 
int main(int argc, char* argv[])
{
   char str[512] = {'\0'};
 
   cout << "Vvedite stroku: ";
   cin.getline(str, 511);
   cin.sync();
   for (unsigned int i = 0; i < strlen(str); i++)
   {
      if ((i == 0 || str[i-1] == ' ')&&(str[i] >= 'a' && str[i] <= 'z'))
         str[i] -= 'a' - 'A';
   }
   cout << str << endl;
   cin.get();
   return 0;
}
Добавлено через 1 минуту
Цитата Сообщение от Хохол Посмотреть сообщение
Кто-нить, научите меня уже, что делать штоб не нужно было ctrl+Z нажимать? Чтоб она читала до конца строки и успокаивалась.
C++
1
2
3
int symbol;
while ((symbol = cin.get()) != '\n')
{}
1
Эксперт С++
476 / 444 / 34
Регистрация: 20.11.2009
Сообщений: 1,293
25.06.2010, 14:02 5
Немного плагиата, и получаем такой вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <string>
#include <sstream>
 
using namespace std;
 
int main()
{
    string buf, s;
    while(getline(cin,buf), !buf.empty())
    {
        stringstream in(buf);
        while(in >> s)
        {
            if(s[0] >= 'a' && s[0] <= 'z')
                 s[0] += 'A' - 'a';
            cout << s << ' ';
        }
        cout << endl;
    }
}
1
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12832 / 7569 / 1764
Регистрация: 25.07.2009
Сообщений: 13,965
25.06.2010, 15:42 6
Хохол, а функцию toupper() по религиозным соображениям предпочитаете не использовать?
1
Эксперт С++
476 / 444 / 34
Регистрация: 20.11.2009
Сообщений: 1,293
25.06.2010, 15:49 7
Ой, не заметил. Это ж минус строка кода! Ща исправим.

Добавлено через 1 минуту
Гыгы:
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>
#include <sstream>
 
using namespace std;
 
int main()
{
        string buf, s;
        while(getline(cin,buf), !buf.empty())
        {
                stringstream in(buf);
                while(in >> s)
                {
                        s[0] = toupper(s[0]);
                        cout << s << ' ';
                }
                cout << endl;
        }
}
1
Эксперт С++
5043 / 2622 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 1
25.06.2010, 15:51 8
Цитата Сообщение от Хохол Посмотреть сообщение
Ой, не заметил. Это ж минус строка кода! Ща исправим.
Это не только минус строка кода
0
Эксперт С++
476 / 444 / 34
Регистрация: 20.11.2009
Сообщений: 1,293
25.06.2010, 15:58 9
А что еще?
0
Эксперт С++
5043 / 2622 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 1
25.06.2010, 16:06 10
Цитата Сообщение от Хохол Посмотреть сообщение
А что еще?
Если я все правильно понимаю, то toupper может зависеть от используемого языка.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12832 / 7569 / 1764
Регистрация: 25.07.2009
Сообщений: 13,965
25.06.2010, 16:06 11
Цитата Сообщение от Хохол Посмотреть сообщение
Это ж минус строка кода!
Эта "минус строка" компенсируется "include <cctype>", а то мелкомягкий компилятор "опаньки" скажет. Разница действительно не в количестве строк кода...
0
Эксперт С++
476 / 444 / 34
Регистрация: 20.11.2009
Сообщений: 1,293
25.06.2010, 16:08 12
Проверил ща, у меня в VS c русскими буквами не работает.

Добавлено через 57 секунд
easybudda, я не инклудил сctype, но все работает.
0
Эксперт С++
5043 / 2622 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 1
25.06.2010, 16:14 13
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 <locale>
 
int main()
{
   setlocale(LC_ALL, "RUS");
 
   std::string str = "привет";
   std::cout << str << std::endl;
 
   for(int i = 0; i < str.length(); ++i)
      str[i] = toupper(str[i]);
 
   std::cout << str << std::endl;
 
   system("pause");
   return 0;
}
Код
привет
ПРИВЕТ
Press any key to continue . . .
1
Эксперт С++
476 / 444 / 34
Регистрация: 20.11.2009
Сообщений: 1,293
25.06.2010, 16:28 14
Понятно, спсы. Правда у меня после вызова этой штуки перестают нормально считываться русские буквы. Пишутся и обрабатываются нормально, читаются неверно.
0
Эксперт С++
5043 / 2622 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 1
25.06.2010, 16:32 15
Цитата Сообщение от Хохол Посмотреть сообщение
Правда у меня после вызова этой штуки перестают нормально считываться русские буквы. Пишутся и обрабатываются нормально, читаются неверно.
да с русским языком в принципе везде косяки, лучше не писать по-русски
0
Эксперт С++
476 / 444 / 34
Регистрация: 20.11.2009
Сообщений: 1,293
25.06.2010, 16:42 16
Согласен, поэтому никогда и не пишу в программах.
0
1 / 1 / 0
Регистрация: 23.10.2009
Сообщений: 53
25.06.2010, 18:30  [ТС] 17
Спасибо всем большое!!!
0
25.06.2010, 18:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.06.2010, 18:30
Помогаю со студенческими работами здесь

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

Не работает смена регистра
Кодировка 1251. Код: setlocale(LC_CTYPE , 'ru_RU.CP1251'); $dol = strtolower($dol); ...

Смена регистра введенного текста
Помогите пожалуйста, учусь лишь на первом курсе. Задали написать программку на паскале которая:...

Смена регистра символов в файле
ТО есть с чего хотя бы начать? Хотелось бы, что бы при входе текстового файла с готовым текстом, он...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru