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

Замена слов в строке на другое слово - C++

Восстановить пароль Регистрация
 
Alex_lion
0 / 0 / 0
Регистрация: 04.03.2014
Сообщений: 2
04.03.2014, 22:07     Замена слов в строке на другое слово #1
Не могу понять в чём ошибка, вроде бы всё логично, но при работе программа выдаёт 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
//Задача: Вводится строка str и cлово word, после чего программа должна заменить слова из str на word, если они начинаются на одну и туже букву
//Ну и вывести готовую строку
 
#include <iostream>
#include <string>
 
using namespace std;
 
int main()
{
    string str, word, letter;
    int i=0;
    
    getline(cin, str);
    cin >> word;
    
    letter = word;
    letter.swap(1); //ищу первую букву
    
    wlile(i<(str.size()){
    
        unsigned int n, num, l=0;
        
        n = str.find(letter); //присваиваю n номер, того когда находится первая буква слова
        
        if(str[n-1]==' '){ //проверяюю являится ли эта буква началом нового слова
        
            //если да, то считаю размер этого слова(всмесле в слова в строке)
            
            num = n +1;
            while(str[num]!=' '){
                l++; // размер слова
            }
            str.replace((n+1), j, word); //заменяю начиная с n+1, j символов на word
            i = n;
        }
            
        else 
            i++;    
    }
    cout<<str;
    
    return 0;
}
Буду рад любой помощи
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ev_Hyper
 Аватар для Ev_Hyper
1806 / 1627 / 435
Регистрация: 15.12.2013
Сообщений: 5,779
04.03.2014, 22:59     Замена слов в строке на другое слово #2
Alex_lion, компилятор указывает на ошибки:
Вместо:
C++
1
wlile(i<(str.size()){
C++
1
    while(i<(str.size())){
А также, у вас переменная j не объявлена.
Alex_lion
0 / 0 / 0
Регистрация: 04.03.2014
Сообщений: 2
04.03.2014, 23:44  [ТС]     Замена слов в строке на другое слово #3
Ev_Hyper, Исправил, но программа всё равно слова не заменяет
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
#include <iostream>
#include <string>
 
using namespace std;
 
int main()
{
    string str, word, letter;
    int i=0;
 
    getline(cin, str);
    cin >> word;
 
    letter = word;
    letter.substr(1,1); //ищу первую букву
 
    while(i<(str.size())){
 
        unsigned int n, num, l=0;
 
        n = str.find(letter); //присваиваю n номер, того когда находится первая буква слова
 
        if(str[n-1]==' '){ //проверяюю являится ли эта буква началом нового слова
 
            //если да, то считаю размер этого слова(всмесле в слова в строке)
 
            num = n +1;
            while(str[num]!=' '){
                l++; // размер слова
            }
            str.replace((n+1), l, word); //заменяю начиная с n+1, l символов на word
            i = n;
        }
 
        else
            i++;
    }
    cout<<str;
 
    return 0;
}
KOPOJI
Модератор
 Аватар для KOPOJI
16242 / 6453 / 390
Регистрация: 12.06.2012
Сообщений: 19,337
04.03.2014, 23:57     Замена слов в строке на другое слово #4
А не проще так, например? Тоже решение "в лоб"..
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>
#include <sstream>
 
int main(int argc, char *argv[])
{
    std::string str;
    std::string new_str;
    std::string word;
    std::string tmp_word;
    
    std::cout << "Введите предложение.." << std::endl;
    std::getline(std::cin, str);
    
    std::cout << "Введите слово для замены.." << std::endl;
    std::cin >> word;
    
    std::stringstream  data(str);
    
    while(std::getline(data, tmp_word, ' '))
        new_str.append((tmp_word[0] == word[0] ? word : tmp_word) + " ");
 
    std::cout << "Исходная строка:" << std::endl << str << std::endl;
    std::cout << "Полученная строка:" << std::endl << new_str << std::endl;
 
    return 0;
}
Yandex
Объявления
04.03.2014, 23:57     Замена слов в строке на другое слово
Ответ Создать тему
Опции темы

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