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

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

Восстановить пароль Регистрация
 
Aer_rus
0 / 0 / 0
Регистрация: 13.10.2013
Сообщений: 76
11.11.2013, 23:35     Задано слово.Удалить повторяющие буквы #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
#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++ Задано слово.Удалить повторяющие буквы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
newyork7776
 Аватар для newyork7776
346 / 339 / 79
Регистрация: 21.05.2013
Сообщений: 1,305
Завершенные тесты: 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
Сообщений: 76
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
 Аватар для ninja2
230 / 186 / 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++]
с одновременным увеличением индекса для последнего символа в выходной строке. При желании можно выполнить без дополнительной строки.
Yandex
Объявления
12.11.2013, 09:39     Задано слово.Удалить повторяющие буквы
Ответ Создать тему
Опции темы

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