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

Определить сколько различных символов в каждом слове - C++

Восстановить пароль Регистрация
 
lesha 13
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 20
18.05.2014, 12:20     Определить сколько различных символов в каждом слове #1
Разъясните, пожалуйста. Не могу понять как выполняется тело цикла while на примере строки "1233"(результат-3). Вот само задание:определить сколько различных символов в каждом слове введенного с клавиатуры текста. Вот код:
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
#include <iostream>
using namespace std;
 
void main()
{
    setlocale(LC_ALL,"RUSSIAN");
    char str[50];
    char temp=' ';
    int count=0,uniq_sim=0;
    while(cin>>str)
        {
             for(int i=0;i<strlen(str)-1;i++)
                {
                     for(int j=i+1;j<strlen(str);j++)
                           if(str[i]!=str[j])
                           count++;
                           if(count==strlen(str)-i-1) 
                           uniq_sim++;
                           count=0;
                  }
                       if(uniq_sim)
                       cout<<++uniq_sim<<endl;
                              else cout<<uniq_sim<<endl;
                       uniq_sim=0;
    }
    system("pause");
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.05.2014, 12:20     Определить сколько различных символов в каждом слове
Посмотрите здесь:

C++ Подсчет количества символов в каждом слове предложения с 7 слов
C++ Задано слово. Определить, сколько в нем различных символов.
Количество разных символов в каждом слове C++
C++ Определить сколько различных символов в каждом слове введенного с клавиатуры текста
Определить количество слов в заданном тексте и количество символов в каждом слове C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
4303 / 3724 / 1255
Регистрация: 14.04.2014
Сообщений: 14,586
18.05.2014, 12:28     Определить сколько различных символов в каждом слове #2
А это вообще работает? Цикл будет бесконечным.
lesha 13
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 20
18.05.2014, 12:40  [ТС]     Определить сколько различных символов в каждом слове #3
работает
Миниатюры
Определить сколько различных символов в каждом слове  
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
18.05.2014, 13:04     Определить сколько различных символов в каждом слове #4
Цитата Сообщение от lesha 13 Посмотреть сообщение
определить сколько различных символов в каждом слове введенного с клавиатуры текста
Классический подход к решению таких задач - занесение символов слова в множество std::set<char> и вычисление размера (size) множества для получения результата.
nmcf
4303 / 3724 / 1255
Регистрация: 14.04.2014
Сообщений: 14,586
18.05.2014, 13:08     Определить сколько различных символов в каждом слове #5
Я не про анализ строки, а про завершение программы. Она до 26 строки когда-нибудь доходит? В общем так не делается. Надо придумать какую-то строку, при вводе которой программа завершится, тогда не будет такого while.
lesha 13
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 20
18.05.2014, 13:21  [ТС]     Определить сколько различных символов в каждом слове #6
Да, но как именно выполняется цикл?
kompromiss
0 / 0 / 3
Регистрация: 17.05.2014
Сообщений: 19
18.05.2014, 13:49     Определить сколько различных символов в каждом слове #7
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
void main()
{
setlocale(LC_ALL,"RUSSIAN");
char str[50];
char temp=' ';
int count=0,uniq_sim=0;
while(cin>>str)
{
for(int i=0;i<strlen(str)-1;i++)  // берём один элемент строки, начиная с первого
{
for(int j=i+1;j<strlen(str);j++)  // пробегаем по всем элементам строки, начиная со следёющего после элемента верхнего цикла
if(str[i]!=str[j])   // если элемент первого цикла не равен элементу вторго цикла, увеличиваем count, тоесть находим количество отличных элементов вторго цикла от элемента первого цикла 
count++;
if(count==strlen(str)-i-1)     // если все элементы после iтого будут от него отличны то увеличиваем uniq_sim
uniq_sim++;
count=0;
}
if(uniq_sim)
cout<<++uniq_sim<<endl;
else cout<<uniq_sim<<endl;
uniq_sim=0;
}
system("pause");
}
Я так понимаю работу цикла, с работой последнего if не знаком
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.05.2014, 14:24     Определить сколько различных символов в каждом слове
Еще ссылки по теме:

Определить, сколько различных букв в слове C++
C++ Сдвинуть буквы, в каждом слове, влево или вправо, на n символов
C++ Записать фразу в обратной последовательности символов в каждом слове

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

Или воспользуйтесь поиском по форуму:
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
18.05.2014, 14:24     Определить сколько различных символов в каждом слове #8
Цитата Сообщение от kompromiss Посмотреть сообщение
C++
1
for(int i=0;i<strlen(str)-1;i++)
Очень плохо делать так цикл, когда на каждой итерации приходится снова и снова определять длину строки.
Которая для C-строк вычисляется тем же самым циклом по символам строки.
Лучший сделать итерацию, используя указатель на текущий символ:
C++
1
for( const char* c = str; *c != '\0'; ++c )
Yandex
Объявления
18.05.2014, 14:24     Определить сколько различных символов в каждом слове
Ответ Создать тему
Опции темы

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