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

Работа со строками (удаление из строки указанного символа) - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 60, средняя оценка - 4.83
KpuB
0 / 0 / 0
Регистрация: 09.03.2013
Сообщений: 3
09.03.2013, 23:00     Работа со строками (удаление из строки указанного символа) #1
Недавно начал изучать С++ в универе. Задали написать программу реализующую удаление из строки указанного символа. Программа компилируется, но правильно работать отказывается. Где я накосячил?
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
 
#include <iostream>
#include <string.h>
using namespace std;
// объект - стока символов
// реализовать:  удаление из стоки определенного символа
 
 
 
char* del_char(char* s, char c)
{
int j;
int s_len=strlen(s); 
char *p=new char[s_len-1];
int i=0;
while(s[i]!='\0')
{
if (s[i] != c)
   p[j++]=s[i];
i++;
}
 
return p;
}
 
 
 
void main (void)
{int kol;
 
 
cout <<"kol-vo simvolov v tekste?"<<endl;
cin>> kol;
 
 
int i;
char d;
char *str1  = new char [kol];
char *str2 =  new char [kol];
 
cout << "vvodi stroki simvolov: " << endl;
cin.getline(str1,strlen(str1));
 
cout<< "vvodi udalyaemii simvol: \n";
cin>> d;
for(i=0;i<kol;i++)
{
cout<<str1[i];cout<<endl;
}
str2=del_char(str1,d);
for(i=0;i<kol;i++)
{
cout<<str2[i];cout<<endl;
}
system ("pause");
}
Также во втором задании требуется добавить в программу реализацию удаления из первой стоки всех символов содержащихся во второй строке. Как это будет лучше сделать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.03.2013, 23:00     Работа со строками (удаление из строки указанного символа)
Посмотрите здесь:

C++ Удаление символа из строки
C++ Удаление символа строки
C++ Удаление символа из строки
Работа со строками. Удаление отдельных символов C++
C++ Удаление из строки символа, введенного пользователем
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
09.03.2013, 23:27     Работа со строками (удаление из строки указанного символа) #2
Перед возвратом указателя р, нужно в конец строки записать нулевой символ.
-=ЮрА=-
Заблокирован
Автор FAQ
09.03.2013, 23:52     Работа со строками (удаление из строки указанного символа) #3
KpuB, лови
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
#include <cstring>
#include <iostream>
using namespace std;
 
char* del_char(char* s, char c);
 
int main()
{
    char chr        = '\0';
    char text[1024] = {0};//Выделили память под строку
    cout<<"Enter text (less than 1024 chars): ";
    cin.getline(text, 1024);//Ввод строки с пробелами
    cout<<"Enter char to delete from text   : ";
    cin>>chr;
    cout<<"Text after deliting char : "<<strcpy(text, del_char(text, chr))<<endl;
    return 0;
}
 
char* del_char(char* s, char c)
{
    char * buf = strchr(s, c);
    while( buf )
    {
        if(buf + 1)
            strcpy(buf, buf + 1);
        else
            buf[0] = '\0';
        buf = strchr(buf, c);
    }
    return s;
}
Миниатюры
Работа со строками (удаление из строки указанного символа)  
KpuB
0 / 0 / 0
Регистрация: 09.03.2013
Сообщений: 3
10.03.2013, 20:41  [ТС]     Работа со строками (удаление из строки указанного символа) #4
Удаление 1 символа работает на отлично, спасибо!
А вот удаление из 1 строки всех символов содержащихся во второй строке что-то не пашет. (Не могу ввести эти строки)
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
#include <cstring>
#include <iostream>
using namespace std;
char* del_char(char* s, char c);
 
int main()
{   
    int r=0;
    char chr        = '\0';
    char text[1024] = {0};//Выделили память под строку
    cout<<"Enter text (less than 1024 chars): ";
    cin.getline(text, 1024);//Ввод строки с пробелами
    cout<<"Enter char to delete from text   : ";
    cin>>chr;
    cout<<"Text after deliting char : "<<strcpy(text, del_char(text, chr))<<endl;
    cout<<"Enter char to delete from text   : ";
 
 
 
    int size;
    char text1[1024] = {0};//Выделили память под 1 строку
 
    char text2 [1024] = {0};//Выделили память под 2 строку
    cout<<"Enter fist string (less than 1024 chars):    ";
    cin.getline (text1,1024);
    cout<<"Enter second string (less than 1024 chars):     ";
    cin.getline(text2, 1024);//Ввод 2 строки с пробелами
    size=strlen(text2);
    while (r<size-1)
    {
        char lol;
    lol=text2[r];
    strcpy(text1, del_char(text1,lol));
    r++;
    } 
 
    cout<<"Text:   "<<text1;
 
    system ("pause");
    return 0;
}
 
char* del_char(char* s, char c)
{
    char * buf = strchr(s, c);
    while( buf )
    {
        if(buf + 1)
            strcpy(buf, buf + 1);
        else
            buf[0] = '\0';
        buf = strchr(buf, c);
    }
    return s;
    
}
-=ЮрА=-
Заблокирован
Автор FAQ
10.03.2013, 21:28     Работа со строками (удаление из строки указанного символа) #5
Цитата Сообщение от KpuB Посмотреть сообщение
А вот удаление из 1 строки всех символов содержащихся во второй
- ниже реализация
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 <cstring>
#include <iostream>
using namespace std;
 
char* del_char(char* s, char c);
 
int main()
{
    char chr        = '\0';
    char str1[1024] = {0};//Выделили память под строку1
    char str2[1024] = {0};//Выделили память под строку2
    cout<<"Enter str1 (less than 1024 chars): ";
    cin.getline(str1, 1024);//Ввод строки с пробелами
    cout<<"Enter str2 (less than 1024 chars): ";
    cin.getline(str2, 1024);//Ввод строки с пробелами
    for(int i = 0; str1[i]; i++)
        strcpy(str2, del_char(str2, str1[i]));
    cout<<"Text after deliting char : "<<str2<<endl;
    return 0;
}
 
char* del_char(char* s, char c)
{
    char * buf = strchr(s, c);
    while( buf )
    {
        if(buf + 1)
            strcpy(buf, buf + 1);
        else
            buf[0] = '\0';
        buf = strchr(buf, c);
    }
    return s;
}
Миниатюры
Работа со строками (удаление из строки указанного символа)  
КонецСвета
15.06.2013, 09:22     Работа со строками (удаление из строки указанного символа)
  #6
 Комментарий модератора 
кросспост во фрилансе
http://www.cyberforum.ru/order-progr...ead901841.html
тема закрыта
Yandex
Объявления
15.06.2013, 09:22     Работа со строками (удаление из строки указанного символа)
Закрытая тема Создать тему
Опции темы

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