Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
cubeman9
0 / 0 / 0
Регистрация: 10.01.2012
Сообщений: 8
#1

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

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

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

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

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

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

Напечатать все слова, отличные от последнего слова строки, удалив из каждого слова первую и последнюю буквы - C++
Близиться сессия,а завтра мне сдавать 2 проги. Помогите ребят,могу даже 100 скинуть,если уж так трудно помочь. 8.Задан...

Вывести количество слов и первую букву каждого слова - C++
Нужно написать программу которая выводит количество слов и первую букву каждого слова. Врооде всё правильно написал, не знаю где ошибка ): ...

Перенести первую букву каждого слова в его конец - C++
В произвольном тексте,хранящемся в файле и содержащем не более 10 строк(в каждой строке не более 80 символов),перенести первую букву...

Вывести первую и последнюю букву каждого слова с файла - C++
Всем привет, помогите написать программу, которая выводит на экран Первую и последнюю букву каждого слова с файла. Я старался но сломал...

10
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;
}
1
Миниатюры
Написать функцию, меняющую первую букву каждого слова в строке на номер слова  
Heidel
111 / 111 / 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;
}
0
easybudda
Модератор
Эксперт CЭксперт С++
9694 / 5644 / 962
Регистрация: 25.07.2009
Сообщений: 10,848
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;
}
0
AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
15.02.2012, 17:00 #5
easybudda, а если не пробел а запятые или другие знаки препинания. а если пробелов нет? это просто демо. без всякой обработки.
для демонстрации. предложение менее 10 слов пойдет. с пробелами как разделителем
0
easybudda
Модератор
Эксперт CЭксперт С++
9694 / 5644 / 962
Регистрация: 25.07.2009
Сообщений: 10,848
15.02.2012, 17:06 #6
Цитата Сообщение от AzaKendler Посмотреть сообщение
а если пробелов нет?
Если специально не оговорено другое, слова в строке пробельными символами разделяются, а запятые с точками никуда не денутся...

Цитата Сообщение от AzaKendler Посмотреть сообщение
это просто демо. без всякой обработки.
ну-ну...
0
go
Эксперт С++
3586 / 1366 / 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/286bdaba0fd2cf6e6ae4d226db1b39df
0
AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
15.02.2012, 17:15 #8
Цитата Сообщение от easybudda Посмотреть сообщение
ну-ну.
ну на то и есть куча опытных форумчан готовых предложить решение со всеми возможными обработками. но твоя функция недружественна она слишком много просит на входе. если уж ты хотел обработку то надо было в тело пихать а не спрашивать в параметрах. ну а если дружественность не важна то можно было попросить еще и количество слов. количество букв в каждом слове - ну чтоб в теле почти нечего было делать
0
easybudda
Модератор
Эксперт CЭксперт С++
9694 / 5644 / 962
Регистрация: 25.07.2009
Сообщений: 10,848
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;
}
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
15.02.2012, 17:37 #10
easybudda, не обязательно разделители это пробелы, это в частном случае http://liveworkspace.org/code/c44e9aacda70d2f815799ab85c8e4c93
В общем случае
http://liveworkspace.org/code/88920b86502dab04f171ac313b710c20
0
easybudda
Модератор
Эксперт CЭксперт С++
9694 / 5644 / 962
Регистрация: 25.07.2009
Сообщений: 10,848
15.02.2012, 17:56 #11
Цитата Сообщение от go Посмотреть сообщение
е обязательно разделители это пробелы
Да и символы в словах - не обязательно буквы, цифры тоже подойдут, только пойди потом разбери, где номер слова, где само слово... А по тому, чтобы голову себе не забивать, и коль скоро никаких дополнительных условий нет, лучше считать, что слова состоят из букв, разделены одним или несколькими пробельными символами (может потому их пробельными и называют? ), количество слов заранее не известно.
0
15.02.2012, 17:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.02.2012, 17:56
Привет! Вот еще темы с ответами:

Поменять первую и последнюю букву местами для каждого слова - C++
1. Печать ленту со следующими изменениями: поменять первую и последнюю букву местами для каждого слова; 2. Находит количество...

В заданной последовательности слов заменить первую букву каждого слова заглавной - C++
1. Дана последовательность слов. Напечатать все слова, предварительно вы*полнив преобразования их по правилу: заменить во всех словах...

У каждого слова введенной строки поменять местами первую и последнюю букву. - C++
Помогите, пожалуйста с задачей: У каждого слова введенной строки поменять местами первую и последнюю букву. Перемену букв в слове...

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


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru