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

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

Войти
Регистрация
Восстановить пароль
 
Aer_rus
0 / 0 / 0
Регистрация: 13.10.2013
Сообщений: 91
#1

Задано слово.Удалить повторяющие буквы - C++

11.11.2013, 23:35. Просмотров 543. Ответов 5
Метки нет (Все метки)

Дано слово. Удалить из него все повторяющиеся буквы, оставив их первые вхождения, то есть в слове должны остаться только различные буквы.
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
#include <stdlib.h>
#include "conio.h"
#include <iostream>
#include "time.h"
#include "locale"
#include "string.h"
using namespace std;
bool exist[128];
char b[128];
int n;
bool f;
int main()
{
    setlocale(LC_ALL, "rus");
       char string[128];
          cout<<"Введите слово:";
        cin>>string;
        int L=strlen(string);
        int i=0;
        int j=0;
        exist[128]=false;
    for(i=0; i<L;i++)
 {
    if ( !exist[ string[i] ] )
    
        exist[ string[i] ] = true;
    
    else
    {
        for (int j=1;j<L-1;j++)
            string[j]=string[j+1];
         cout<<string[j+1];
    }
 }
    system("PAUSE");
return 0;
}
Помогите пожалуйста исправить данную программу.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.11.2013, 23:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Задано слово.Удалить повторяющие буквы (C++):

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

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

Дано слово. Если длина нечетная, то удалить среднюю букву, в противном случае две буквы - C++
Дано слово.Если длина нечетная, то удалить среднюю букву,в противном случае две буквы.

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

Задано слово. Определить, сколько в нем различных символов. - C++
Задано слово. Определить, сколько в нем различных символов. Заранее спасибо:)

Задано произвольное слово. Определить, заканчивается ли оно на слог «va» - C++
Задано произвольное слово. Определить, заканчивается ли оно на слог «va».

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
newyork7776
348 / 341 / 80
Регистрация: 21.05.2013
Сообщений: 1,308
Завершенные тесты: 1
11.11.2013, 23:55 #2
смени char string[128]; на char str[128]; может быть проблема возникать здесь
как предложение,но не решение
-=ЮрА=-
Заблокирован
Автор FAQ
12.11.2013, 00:11 #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
using namespace std;
 
int main()
{
    int i, j, k;
    bool isExist     = false;
    char input[]     = "abaabccdecdghhgy";
    char output[128] = {0};
    cout<<"INPUT : "<<input<<endl;
    for( k = i = 0;  input[i]; i++ )
    {
        isExist     = false;
        for( j = 0; output[j] && !isExist; j++ )
            isExist = input[i] == output[j];
        if(!isExist)
            output[k++] = input[i];
    }
    cout<<"OUTPUT : "<<output<<endl;
    cin.get();
    return 0;
}
Проверка http://codepad.org/oCX0UXEO
INPUT : abaabccdecdghhgy
OUTPUT : abcdeghy
Aer_rus
0 / 0 / 0
Регистрация: 13.10.2013
Сообщений: 91
12.11.2013, 08:01  [ТС] #4
Можете объяснить, что делают данные строки в программе?
C++
1
2
3
4
isExist     = false;
        for( j = 0; output[j] && !isExist; j++ )
            isExist = input[i] == output[j];
        if(!isExist)
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
12.11.2013, 08:24 #5
Aer_rus, просто если находиться повторяющаяся буква, то флаг устанавливается в ture и код if(!isExist), который добавляет символ в буфер не страбатывает, а если флаг не устанавливается в true так и остается false, то символ добавляется в буфер. и снова при новой итерации буфер устанавливается в false и так проверяется каждая буква. Да он проверять начинает в буфере буквы.

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

Вообще в запутанных кода смысла нету разбираться, 90% таких кодов пишется просто при тестировании, просто человек знает что он хочет сделать и код подгоняет что б он правильно работал правит выводит на экран снова правит выводит на экран, а потом опа определил там чего то не хватает допустим какого то флага добавляет флаг и о чудо код заработал в итоге получается мелкий запутанный код в котором самому трудно разобраться не то что постороннему человеку, я так пару раз делал.
-=ЮрА=-
Заблокирован
Автор FAQ
12.11.2013, 09:39 #6

Не по теме:

Aer_rus, как ты и просил ответил в личку



Добавлено через 3 минуты
Для всех остальных алгоритм ищет вхождение каждого символа из строки input в выходной строке output если вхождений ещё не было то дописываем букву в выходную строку
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
output[k++]
с одновременным увеличением индекса для последнего символа в выходной строке. При желании можно выполнить без дополнительной строки.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.11.2013, 09:39
Привет! Вот еще темы с ответами:

C (СИ) - Ввести строку символов.И После каждой 2 Буквы ( Именно буквы ) Вставить слово - C++
Огромное Спасибо Darkrduk за эту программу ( программа вставляет MAU ) после каждого 2 символа ** .. Нужно умудриться сделать ! Именно...

Задано предложение y. Проверить, сколько раз встречается данное слово х в предложении у. - C++
Задано предложение y. Проверить, сколько раз встречается данное слово х в предложении у. помогите пожалуйста

Задано предложение y, состоящее из слов-строк. Проверить, встречается ли данное слово х в предложении у - C++
Задано предложение y, состоящее из слов-строк. Проверить, встречается ли данное слово х в предложении у

Преобразовать каждое слово в тексте: если слово нечётной длины, то удалить его среднюю букву - C++
Задан текст. Между словами - пробел, за последним символом точка. Вывести текст, предварительно преобразовав каждое слово: если слово...


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

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

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