Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
cubeman9
0 / 0 / 0
Регистрация: 10.01.2012
Сообщений: 8
15.02.2012, 13:40     Написать функцию, меняющую первую букву каждого слова в строке на номер слова #1
Написать функцию, меняющую первую букву каждого слова в строке на номер слова. Продемонстрировать ее использование в программе.

Помогите решить, пожалуйста.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.02.2012, 13:40     Написать функцию, меняющую первую букву каждого слова в строке на номер слова
Посмотрите здесь:

Написать функцию, меняющую первую букву каждого слова в строке на номер слова. C++
Написать программу, меняющую первую букву каждого слова на эту же букву верхнего регистра C++
Дано два предложения (Распечатать слова из первого предложения, который начинаются на первую букву последнего слова второго предложения) C++
1. Скопировать из файла F1 в файл F2 строки, которые не содержат слова, начинающиеся на одну букву 2. Определить номер слова в котором больше всего г C++
C++ У каждого слова введенной строки поменять местами первую и последнюю букву.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
AzaKendler
 Аватар для AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
15.02.2012, 14:45     Написать функцию, меняющую первую букву каждого слова в строке на номер слова #2
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;
}
Миниатюры
Написать функцию, меняющую первую букву каждого слова в строке на номер слова  
Heidel
 Аватар для Heidel
110 / 110 / 7
Регистрация: 11.10.2011
Сообщений: 647
15.02.2012, 15:21     Написать функцию, меняющую первую букву каждого слова в строке на номер слова #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
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;
}
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9372 / 5422 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
15.02.2012, 16:53     Написать функцию, меняющую первую букву каждого слова в строке на номер слова #4
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;
}
AzaKendler
 Аватар для AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
15.02.2012, 17:00     Написать функцию, меняющую первую букву каждого слова в строке на номер слова #5
easybudda, а если не пробел а запятые или другие знаки препинания. а если пробелов нет? это просто демо. без всякой обработки.
для демонстрации. предложение менее 10 слов пойдет. с пробелами как разделителем
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9372 / 5422 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
15.02.2012, 17:06     Написать функцию, меняющую первую букву каждого слова в строке на номер слова #6
Цитата Сообщение от AzaKendler Посмотреть сообщение
а если пробелов нет?
Если специально не оговорено другое, слова в строке пробельными символами разделяются, а запятые с точками никуда не денутся...

Цитата Сообщение от AzaKendler Посмотреть сообщение
это просто демо. без всякой обработки.
ну-ну...
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
15.02.2012, 17:11     Написать функцию, меняющую первую букву каждого слова в строке на номер слова #7
Вот так, например.
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/286bda...e4d226db1b39df
AzaKendler
 Аватар для AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
15.02.2012, 17:15     Написать функцию, меняющую первую букву каждого слова в строке на номер слова #8
Цитата Сообщение от easybudda Посмотреть сообщение
ну-ну.
ну на то и есть куча опытных форумчан готовых предложить решение со всеми возможными обработками. но твоя функция недружественна она слишком много просит на входе. если уж ты хотел обработку то надо было в тело пихать а не спрашивать в параметрах. ну а если дружественность не важна то можно было попросить еще и количество слов. количество букв в каждом слове - ну чтоб в теле почти нечего было делать
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9372 / 5422 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
15.02.2012, 17:33     Написать функцию, меняющую первую букву каждого слова в строке на номер слова #9
Цитата Сообщение от 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;
}
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
15.02.2012, 17:37     Написать функцию, меняющую первую букву каждого слова в строке на номер слова #10
easybudda, не обязательно разделители это пробелы, это в частном случае http://liveworkspace.org/code/c44e9a...799ab85c8e4c93
В общем случае
http://liveworkspace.org/code/88920b...71ac313b710c20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.02.2012, 17:56     Написать функцию, меняющую первую букву каждого слова в строке на номер слова
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9372 / 5422 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
15.02.2012, 17:56     Написать функцию, меняющую первую букву каждого слова в строке на номер слова #11
Цитата Сообщение от go Посмотреть сообщение
е обязательно разделители это пробелы
Да и символы в словах - не обязательно буквы, цифры тоже подойдут, только пойди потом разбери, где номер слова, где само слово... А по тому, чтобы голову себе не забивать, и коль скоро никаких дополнительных условий нет, лучше считать, что слова состоят из букв, разделены одним или несколькими пробельными символами (может потому их пробельными и называют? ), количество слов заранее не известно.
Yandex
Объявления
15.02.2012, 17:56     Написать функцию, меняющую первую букву каждого слова в строке на номер слова
Ответ Создать тему
Опции темы

Текущее время: 05:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru