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

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

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

Удалить среднею букву в нечетных словах текста - C++

13.12.2012, 03:36. Просмотров 421. Ответов 5
Метки нет (Все метки)

Нужно удалить в каждом нечетном слове среднею букву, я смог дойти только до такого:
удаляет онли в первом слове, дальше уж не знаю, как составить алгоритм, нужна Ваша помощь.
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
#include <iostream>
#include <conio.h>
 
using namespace std;
 
void main ()
{
    
    char text[256];
    int i=0,j=0,q=0;
    cout<<"Enter text: ";
    gets(text);
    while (text[i]!='\0')
    { 
        while(text[i]!=' ' && text[i]!='\0')
        {
            i++;
        }
        j=i;
        if(j%2==1)
        {
            q=(q+(j/2));
            text[q]='-';
            i++;
        }
        if(text[i]!=' ')
        {
            i++;
        }
        
    }
    cout<<"Rez:  "<<text;
    getch();
}
Все слова разделяет только пробелы.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.12.2012, 03:36     Удалить среднею букву в нечетных словах текста
Посмотрите здесь:

Поменять в словах первую букву на маленькую C++
C++ Из каждого слова заданного текста удалить последнюю букву.
В словах заданной строки, имеющих нечетную длину, удалить среднюю букву C++
Задан текст. Удалить в словах первую букву C++
Составить программу для кодирования некоторого текста до 50 символов, заменяя каждую букву на пятую после нее букву из а C++
В словах наибольшей длины удалить среднюю букву (средние буквы) C++
Символ s в нечетных словах C++
C++ Найти букву в словах из предложения и вывести эти слова
C++ Удалить среднюю букву в нечетных словах текста
C++ Работа со строками. Заменить каждую первую букву в словах, начинающихся с гласной буквы на прописную
C++ Удалить из текста все слова заканчивающиеся на гласную букву
Удалить последнюю букву из каждого слова заданного текста (файловый ввод/вывод) C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Xunnapb
1 / 1 / 0
Регистрация: 07.12.2012
Сообщений: 8
13.12.2012, 04:59     Удалить среднею букву в нечетных словах текста #2
Замените цикл (строки 13-31) на следующий и добавьте в начале объявление переменной k=0.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
while (text[i]!='\0')
{
    while(text[i+1]!=' '&&text[i+1]!='\0') i++;
    //Переменная-счетчик номера слова
    j++;
    //Проверка на четность позиции слова
    if(j%2==1)
    {
        //Проверка на четность количества символов в слове
        //k-индекс первого символа в слове
        //i-индекс последнего символа в слове
        if ((i+1+k)%2==0)
        q=(i+1+k)/2;
        else q=(i+k)/2;
        text[q]='-';
    }
    i++;
    //Индекс первого символа в следующем слове
    k=i+1;
}
Единственное, считал что слова разделяются одним пробелом. Если может быть несколько пробелов между словами, то надо немного подкоректировать будет
AndreyZ01
1 / 1 / 0
Регистрация: 28.10.2010
Сообщений: 112
13.12.2012, 12:32  [ТС]     Удалить среднею букву в нечетных словах текста #3
спасибо, но работает все равно только к первому слове
DiffEreD
 Аватар для DiffEreD
1425 / 762 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
13.12.2012, 13:42     Удалить среднею букву в нечетных словах текста #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 <algorithm>
#include <iterator>
#include <vector>
#include <string>
#include <sstream>
 
int main()
{
    setlocale (LC_ALL, "Russian");
 
    std::string str = "Удалить среднею букву в нечетных словах текста";
    bool state = true;
    std::istringstream is(str);
    std::vector<std::string> vs((std::istream_iterator<std::string>(is)), std::istream_iterator<std::string>());
    std::for_each(vs.begin(), vs.end(), [&state](std::string& s)
    {
        if (state) s.erase(s.size()/2, 1);
        state = !state;
        std::cout<<s<<" ";
    });
    std::cout<<"\n";
 
    system("pause");
    return 0;
}
AndreyZ01
1 / 1 / 0
Регистрация: 28.10.2010
Сообщений: 112
13.12.2012, 13:58  [ТС]     Удалить среднею букву в нечетных словах текста #5
спасибо, все робит, с меня +
DiffEreD
 Аватар для DiffEreD
1425 / 762 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
13.12.2012, 15:07     Удалить среднею букву в нечетных словах текста #6
Чета тупанул с вектором - можно было и без него:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int main()
{
    setlocale (LC_ALL, "Russian");
 
    std::string str = "Удалить среднею букву в нечетных словах текста";
    bool state = true;
    std::istringstream is(str);
    std::for_each(std::istream_iterator<std::string>(is), std::istream_iterator<std::string>(), [&state](std::string s)
    {
        if (state) s.erase(s.size()/2, 1);
        state = !state;
        std::cout<<s<<" ";
    });
    std::cout<<"\n\n";
 
    system("pause");
    return 0;
}
Yandex
Объявления
13.12.2012, 15:07     Удалить среднею букву в нечетных словах текста
Ответ Создать тему
Опции темы

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