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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
Лестат
12 / 11 / 1
Регистрация: 24.09.2009
Сообщений: 188
#1

Написать функцию, которая удаляет из строки s1 все символы, встречающиеся в строке s2 - C++

19.04.2010, 21:43. Просмотров 1364. Ответов 3
Метки нет (Все метки)

Народ, очень требуется помощь :

№ 1. Написать и протестировать функцию DELETE(s1, s2), которая удаляет из строки s1 все символы, встречающиеся в строке s2.

№ 2. Написать и протестировать функцию ESCAPE(str1, str2), которая при копировании текста из str1 в str2 преобразует литеры "новая строка" и "табуляция" в видимые последовательности литер \n и \t. Сделать также функцию, выполняющую обратное преобразование. ( Вообще ппц )
Need help, не знаю =(((
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.04.2010, 21:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Написать функцию, которая удаляет из строки s1 все символы, встречающиеся в строке s2 (C++):

Составить программу, которая удаляет из строки все повторно встречающиеся символы - C++
Составить программу, которая удаляет из строки все повторно встречающиеся символы. Исходная строка вводится с клавиатуры. C++

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

Написать функцию которая в строке заменяет все символы верхнего регистра в символы нижнего регистра - C++
Здравствуйте. помогите написать программу. Написать функцию которая в строке заменяет все символы верхнего регистра в символы нижнего...

Удалить из строки s1 все символы, встречающиеся в строке s2. - C++
Удалить из строки s1 все символы, встречающиеся в строке s2 А вот здесь как подсчитать кол-во удаленных символов? Пробовал поставить в...

Написать программу, которая удаляет все заданные символы - C++
char str; cin.getline(str, 250); char str2; cin >> str2; for (int i = 0; i < strlen(str); i++){ if (str==str2){ //что тут...

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

3
PointsEqual
ниначмуроФ
836 / 520 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
19.04.2010, 21:56 #2
щас easybudda с STL сделает)
0
Лестат
12 / 11 / 1
Регистрация: 24.09.2009
Сообщений: 188
19.04.2010, 22:00  [ТС] #3
НА языке Си

Добавлено через 2 минуты
не понял ...
0
easybudda
Модератор
Эксперт CЭксперт С++
9683 / 5633 / 956
Регистрация: 25.07.2009
Сообщений: 10,811
20.04.2010, 10:34 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от PointsEqual Посмотреть сообщение
щас easybudda с STL сделает)
Да тут и без STL не много писанины...
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
#include <stdio.h>
#include <string.h>
 
/* Написать и протестировать функцию DELETE(s1, s2), которая удаляет из строки s1 все символы, встречающиеся в строке s2. */
 
char *DELETE(char *s1, const char *s2){
    char *p;
    while ( p = strpbrk(s1, s2) )
        memmove(p, p + 1, strlen(p));
    return s1;
}
 
int main(void){
    char s1[BUFSIZ], s2[BUFSIZ];
    
    printf("String: ");
    if ( !fgets(s1, BUFSIZ, stdin) )
        return 1;
    printf("Characters to remove: ");
    if ( !fgets(s2, BUFSIZ, stdin) )
        return 1;
    
    DELETE(s1, s2);
    printf("Result: %s\n", s1);
    
    return 0;
}
Добавлено через 1 час 13 минут
корявенько как-то получилось, но работает...
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#include <stdio.h>
#include <string.h>
 
/*
*   Написать и протестировать функцию ESCAPE(str1, str2), которая при копировании текста из str1 в str2 
*   преобразует литеры "новая строка" и "табуляция" в видимые последовательности литер \n и \t. 
*   Сделать также функцию, выполняющую обратное преобразование.
*/
 
char *ESCAPE(char *s1, size_t len, const char *s2){
    char *p;
    for ( p = s1; *s2; ++s2 ){
        switch ( *s2 ){
            case '\n' :
                if ( (len -= 2) > 0 ){
                    *p++ = '\\';
                    *p++ = 'n';
                }
                else {
                    *p = '\0';
                    return s1;
                }
                break;
            case '\t' :
                if ( (len -= 2) > 0 ){
                    *p++ = '\\';
                    *p++ = 't';
                }
                else {
                    *p = '\0';
                    return s1;
                }
                break;
            default :
                if ( --len > 0 ){
                    *p++ = *s2;
                }
                else {
                    *p = '\0';
                    return s1;
                }
                break;
        }
    }
    *p = '\0';
    return s1;
}
 
/* s1 должна быть не меньше s2 */
char *UNESCAPE(char *s1, const char *s2){
    char *p;
    for ( p = s1; *s2; ++s2 ){
        if ( *s2 == '\\' ){
            switch ( *(s2 + 1) ){
                case 'n' :
                    *p++ = '\n';
                    ++s2;
                    break;
                case 't' :
                    *p++ = '\t';
                    ++s2;
                    break;
                default :
                    *p++ = '\\';
                    break;
            }
        }
        else{
            *p++ = *s2;
        }
    }
    *p = '\0';
    return s1;
}
 
 
int main(void){
    char s1[BUFSIZ], s2[BUFSIZ];
    strcpy(s1, "aaa\tbbb\nccc\tddd\n");
    printf("Origin: %s\n", s1);
    printf("Escaped: %s\n", ESCAPE(s2, BUFSIZ, s1));
    printf("Unescaped: %s\n", UNESCAPE(s1, s2));
    return 0;
}
1
20.04.2010, 10:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.04.2010, 10:34
Привет! Вот еще темы с ответами:

Описать функцию, которая удаляет из строки все лишние пробелы - C++
Помогите пожалуйста решить! Заранее благодарен!) Описать функцию, которая удаляет из строки все лишние пробелы. Пробелы считаются...

Написать программу, которая удаляет в строке все буквы b в тексте, написанном латинскими буквами - C++
Помогите пожалуйста написать программу. Нужно написать программу, которая удаляет в строке все буквы b в тексте, написанном латинскими...

Написать функцию, которая удалит из строки заданные символы - C++
написать функцию которая удалит из строки заданные символы. заранее спасибо!

Написать функцию, которая удаляет... - C++
Написать функцию, которая удаляет начальные пробелы из строки, полученной в качестве аргумента.


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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