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

Строки (ввести строку разделенную пробелами, и в словах которые оканчиваются на АВС заменить СС) - C++

Восстановить пароль Регистрация
 
Димон19
1 / 1 / 0
Регистрация: 13.12.2010
Сообщений: 41
24.06.2013, 01:09     Строки (ввести строку разделенную пробелами, и в словах которые оканчиваются на АВС заменить СС) #1
ввести строку разделенную пробелами, и в словах которые оканчиваются на АВС заменить СС... помогите просто определить 3 последнии буквы,и как менять их)) просто завтра экзамен)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.06.2013, 01:09     Строки (ввести строку разделенную пробелами, и в словах которые оканчиваются на АВС заменить СС)
Посмотрите здесь:

в тех словах, которые оканчиваются сочетанием букв ing, заменить это окончание на ed. C++
В тех словах, которые оканчиваются сочетанием букв ing, заменить это окончание на ed. C++
C++ Удалить из строки слова, которые оканчиваются на гласную
C++ Ввести строку с пробелами
Как на C++ ввести с консоли строку с пробелами в тип string? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Демик
9 / 9 / 0
Регистрация: 19.04.2012
Сообщений: 114
24.06.2013, 01:23     Строки (ввести строку разделенную пробелами, и в словах которые оканчиваются на АВС заменить СС) #2
строка какого типа не указано?
Димон19
1 / 1 / 0
Регистрация: 13.12.2010
Сообщений: 41
24.06.2013, 01:25  [ТС]     Строки (ввести строку разделенную пробелами, и в словах которые оканчиваются на АВС заменить СС) #3
неа...
Демик
9 / 9 / 0
Регистрация: 19.04.2012
Сообщений: 114
24.06.2013, 01:33     Строки (ввести строку разделенную пробелами, и в словах которые оканчиваются на АВС заменить СС) #4
Что на что у тебя заменить надо?
Димон19
1 / 1 / 0
Регистрация: 13.12.2010
Сообщений: 41
24.06.2013, 01:38  [ТС]     Строки (ввести строку разделенную пробелами, и в словах которые оканчиваются на АВС заменить СС) #5
дано например 5 слов,и слова которые оканчиваются на АВС заменить символы АВС на сс..
adasdaabc abcdfdf asdabc должно быть так adasdaсс abcdfdf asdсс
Демик
9 / 9 / 0
Регистрация: 19.04.2012
Сообщений: 114
24.06.2013, 01:47     Строки (ввести строку разделенную пробелами, и в словах которые оканчиваются на АВС заменить СС) #6
Тюю, легкотня, щас 5 сек.

Добавлено через 5 минут
Пусть у нас строка массив char*.
Вот ввел ты строку, получился у тебя массив чаров str[n]. Сначала ты ищещ длинну строки:
C++
1
2
3
4
5
int size = 0;
while(str[size]!= '\0')
{
    i++;
}
Нашел, дальше ты должен разбить предложение на слова и проверить последнии 3 символа слова и заменить на нужное если символы совпадают, но как ты наверное заметил, у нас появляется лишний пробел, его можно убрать, но мне лень = ), оставляю это на тебя = ):
C++
1
2
3
4
5
6
7
8
9
for(int i = 0; i< size; i++)
{
    if(str[i] == ' ' && str[i-1] == 'c' && str[i-2] == 'b' && str[i-3] == 'a')
      {
           str[i-1]=' ';
             str[i-2]='c';
             str[i-3]='c';
      }
}
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
24.06.2013, 01:49     Строки (ввести строку разделенную пробелами, и в словах которые оканчиваются на АВС заменить СС) #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <sstream>
#include <string>
#include <algorithm>
#include <iterator>
 
int main()
{
    std::string str;
    std::getline(std::cin, str);
    std::istringstream ist(str);
    typedef std::istream_iterator<std::string> input_str;
    std::for_each(input_str(ist), input_str(), [](std::string s)
    {
        std::string::size_type pos = s.rfind("ABC");
        if (pos != std::string::npos && pos == s.length() - 3)
            s.replace(pos, 3, "CC");
        std::cout << s << " ";
    } );
}
Демик
9 / 9 / 0
Регистрация: 19.04.2012
Сообщений: 114
24.06.2013, 01:58     Строки (ввести строку разделенную пробелами, и в словах которые оканчиваются на АВС заменить СС) #8
@MrGluck, так не честно = )
Димон19
1 / 1 / 0
Регистрация: 13.12.2010
Сообщений: 41
24.06.2013, 01:59  [ТС]     Строки (ввести строку разделенную пробелами, и в словах которые оканчиваются на АВС заменить СС) #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
#include <stdio.h>
 
int main() {
    char str[n]
 
    printf("Enter string: ");
    scanf("%s", n);
  
    getchar(n);
    int size = 0;
while(str[size]!= '\0')
{
    i++;
}
for(int i = 0; i< size; i++)
{
    if(str[i] == ' ' && str[i-1] == 'c' && str[i-2] == 'b' && str[i-3] == 'a')
      {
           str[i-1]=' ';
             str[i-2]='c';
             str[i-3]='c';
      }
}
испарвте пожалуйста
Демик
9 / 9 / 0
Регистрация: 19.04.2012
Сообщений: 114
24.06.2013, 02:00     Строки (ввести строку разделенную пробелами, и в словах которые оканчиваются на АВС заменить СС) #10
@Димон19, тебе @MrGluck, дал гораздо лучший вариант = )
Димон19
1 / 1 / 0
Регистрация: 13.12.2010
Сообщений: 41
24.06.2013, 02:06  [ТС]     Строки (ввести строку разделенную пробелами, и в словах которые оканчиваются на АВС заменить СС) #11
у него очень сложно))) я там ни слова не понял..пасиб

Добавлено через 3 минуты
там я там ничего не понял))) хотя спасибо буду разбираться)) но твой понятней,помоги доделать))

Добавлено через 1 минуту
фвфв
Демик
9 / 9 / 0
Регистрация: 19.04.2012
Сообщений: 114
24.06.2013, 02:18     Строки (ввести строку разделенную пробелами, и в словах которые оканчиваются на АВС заменить СС) #12
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>
 
int main(int argс, char* argv[]) 
{
    char* str[];
 
    printf("Enter string: ");
    getline(str);
 
    int size = 0;
while(str[size]!= '\0')
{
    i++;
}
for(int i = 0; i< size; i++)
{
    if(str[i] == ' ' && str[i-1] == 'c' && str[i-2] == 'b' && str[i-3] == 'a')
      {
           str[i-1]=' ';
             str[i-2]='c';
             str[i-3]='c';
      }
}
return 0;
}
Должно заработать.
Все таки советую разобраться с вариантом MrGluck, так как у него сделано гораздо лучше.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
24.06.2013, 02:18     Строки (ввести строку разделенную пробелами, и в словах которые оканчиваются на АВС заменить СС) #13
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <sstream>
#include <string>
#include <algorithm>
#include <iterator>
 
int main()
{
    std::string str; // тупо строка
    std::getline(std::cin, str); // считываем до нажатия Enter
    std::istringstream ist(str); // инициализируем объект std::istringstream нашей строкой (по своей сути это буфер, из него можно извлекать информацию также, как если бы мы работали с объектом std::cin)
    typedef std::istream_iterator<std::string> input_str; // создаем синоним для итератора, имеющего в качестве value_type объект std::string. Т.е. грубо говоря как указатель на объект std::string
    std::for_each(input_str(ist), input_str(), [](std::string s) // пока удается успешно извлечь из буфера (пока он не пуст), у нас получается инициализировать итератор новой строкой. Пока не получили пустой конструктор итератора. Все объекты воспринимаем как std::string s
    {
        std::string::size_type pos = s.rfind("ABC"); // узнаем позицию вхождения комбинации ABC в строку. поиск ведем с конца
        if (pos != std::string::npos && pos == s.length() - 3) // если данная комбинация существует и указывает на третий символ с конца
            s.replace(pos, 3, "CC"); // начиная с этой позиции заменяем 3 далее идущих символа на комбинацию CC
        std::cout << s << " "; // выводим полученную строку на экран
    } );
}
что-нибудь еще не ясно?
Димон19
1 / 1 / 0
Регистрация: 13.12.2010
Сообщений: 41
24.06.2013, 02:37  [ТС]     Строки (ввести строку разделенную пробелами, и в словах которые оканчиваются на АВС заменить СС) #14
он выводит туже строку он не поменял последние символы((

Добавлено через 4 минуты
не работает))
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.06.2013, 02:54     Строки (ввести строку разделенную пробелами, и в словах которые оканчиваются на АВС заменить СС)
Еще ссылки по теме:

Из строки распечатать только те слова, которые начинаются и оканчиваются одной и тоже буквой C++
Ввести строку. Выдать все слова, которые имеют длину больше, чем длина последнего слова строки C++
C++ Строки: заменить в словах цифры малыми буквами латинского алфавита

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

Или воспользуйтесь поиском по форуму:
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
24.06.2013, 02:54     Строки (ввести строку разделенную пробелами, и в словах которые оканчиваются на АВС заменить СС) #15
Строки (ввести строку разделенную пробелами, и в словах которые оканчиваются на АВС заменить СС)
Yandex
Объявления
24.06.2013, 02:54     Строки (ввести строку разделенную пробелами, и в словах которые оканчиваются на АВС заменить СС)
Ответ Создать тему
Опции темы

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