Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 10.01.2012
Сообщений: 8

Написать функцию, меняющую первую букву каждого слова в строке на номер слова

15.02.2012, 13:40. Показов 2115. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написать функцию, меняющую первую букву каждого слова в строке на номер слова. Продемонстрировать ее использование в программе.

Помогите решить, пожалуйста.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.02.2012, 13:40
Ответы с готовыми решениями:

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

Написать программу, меняющую первую букву каждого слова на эту же букву верхнего регистра
Дан массив из 10 строк по 80 символов, требуется заменить первую букву в каждом слове на эту же букву верхнего регистра(например: вводим...

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

10
 Аватар для AzaKendler
214 / 116 / 14
Регистрация: 30.05.2011
Сообщений: 1,772
Записей в блоге: 15
15.02.2012, 14:45
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
#include <iostream>
using std::cin;
using std::cout;
 
int main()
{
    char buf [100];
    cout<<"input string"<<"\n";
    cin.getline(buf,100,'\n');
    char* p = &buf[0];
    unsigned int count= 1;
    buf[0] = count+'0';
 
    while(*p++)
    {
        if(*p==32)
        {
            ++count;
            *(++p) = count+'0';
        }
    }   
 
    cout<<"\n"<<buf;    
 
    return 0;
}
Миниатюры
Написать функцию, меняющую первую букву каждого слова в строке на номер слова  
1
 Аватар для Heidel
115 / 115 / 39
Регистрация: 11.10.2011
Сообщений: 649
15.02.2012, 15:21
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <iostream>
using namespace std;
 
const int MAX_LEN = 101;
 
// Ôóíêöèÿ, ìåíÿþùàÿ ïåðâóþ áóêâó êàæäîãî ñëîâà â ñòðîêå íà íîìåð ñëîâà
int Func (char* str)
{
    int start=0,end=0,count=1;
    for(int i=0;i<MAX_LEN;i++)
    {
        if(str[i]==' ' || str[i]==',' || str[i]=='.' || str[i]=='?' || str[i]=='!' || str[i]=='\0')
        {
            end=i;
            str[start]=(char)count+'0';
        
            if (str[end]==',' || str[end]=='.' || str[end]=='?' || str[end]=='!')
            {
                start=end+2;
            }
            if (str[end]==' ')
            {
                start=end+1;
                ++count;
            }
        
        }
    }
 
return 0;
}
 
int main ()
{
    char str[MAX_LEN];
    cout << "Enter a string (max "<< MAX_LEN-1 << " symbols)\n";
    cin.getline (str, MAX_LEN);
 
    Func (str);
    
    cout << str;
    cout << "\n";
        
    return 0;
}
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
15.02.2012, 16:53
AzaKendler, а если два пробела между словами, а если слов больше 9?..

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 <stdio.h>
#include <string.h>
    
void num_words(char * str, const char * delim, size_t cnt){
    char * wrd = strtok(str, delim);
    
    if ( wrd ){
        printf("%u%s ", cnt, wrd + 1);
        num_words(NULL, delim, cnt + 1);
    }
}
 
#define DELIM " \t\n"
 
int main(void){
    char buf[BUFSIZ];
    
    while ( printf("String: ") && fgets(buf, BUFSIZ, stdin) && *buf != '\n' ){
        printf("Result: ");
        num_words(buf, DELIM, 1);
        printf("\n");
    }
    
    return 0;
}
0
 Аватар для AzaKendler
214 / 116 / 14
Регистрация: 30.05.2011
Сообщений: 1,772
Записей в блоге: 15
15.02.2012, 17:00
easybudda, а если не пробел а запятые или другие знаки препинания. а если пробелов нет? это просто демо. без всякой обработки.
для демонстрации. предложение менее 10 слов пойдет. с пробелами как разделителем
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
15.02.2012, 17:06
Цитата Сообщение от AzaKendler Посмотреть сообщение
а если пробелов нет?
Если специально не оговорено другое, слова в строке пробельными символами разделяются, а запятые с точками никуда не денутся...

Цитата Сообщение от AzaKendler Посмотреть сообщение
это просто демо. без всякой обработки.
ну-ну...
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
15.02.2012, 17:11
Вот так, например.
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 <iostream>
#include <string>
#include <algorithm>
 
typedef std::string T_str;
 
T_str fun(T_str& s, const T_str& DELIM)
{
   size_t l, r, i;
 
   for ( l = s.find_first_not_of(DELIM), r = s.find_first_of(DELIM, l), i = 1 ; 
      l != std::string::npos ; l = s.find_first_not_of(DELIM, r), r = s.find_first_of(DELIM, l), ++i )
   {
      s.erase(l, 1);
      s.insert(l, std::to_string(i));
   }   
   return s;   
}
 
int main()
{
   T_str s("Hello  world Hee Hi");
   
   fun(s, " \t\n");
   
   std::cout << s << std::endl;
   
   return 0;
}
http://liveworkspace.org/code/... 26db1b39df
0
 Аватар для AzaKendler
214 / 116 / 14
Регистрация: 30.05.2011
Сообщений: 1,772
Записей в блоге: 15
15.02.2012, 17:15
Цитата Сообщение от easybudda Посмотреть сообщение
ну-ну.
ну на то и есть куча опытных форумчан готовых предложить решение со всеми возможными обработками. но твоя функция недружественна она слишком много просит на входе. если уж ты хотел обработку то надо было в тело пихать а не спрашивать в параметрах. ну а если дружественность не важна то можно было попросить еще и количество слов. количество букв в каждом слове - ну чтоб в теле почти нечего было делать
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
15.02.2012, 17:33
Цитата Сообщение от AzaKendler Посмотреть сообщение
твоя функция недружественна она слишком много просит на входе
Так наоборот же! Нужны разделители не пробелы - да не вопрос, нужна нумерация не с единицы - да тоже всегда пожалуйста...
Ну вот попроще вариант на С++
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>
    
std::string numbered_words(const std::string & str){
    std::istringstream ist(str);
    std::ostringstream ost;
    std::string tmp;
    size_t counter = 0;
    
    while ( ist >> tmp )
        ost << ++counter << tmp.substr(1) << ' ';
    
    return ost.str();
}
 
int main(){
    std::string str;
    
    while ( std::cout << "String: " && std::getline(std::cin, str) && ! str.empty() )
        std::cout << "Result: " << numbered_words(str) << std::endl;
    
    return 0;
}
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
15.02.2012, 17:37
easybudda, не обязательно разделители это пробелы, это в частном случае http://liveworkspace.org/code/... b85c8e4c93
В общем случае
http://liveworkspace.org/code/... 313b710c20
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
15.02.2012, 17:56
Цитата Сообщение от go Посмотреть сообщение
е обязательно разделители это пробелы
Да и символы в словах - не обязательно буквы, цифры тоже подойдут, только пойди потом разбери, где номер слова, где само слово... А по тому, чтобы голову себе не забивать, и коль скоро никаких дополнительных условий нет, лучше считать, что слова состоят из букв, разделены одним или несколькими пробельными символами (может потому их пробельными и называют? ), количество слов заранее не известно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.02.2012, 17:56
Помогаю со студенческими работами здесь

Напечатать все слова, перенеся первую букву каждого слова в конец слова
приветствую вас))) помогите пожалуйста даме... Текст задан строкой var St: string; Напечатать все слова, перенеся первую букву...

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

Сделать первую букву каждого слова большой и поставить точку после каждого слова
У меня есть программа, она делает то, что нужно. Но нужно поменять алгоритм выполнения, сделать так, чтобы в вводимой строке искалось...

Сделать первую букву каждого слова большой и поставить точку после каждого слова
Немного не получается сделать первую букву слов большой, может я чтото неправильно делаю( точно ). #include &lt;iostream&gt; #include...

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


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru