Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

11.04.2012, 18:51. Просмотров 329. Ответов 4
Метки нет (Все метки)

По условию задачи, вводится строка со словами, необходимо вывести на экран слово, в котором наименьшее число повторяющихся букв. Т.е. например, слово бегемот, барабан, сын, мама...Вывести должно мама. Если таких слов несколько вывести первое.
Вот мой кусок кода, понимаю, что работает неправильно, но как переделать догнать не могу(( Логика в том,что когда встречается одинаковая буква, то я её заменяю на символ $ , а потом дополнительно проверяю совпадение с данным символом
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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.04.2012, 18:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка в алгоритме со строками (C++):

Ошибка в алгоритме - C++
Неправильно работает программа есть сетка (координаты x - в векторе A y - в векторе B) надо из известных точек проложить кратчайший...

Ошибка в алгоритме - C++
Помогите найти ошибку в алгоритме. Алгоритм должен сортировать строки. void SortArrayString(string *&amp;arr, int n, char arr2) /* arr...

Ошибка в алгоритме Хаффмана. С++ - C++
Проблемы с реализацией алгоритма Хаффмана. Код по идее должен быть рабочим, но выскакивает такое окно. Не знаю как исправить. Помогите,...

Ошибка в алгоритме сортировки - C++
Пожалуйста укажите мне ошибку в реализуемом мною алгоритме сортировки #include &lt;iostream&gt; using namespace std; int main() ...

Ошибка в алгоритме Дейкстры - C++
Помогите, пожалуйста исправить ошибки в коде! Не объявлены идентификаторы &quot;all&quot; &quot;information&quot; &quot;output&quot;, в некоторых местах отсутствуют &quot;;&quot;....

функции. (ошибка в алгоритме) - C++
задание было написать программу для вычисления с заданной точностью. так вот с функцией оно не работает, т.е. результат sum и результат...

4
panicwassano
592 / 560 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
11.04.2012, 23:22 #2
Цитата Сообщение от DeIVIiurg Посмотреть сообщение
Т.е. например, слово бегемот, барабан, сын, мама...Вывести должно мама.
вывод должен быть мама(2 буквы а) и бегемот(2 буквы е)
0
DeIVIiurg
1 / 1 / 0
Регистрация: 03.05.2011
Сообщений: 16
11.04.2012, 23:33  [ТС] #3
Цитата Сообщение от panicwassano Посмотреть сообщение
вывод должен быть мама(2 буквы а) и бегемот(2 буквы е)
не совсем так вы поняли, в слове мама только две буквы, они повторяются, а в слове бегемот 6 таких букв
0
castaway
Эксперт С++
4916 / 3024 / 370
Регистрация: 10.11.2010
Сообщений: 11,081
Записей в блоге: 10
Завершенные тесты: 1
11.04.2012, 23:39 #4
Цитата Сообщение от DeIVIiurg Посмотреть сообщение
а в слове бегемот 6 таких букв
каких это "таких" и почему 6 ?
0
DeIVIiurg
1 / 1 / 0
Регистрация: 03.05.2011
Сообщений: 16
11.04.2012, 23:45  [ТС] #5
Цитата Сообщение от lazybiz Посмотреть сообщение
каких это "таких" и почему 6 ?
неправильно описал задачу, нужны слова, в которых наименьшее количество различных букв...ну в слове мама, какие буквы? М и А...в слове бегемот сколько? Б,Е,Г,М,О,Т
0
11.04.2012, 23:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.04.2012, 23:45
Привет! Вот еще темы с ответами:

Ошибка компиляции в Алгоритме Брезенхэма - C++
Есть код, который компилю на QT, но всё время ругается на строчку error: 'setPixel' was not declared in this scope Что бы я вместо...

Ошибка компилятора С2064 в алгоритме - C++
#include &lt;iostream&gt; #include &lt;set&gt; #include &lt;algorithm&gt; #include &lt;iterator&gt; using namespace std; int I = 3; bool...

Ошибка в алгоритме слияние массивов - C++
Этот код производит слияние двух массивов &quot;int a = {4,2,6}&quot; и &quot;b = {645,998,333}&quot; в массив &quot;c&quot; #include &quot;stdafx.h&quot; #include...

Ошибка в алгоритме перемножения двух матриц - C++
Ошибка в алгоритме произведения двух матриц. Я так понял, что где-то выходит за границы массивов. private: void com(int size, int...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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