Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 1
Регистрация: 01.11.2011
Сообщений: 18

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

01.11.2011, 22:44. Показов 1071. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Программа заключается в том, чтобы удалять повторяющиеся символы.
Помогите отредактировать программу, нужно добавить еще один цикл, не знаю какой, чтобы сдвигать строки при встречи повторяющихся символов.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<string.h>
#include<conio.h>
#include<stdio.h>
void main()
{
int i;
char S[100];
printf("vvedite stroku");
gets(S);
for(i=0;i<strlen(S);i++)            
if (S[i]==' ' && S[i+1]==' ');          \\куда-то сюда как я понимаю...
S[i]=S[i+1];
puts(S);
}
Что нужно добавить?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.11.2011, 22:44
Ответы с готовыми решениями:

Как закрепить высоту EditText, чтобы помещался только один ряд символов
Как закрепить высоту EditText, чтобы помещался только один ряд символов, так чтобы при нажатии на Enter на клавиатуре EditText не...

два массива, один отсортирован по невозрстанию, второй неотсортирован, ввести второю массив в первый так, чтобы он остался отсортированным
в очередной раз, вродебы, все сделал логично и по образцу, но программа работает не корректно: вот код(первый массив размерностью...

Удалить из повторяющихся элементов массива только один
Подскажите? Как удалить из повторяющихся элементов массива только один???

8
 Аватар для Петррр
6721 / 3570 / 900
Регистрация: 28.10.2010
Сообщений: 5,937
01.11.2011, 22:56
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int exsist(const char *str, int pos, const char ch)
{
    int i;
    for(i = 0; i < pos; i++)
        if (str[i] == ch)
            return 1;
    return 0;
}
 
void erase(char *str, int pos)
{
    int i, len = strlen(str);
    for(i = pos; i < len; i++)
        str[i] = str[i + 1];
}
 
int main()
{
    const int n = 100;
    char str[100];
    int i, len;
    printf("Enter string: ");
    fgets(str, n, stdin);
    len = strlen(str);
    for(i = 0; i < len; i++)
        if (exsist(str, i, str[i]))
            erase(str, i);
    printf("\n%s\n", str);
    system("pause");
    return 0;
}
1
0 / 0 / 1
Регистрация: 01.11.2011
Сообщений: 18
01.11.2011, 23:01  [ТС]
Спасибо
Я надеялся на какой-то простенький цикл в добавок к тому, что уже было, но наверное не бывает простых вещей
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
01.11.2011, 23:12
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <string.h>
 
#define STR_LEN 256
#define STR_MASK "%255[^\n]%*c"
 
int main(void){
    char buf[STR_LEN];
    
    while ( printf("String: ") > 0 && scanf(STR_MASK, buf) == 1 ){
        char * p = buf + 1;
        while ( *p ){
            if ( strchr(buf, *p) != p )
                memmove(p, p + 1, strlen(p));
            else
                ++p;
        }
        printf("Result: %s\n", buf);
    }
    
    return 0;
}
2
 Аватар для Holodov
5 / 5 / 2
Регистрация: 01.10.2011
Сообщений: 46
01.11.2011, 23:43
easybudda, Не могли бы вы прокомментировать ваш код? Спасибо.
0
0 / 0 / 1
Регистрация: 01.11.2011
Сообщений: 18
02.11.2011, 00:11  [ТС]
Ребят, а что добавить то все-таки ,чтобы он оставлял вместо нескольких пробелов только один? Вопрос к верхней программе, в самом начале
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
02.11.2011, 00:28
Цитата Сообщение от Holodov Посмотреть сообщение
Не могли бы вы прокомментировать ваш код?
Функция strchr() возвращает указатель на первое вхождение символа в строку. Начиная со второго символа в строке ищем его с начала строки и, если он найдётся раньше ( strchr(buf, *p) != p ), смещаем функцией memmove() все символы после него и завершающий ноль на один влево ( memmove(p, p + 1, strlen(p) ). Можно было бы написать чуть проще - strcpy(p, p + 1), и в большинстве случаев работало бы, но по стандарту поведение функции strcpy() не определено, если участки памяти пересекаются.
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
02.11.2011, 01:28
Глянь сюда
Заменить в последовательности каждую из групп стоящих рядом точек одной точкой
1
0 / 0 / 1
Регистрация: 01.11.2011
Сообщений: 18
07.11.2011, 15:24  [ТС]
Разобрался, что нужно вставить : быть может кому-то и пригодиться :

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<string.h>
#include<conio.h>
#include<stdio.h>
void main()
{
int i,j;
char S[100];
clrscr();
printf("vvedite stroku");
gets(S);
for(i=0;i<strlen(S);i++)
if (S[i]==' ' && S[i+1]==' ')
{for(j=i;j<strlen(S);j++)
S[j]=S[j+1];
i--;}
puts(S);
getch();
}
а чтобы просто удалить все пробелы убираем в строке if (S[i]==' ' && S[i+1]==' ') ,&& S[i+1]==' ') ,
то есть if (S[i]==' ')
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.11.2011, 15:24
Помогаю со студенческими работами здесь

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

В каждом слове текста удалить минимальное количество символов так, чтобы в преобразованном слове не было повторяющихся символов
На форме есть 2: Edit1 и Edit2 из первого считывается, в другой выводится результат. Задание: В каждом слове текста удалить минимальное...

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

как сделать чтобы один юзер мог нажать только допустим только 2 раза
Можно так сделать? Если так то как.

Дан стек символов. Преобразовать стек, оставив в нем из группы подряд идущих символов только один
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids,...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru