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

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

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

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

13.12.2012, 03:36. Просмотров 441. Ответов 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++
Задан текст. Напечатать слова этого текста отличные от последнего слова и удалить в каждом из них первую букву. #include&lt;iostream&gt; ...

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

В словах заданной строки, имеющих нечетную длину, удалить среднюю букву - C++
Ввести несколько строк, каждая из которых содержит некоторое количество слов. В словах заданной строки, имеющих нечетную длину, удалить...

Удалить из текста все слова заканчивающиеся на гласную букву - C++
Использовать можно только массив символов, переменные string и их функции запрещены( Начал пытаться продумывать решение сам и пришел...

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

Удалить последнюю букву из каждого слова заданного текста (файловый ввод/вывод) - C++
В текстовом файле задана последовательность слов, обособленных пробелами. Удалить последнюю букву из каждого слова, результат вывести на...

Символ s в нечетных словах - C++
На вход дается строка, заканчивающаяся на 13 символ (как обычно). Слова отделяются друг от друга пробелами (одним или несколькими). Найти...

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

Найти букву в словах из предложения и вывести эти слова - C++
Суть :Найти букву в словах из предложения и вывести эти слова, код был найден в интернете и непонятно только вот, что #define...

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

Удалить первую букву "о", если такая имеется и удалить последнюю букву "л" - C++
Дано слово. Удалить первую букву &quot;о&quot;, если такая имеется и удалить последнюю букву &quot;л&quot;.


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
1429 / 766 / 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
1429 / 766 / 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     Удалить среднею букву в нечетных словах текста
Ответ Создать тему
Опции темы

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