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

Ошибка в алгоритме со строками - C++

Восстановить пароль Регистрация
 
DeIVIiurg
1 / 1 / 0
Регистрация: 03.05.2011
Сообщений: 16
11.04.2012, 18:51     Ошибка в алгоритме со строками #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
#include <iostream>
#include <cstring>
 
int main()
{
        char str[80];
        char *strPtr;
        char *strProm;
        char *word = 0;
        int count = 80;
        bool gate = false;
 std::cout<<"Vvedite stroku"<<std::endl;
        std::cin.getline(str,80);
 
        strPtr = strtok(str," ");
 
        while(strPtr != NULL)
        {
                int temp = 0;
                strProm=new char[200];
                strcpy(strProm,strPtr);
                for(int i = 0; *(strPtr + i) != '\0'; i++)
                {
                        for(int j = i + 1; *(strPtr + j) != '\0'; j++)
                        {
                                if((*(strPtr + i) == *(strPtr + j))||(*(strPtr+j)=='$'))
                                {
                                    *(strPtr+j)='$';
                                }
                        }
                    temp++;
                }
                if(count > temp)
                {
                        if(gate)
                                delete[] word;
 
                        word = new char[strlen(strPtr)+1];
                        strcpy(word,strProm);
                        count = temp;
 
                        gate = true;
                }
 
                strPtr = strtok(NULL," ");
 
        }
 
        std::cout << word << std::endl;
 
        delete[] word;
 
        return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.04.2012, 18:51     Ошибка в алгоритме со строками
Посмотрите здесь:

C++ Ошибка в алгоритме
функции. (ошибка в алгоритме) C++
Ошибка в алгоритме слияние массивов C++
Ошибка в алгоритме сортировки C++
Ошибка в алгоритме перегрузки оператора присваивания C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
panicwassano
590 / 558 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
11.04.2012, 23:22     Ошибка в алгоритме со строками #2
Цитата Сообщение от DeIVIiurg Посмотреть сообщение
Т.е. например, слово бегемот, барабан, сын, мама...Вывести должно мама.
вывод должен быть мама(2 буквы а) и бегемот(2 буквы е)
DeIVIiurg
1 / 1 / 0
Регистрация: 03.05.2011
Сообщений: 16
11.04.2012, 23:33  [ТС]     Ошибка в алгоритме со строками #3
Цитата Сообщение от panicwassano Посмотреть сообщение
вывод должен быть мама(2 буквы а) и бегемот(2 буквы е)
не совсем так вы поняли, в слове мама только две буквы, они повторяются, а в слове бегемот 6 таких букв
castaway
Эксперт С++
4839 / 2978 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 10
Завершенные тесты: 1
11.04.2012, 23:39     Ошибка в алгоритме со строками #4
Цитата Сообщение от DeIVIiurg Посмотреть сообщение
а в слове бегемот 6 таких букв
каких это "таких" и почему 6 ?
DeIVIiurg
1 / 1 / 0
Регистрация: 03.05.2011
Сообщений: 16
11.04.2012, 23:45  [ТС]     Ошибка в алгоритме со строками #5
Цитата Сообщение от lazybiz Посмотреть сообщение
каких это "таких" и почему 6 ?
неправильно описал задачу, нужны слова, в которых наименьшее количество различных букв...ну в слове мама, какие буквы? М и А...в слове бегемот сколько? Б,Е,Г,М,О,Т
Yandex
Объявления
11.04.2012, 23:45     Ошибка в алгоритме со строками
Ответ Создать тему
Опции темы

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