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

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

19.04.2010, 21:43. Просмотров 1614. Ответов 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
Ответы с готовыми решениями:

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

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

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

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

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

3
PointsEqual
ниначмуроФ
839 / 523 / 110
Регистрация: 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Эксперт С++
10054 / 5974 / 1493
Регистрация: 25.07.2009
Сообщений: 11,320
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.04.2010, 10:34

Удалить из строки s1 все символы, встречающиеся в строке s2.
Удалить из строки s1 все символы, встречающиеся в строке s2 А вот здесь как...

Написать программу, которая удаляет все заданные символы
char str; cin.getline(str, 250); char str2; cin &gt;&gt; str2; for (int i = 0; i...

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


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

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

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