Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
3 / 3 / 2
Регистрация: 10.11.2014
Сообщений: 94

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

17.10.2015, 14:43. Показов 3020. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Заменить каждую первую букву в словах, начинающихся с гласной буквы на прописную.
Что только не делал, но так и не получилось. Заменяет только в первом слове, а дальше выводит без замены...
Помогите пожалуйста составить программу, желательно не замудренную.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <string.h>
using namespace std;
 
int main ()
{
char str[14];
int i,n,ns=0,ks,j;
cout << "vvedite " << endl;
gets(str);
n=strlen(str);
for (i=0;i<n;i++)
if (str[i]==' '){
ks=i;}
else
        if (str[ks-1]=='a'){
            for(j=ns;j<ks;ks++){
        cout << str[j];
                    ns=ks+1;}
        }
    return 0;}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.10.2015, 14:43
Ответы с готовыми решениями:

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

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

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

13
 Аватар для Barrent
252 / 128 / 54
Регистрация: 04.05.2013
Сообщений: 346
17.10.2015, 14:56
Лучший ответ Сообщение было отмечено EGKR как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include "stdafx.h"
#include <iostream>
#include <string>
 
using namespace std;
 
int main()
{
    string str;
    string vowels = "aeiou";
    cout << "String:  ";
    getline(cin, str);
    for (int i = 0; i < str.size(); i++)
        if((i == 0 || str[i - 1] == ' ') && vowels.find(str[i]) != string::npos)
            str[i] -= 32;
    cout << "Replaced: " << str << endl;
    system("pause");
    return 0;
}
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
17.10.2015, 15:00
C++
1
2
3
4
5
char v[] = "aeiou";
 
for (i = 0; i < n - 1; ++i)
  if (str[i] == ' ' && strchr(v, str[i + 1]) != NULL)
    str[i] = toupper(str[i]);
0
3 / 3 / 2
Регистрация: 10.11.2014
Сообщений: 94
17.10.2015, 15:25  [ТС]
Можете объяснить это условие?
C++
1
        if((i == 0 || str[i - 1] == ' ') && vowels.find(str[i]) != string::npos)
0
 Аватар для Barrent
252 / 128 / 54
Регистрация: 04.05.2013
Сообщений: 346
17.10.2015, 15:28
i - позиция текущего символа в строке
i == 0 - если первое слово в предложении
|| - логическое ИЛИ
str[i - 1] == ' ' - если не первое слово в предложении
&& - логическое И
!= - не равно
vowels.find(str[i]) - ищет в строке vowels символ str[i]. Если символ отсутствует, то возвращает string::npos
1
3 / 3 / 2
Регистрация: 10.11.2014
Сообщений: 94
17.10.2015, 17:03  [ТС]
Не могли бы вы написать код, но только без использования этих функций (getline, find).
Как если бы я создал массив для строки?
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
17.10.2015, 17:04
EGKR, мой вариант "без функций".
0
3 / 3 / 2
Регистрация: 10.11.2014
Сообщений: 94
17.10.2015, 17:07  [ТС]
а можно весь код?
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
17.10.2015, 17:13
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
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <string.h>
using namespace std;
 
int main ()
{
char v[] = "aeiou";
char str[14];
int i,n,ns=0,ks,j;
 
cout << "vvedite " << endl;
 
cin.getline(str, 14);
 
n=strlen(str);
for (i = 0; i < n - 1; ++i)
  if (str[i] == ' ' && strchr(v, str[i + 1]) != NULL)
    str[i] = toupper(str[i]);
 
cout << str << endl;
 
    return 0;
}
0
 Аватар для Barrent
252 / 128 / 54
Регистрация: 04.05.2013
Сообщений: 346
17.10.2015, 17:16
Без функций так без функций, проще уже некуда
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "stdafx.h"
#include <iostream>
 
using namespace std;
 
int main()
{
    char str[14];
    cout << "vvedite " << endl;
    gets_s(str);
    int n = strlen(str);
    for (int i = 0; i < n; i++) {
        if (i == 0 || str[i - 1] == ' ') {
            if (str[i] == 'a' || str[i] == 'e' || str[i] == 'i' || str[i] == 'o' || str[i] == 'u')
                str[i] = str[i] - 32;
        }
    }
    cout << str << endl;    
    system("pause");
    return 0;
}
Добавлено через 54 секунды
nmcf,
не учитываешь первое слово
0
3 / 3 / 2
Регистрация: 10.11.2014
Сообщений: 94
17.10.2015, 17:19  [ТС]
Ввожу несколько слов в пределах 12 символов, но выдает ту же строку и без изменения регистра первой буквы Вы уверены, что она работает?

Добавлено через 1 минуту
а можно ли сделать не
C++
1
str[i] = str[i] - 32;
а через strupr?
0
 Аватар для Barrent
252 / 128 / 54
Регистрация: 04.05.2013
Сообщений: 346
17.10.2015, 17:28
Цитата Сообщение от EGKR Посмотреть сообщение
а через strupr?
1) не стандарт
2) преобразовывает всю строку
Если охота через функцию, то
C++
1
str[i] = toupper(str[i]);
1
3 / 3 / 2
Регистрация: 10.11.2014
Сообщений: 94
17.10.2015, 17:38  [ТС]
Спасибо, добрый человек!
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
17.10.2015, 20:02
Цитата Сообщение от Barrent Посмотреть сообщение
не учитываешь первое слово
Ну EGKR мог бы и сам допилить первое слово.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.10.2015, 20:02
Помогаю со студенческими работами здесь

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

В каждом слове заменить первую букву на прописную
Дана строка символов, состоящая из произвольного текста, слова разделены пробелами. В каждом слове заменить первую букву на...

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

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

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


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru