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

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

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

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

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

Написать функцию, которая удалит из строки заданные символы C++
C++ Удалить из строки s1 все символы, встречающиеся в строке s2.
C++ Написать функцию, которая удаляет...
Написать функцию, которая удаляет все лишние пробелы C++
C++ Описать функцию, которая удаляет из строки все лишние пробелы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
19.04.2010, 21:56     Написать функцию, которая удаляет из строки s1 все символы, встречающиеся в строке s2 #2
щас easybudda с STL сделает)
Лестат
12 / 11 / 1
Регистрация: 24.09.2009
Сообщений: 188
19.04.2010, 22:00  [ТС]     Написать функцию, которая удаляет из строки s1 все символы, встречающиеся в строке s2 #3
НА языке Си

Добавлено через 2 минуты
не понял ...
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9372 / 5422 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
20.04.2010, 10:34     Написать функцию, которая удаляет из строки s1 все символы, встречающиеся в строке s2 #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;
}
Yandex
Объявления
20.04.2010, 10:34     Написать функцию, которая удаляет из строки s1 все символы, встречающиеся в строке s2
Ответ Создать тему
Опции темы

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