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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
almostclever
1 / 1 / 0
Регистрация: 04.03.2012
Сообщений: 101
#1

Удаление повторяющихся символов - C++

05.04.2012, 12:22. Просмотров 1705. Ответов 6
Метки нет (Все метки)

Задача банальна. Удалить повторяющиеся символы в строке. В интернете шарил, предложенные варианты слишком сложные и непонятные. Язык си, просто си.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.04.2012, 12:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Удаление повторяющихся символов (C++):

Удаление повторяющихся символов - C++
Есть строка символов, я её обрабатываю, удаляю слово с повторяющимися символами,дело в том что заодно удаляются и цифровые слова, 55 44 33...

Удаление повторяющихся символов - C++
из последовательности символов удалить самую большую из одинаковых элементов допустим есть строка aabbbbzcc, на выходе aazcc ...

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

Удаление из строки повторяющихся символов - C++
Например Ввод: ABBGBAZ Вывод: ABGZ

Удаление повторяющихся символов из строки - C++
Необходимо написать функцию delete_repeats, которая удаляет все повторяюшиеся символы из строки. например: Only three more lessons...

Поиск повторяющихся символов в тексте и удаление таких строк - C++
нужен готовый .exe. Есть .txt файлы, в нем нужно по удалять строчки - где какой либо символ повторяется больше 2, 3 раз и т.д. пример:...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
05.04.2012, 12:49 #2
Порядок символов при выводе не важен?
almostclever
1 / 1 / 0
Регистрация: 04.03.2012
Сообщений: 101
05.04.2012, 12:56  [ТС] #3
Ну вообще у меня задача с шифрованием методом лозунга. Алфавит abcdefg... и т.д. Я беру лозунг и вставляю его в алфавит в начало, к примеру language, получается languageabcdefg... , должно получится languebcdf...
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
05.04.2012, 13:09 #4
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
 
int main()
{
    char str[] = "languageabcdefg";
    char alphabet[256] = { 0 };
    char *ptr, *current;
    for(ptr = str; *ptr; ++ptr)
        if(!(alphabet[(int)*ptr]))
            alphabet[(int)*ptr] = 1;
    for(ptr = str, current = str; *ptr; ++ptr)
        if(alphabet[(int)*ptr])
        {
            *current++ = *ptr;
            alphabet[(int)*ptr] = 0;
        }
    *current = '\0';
    printf("%s\n", str);
    return 0;
}
a.n.o.n.i.m
137 / 137 / 15
Регистрация: 26.02.2011
Сообщений: 528
05.04.2012, 13:10 #5
Ниче не понял,то вот держи исходник менят определенные буквы на тоже определенные,можешь сам подкорректировать что нужно,в данном случае abc на def

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
#include <conio.h>
#include <stdio.h>
#include <io.h>
#include <stdlib.h>
int main()
{
 
        FILE *f1,*f2;//2 файла
        char nameIn[20];//имя файла1(длина)
        char nameOut[20];//имя файла2(длина)
        char str[100] ;//строка в файле
        int size;//переменная
        printf("Vvedite imy faila: ");   //спрашиваешь имя
        scanf("%s",nameIn);       //считываешь имя
        f1 = fopen(nameIn,"r");//открываем файл 1
        while (f1 == NULL)//цикл от ошибок,если не сущевствует файла1
        {
              printf("\tError!\n");
              printf("Vvedite imy faila: ");   //спрашиваешь имя
              scanf("%s",nameIn);       //считываешь имя
              f1 = fopen(nameIn,"r");//открытие файла1
        }
        size = filelength(fileno(f1));//получаем размер файла
        int readsize = fread(str,sizeof(char),sizeof(char)*size,f1);//читают строку из файла по символам.в переменную readsize записывается размер
        for(int i=0;i<readsize;i++)//цикл замены букв в строке из файла
        {
                        if( str[i] == 'a' && str[i+1] == 'b' && str[i+2] == 'c')//происходит замена букв
                                 {
                                 str[i] = 'd';
                                 str[i+1] = 'e';
                                 str[i+2] = 'f';
                                 }
        }
        printf("Vvedite imy vihodnogo faila: ");   //спрашиваешь имя
        scanf("%s",nameOut);       //считываешь имя
        f2 = fopen(nameOut,"w");//открытие файла2
        printf("\n");
        printf("\tRezultat izmeneniy: \n");
        for(int i=0;i<readsize;i++)//цикл показа результата на экране монитора
        {
                printf("%c",str[i]);
                fprintf(f2,"%c",str[i]);
        }
        fclose(f2);//закрытие файла2
        fclose(f1);//закрытие файла1
getch() ;
}
almostclever
1 / 1 / 0
Регистрация: 04.03.2012
Сообщений: 101
05.04.2012, 13:23  [ТС] #6
Цитата Сообщение от soon Посмотреть сообщение
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
 
int main()
{
    char str[] = "languageabcdefg";
    char alphabet[256] = { 0 };
    char *ptr, *current;
    for(ptr = str; *ptr; ++ptr)
        if(!(alphabet[(int)*ptr]))
            alphabet[(int)*ptr] = 1;
    for(ptr = str, current = str; *ptr; ++ptr)
        if(alphabet[(int)*ptr])
        {
            *current++ = *ptr;
            alphabet[(int)*ptr] = 0;
        }
    *current = '\0';
    printf("%s\n", str);
    return 0;
}
Не могли бы вы объяснить, насколько это возможно, алгоритм.
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
05.04.2012, 13:25 #7
almostclever, изначально заносим в массив alphabet информацию о каждом символе - если он есть в строеке, то 1, в противном случае 0. Затем проходим по строке, если символ присутствует в массиве alphabet, то копируем его. После всего не забываем добавить '\0'
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.04.2012, 13:25
Привет! Вот еще темы с ответами:

Удаление повторяющихся точек - C++
в общем, делаю курсовик, вот его задание: &quot;Даны N точек на плоскости. Для всех треугольников, образуемых любыми тремя точками,...

Удаление повторяющихся чисел - C++
вот мой код vector&lt;int&gt; array; ifstream f(&quot;test.txt&quot;); while (!f.eof()) { int tmp; f &gt;&gt; tmp; array.push_back(tmp); ...

Удаление повторяющихся элементов в векторе - C++
Нужно перегрузить унарный оператор ~ что бы он удалял повторяющиеся элементы в векторе vector&amp; operator ~ () { if (count &gt; 0) ...

Удаление из массива повторяющихся элементов - C++
Значит,задача : удалить повторы в массиве, оставив по одному вхождению! моя идея. если 2 компонента, стоящие рядом, равны друг другу,...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
05.04.2012, 13:25
Ответ Создать тему
Опции темы

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