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

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

15.02.2012, 13:40. Показов 2163. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Семь 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. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера 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. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru