Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/47: Рейтинг темы: голосов - 47, средняя оценка - 4.94
26 / 1 / 1
Регистрация: 18.03.2018
Сообщений: 278
1

Замена первой буквы всех слов на заглавную

04.10.2018, 22:58. Показов 8628. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Имеется следующая задача:

Разработать программу, которая вводит строку и заменяет в ней первые буквы всех слов на заглавные (если слово начинается с заглавной буквы, оставляет его без изменения).

Имеется вот такой код:

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
25
26
27
28
29
#include "stdafx.h"
#include <iostream>
#include <string>
#include <windows.h>;
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[]) 
{
    SetConsoleOutputCP(1251);
    SetConsoleCP(1251);
    char s[200];
    cout << "Введите строку:" << endl;
    cin >> s ;
    
    for (int i = 0; i < strlen(s); i++)
 {
     while (s[i]==' ' && i<strlen(s)) i++;
  
    s[i] = toupper(s[i]);
  
    while (s[i]!=' ' && i<strlen(s)) i++;
    }
    
    cout << "Строка с заменой первой буквы всех слов на заглавную:\n" << s << endl;
 
    system("pause");
    return 0;
}
Но он работает не совсем так, как нужно. Во-первых, он не работает для русских символов. Во-вторых, он заменяет первую букву заглавной, но работает он до первого пробела, т.е. выводит только одно слово. Тут, подозреваю, я что-то не понял и не правильно оформил вывод.

Буду очень рад любой помощи, заранее спасибо.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.10.2018, 22:58
Ответы с готовыми решениями:

Замена первой буквы во всех словах на заглавную
Доброго времени суток! Помогите написать программу которая во всех словах заменит первую букву на...

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

Замена строчной буквы на заглавную
Вобщем требуется написать программу (Visual C++ 2008 Express Edition), которая открывает текстовый...

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

3
680 / 190 / 60
Регистрация: 04.05.2012
Сообщений: 879
Записей в блоге: 1
05.10.2018, 11:24 2
Лучший ответ Сообщение было отмечено Komputershik как решение

Решение

Komputershik,
Почему работает только для первого слова
Дело в том, что оператор >> считывает строку до первого разделителя(знаки табуляции, пробелы, перевод каретки). Поэтому ошибка именно в способе ввода. Если вы хотите использовать для ввода массив символов то надо заменить строки 12-14, использовав методы строкового ввода:

C++
1
2
3
4
const int size = 200;
    char s[size];
    cout << "Введите строку:" << endl;
    cin.getline(s,size);
Другой вариант заменить массив символов на строку, но придется еще заменить функция получения длины строки:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    string s;
    cout << "Введите строку:" << endl;
    getline(cin,s);
 
    for (unsigned int i = 0; i < s.size(); i++)
 {
     //while (s[i]==' ' && i<strlen(s)) i++;
 
    s[i] = toupper(s[i]);
 
    while (s[i]!=' ' && i<s.size()) i++;
    }
 
    cout << "Строка с заменой первой буквы всех слов на заглавную:\n" << s << endl;
 
    //system("pause");
    return 0;
2
26 / 1 / 1
Регистрация: 18.03.2018
Сообщений: 278
05.10.2018, 21:34  [ТС] 3
Юля_программист, Спасибо большое, первый вариант подошёл А что касательно использования кириллицы? Не знаете как решить проблему?

Добавлено через 3 минуты
Юля_программист, даже не так. Кириллица-то выводится, но вот с ней никаких преобразований не происходит, т.е. она выводится такой же, какой и была введена
0
26 / 1 / 1
Регистрация: 18.03.2018
Сообщений: 278
07.10.2018, 17:38  [ТС] 4
Юля_программист, Всё, решил проблему с кириллицей, ввёл три строки в начале программы для работы с кириллицей, и функция toupper начала хорошо работать с нашими буквами:

C++
1
2
3
SetConsoleCP (1251); 
    SetConsoleOutputCP (1251);
    setlocale(LC_ALL, "");
Может будет полезно тому, кто столкнётся с такой же проблемой
0
07.10.2018, 17:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.10.2018, 17:38
Помогаю со студенческими работами здесь

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

Регулярное выражения для первой буквы всех слов, кроме первого и последнего
Я написал такой код: using System; using System.Text.RegularExpressions; class Program { ...

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

В первой строке выписать все первые буквы всех слов, во второй строке — вторых букв
Помогите решить задачу. С клавиатуры вводятся слова через пробел (любой длины и любого количества)....


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

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