Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 1
Регистрация: 18.04.2015
Сообщений: 14
1

Удаление элементов строки

22.04.2015, 14:23. Показов 970. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток. Суть вопроса: Можно ли удалить элементы строки без каких-либо сдвигов?
Пример рекурсивной функции, где хотелось бы это реализовать:
Кликните здесь для просмотра всего текста

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
bool func( *str )
{
    int q = 0;                  // первый элемент строки
    int w = strlen(str)-1;  // последний элемент строки
    if ( str[q] == str[w] && q < w ) 
        ...                           // если они совпадают происходит удаление первого и последнего
                return ( str ); // здесь возвращаем строку уже без удаленных элементов, где при следующем заходе будут
                                   //  сравнивать 2-й и предпоследний ну и так далее
        else if ( str[q] == str[w] && q >= w )  
                return true;
        else
                return false;
}

Все было бы довольно просто, но нельзя использовать цикл и глобальные переменные.
Алгоритм придумал для решения этой задачи:
Кликните здесь для просмотра всего текста

Описать рекурсивную функцию Palindrom(S) логического типа, возвращающую True, если строка S является палиндромом (то есть читается одинаково слева направо и справа налево), и False в противном случае. Оператор цикла в теле функции не использовать. Вывести значения функции Palindrom для пяти данных строк.

Первоначально код выглядит таким образом и работает идеально.
Кликните здесь для просмотра всего текста

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
#include <iostream>
#include <string.h>
#include <conio.h>
using namespace std;
bool Palindrom (char *str, int q,int w);
void main()
{
    char *str;
    bool m;
    for ( char e = 'y'; e =='y'; )
    {
        cout <<"Enter word ";
        str = (char* ) malloc ( sizeof(char ));
        cin >> str;
        int q = 0;
        int w = strlen(str) - 1;
        m = Palindrom ( str, q, w );
        if ( m )
            cout <<"This is palindrom!" << endl;
        else
            cout <<"Fail!" << endl;
        cout <<"Retry (Y)? No (N)." << endl;
        e = getch();
        for ( ; e != 'y' && e != 'n'; )
        {
            cout <<"Error massage." << endl;
            e = getch();
        }
    }
    system("pause");
}
bool Palindrom( char *str, int q, int w ) 
{
    if (str[q] == str[w] && q < w)
    {
        q++;
        w--;
        return Palindrom(str, q, w);
    }
    else if (str[q] == str[w] && q >= w)
        return true;
    else
        return false;
}

Но как написано в условии передавать нужно только строку, цикл или глобальные переменные использовать нельзя. Объявлять переменные в функции - не вариант, ибо после каждого захода им будут присваиваться значения первого и последнего, поэтому я решил при совпадении удалять их и сравнивать следующие. Поделитесь опытом, может фишка какая есть, уже и не знаю, чего бы такого этакого придумать. Спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.04.2015, 14:23
Ответы с готовыми решениями:

Удаление элементов строки
Извините, если задача покажется вам банальной, но я что-то никак не могу разобраться. В строку...

Удаление элементов со строки
Нужно ввести с клавиатуры строку и число, число элементов которые нужно удалить с левой стороны...

Удаление элементов из строки
#include &lt;stdio.h&gt; int vvod ( char *m, int n, int *k); void udal ( char *m,int n, int k); void...

Удаление из строки повторяющихся элементов (через функцию)
Добрый день! #include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; //Удаление...

0
22.04.2015, 14:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.04.2015, 14:23
Помогаю со студенческими работами здесь

Сохранение строки в массив и удаление повторяющихся элементов массива
Нужно сделать так, что бы строка занасилась в массив без повтора элементов.(к примеру строка:...

Удаление одинаковых элементов из строки
Программа заменяет ВСЕ найденные похожие элементы.(Прим. &quot;чёлка у мамы ёлка красивая.&quot; - ёлка &gt;&gt; &quot;ч...

Удаление одинаковых элементов из строки
Программа заменяет ВСЕ найденные похожие элементы.(Прим. &quot;чёлка у мамы ёлка красивая.&quot; - ёлка &gt;&gt; &quot;ч...

Удаление элементов второй строки из первой
Задача. Удалить из строки S1 символы, встречающиеся в строке S2. Код: #include &lt;iostream.h&gt;...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru