Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
lesha 13
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 20
1

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

18.05.2014, 12:20. Просмотров 1062. Ответов 7
Метки нет (Все метки)

Разъясните, пожалуйста. Не могу понять как выполняется тело цикла 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");
}
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.05.2014, 12:20
Ответы с готовыми решениями:

Определить сколько различных символов в каждом слове введенного с клавиатуры текста
Определить сколько различных символов в каждом слове введенного с клавиатуры текста.

Определить сколько различных букв в слове
помогите пожалуйста Выполнить задание без использования стандартных функций работы со строками. ...

Определить, сколько различных букв в слове
Здравствуйте. Не могу разобраться со строками...Вот необходимо решить задачу: Дано слово....

Определить сколько различных символов входит в заданный текст
Вот собственно нужно определить сколько различных символов входит в заданный текст, содержащий не...

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

7
nmcf
6538 / 5761 / 2623
Регистрация: 14.04.2014
Сообщений: 24,498
18.05.2014, 12:28 2
А это вообще работает? Цикл будет бесконечным.
0
lesha 13
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 20
18.05.2014, 12:40  [ТС] 3
работает
0
Изображения
Тип файла: png Скриншот 2014-05-18 11.37.01.png (33.0 Кб, 16 просмотров)
Tulosba
:)
Эксперт С++
4756 / 3250 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
18.05.2014, 13:04 4
Цитата Сообщение от lesha 13 Посмотреть сообщение
определить сколько различных символов в каждом слове введенного с клавиатуры текста
Классический подход к решению таких задач - занесение символов слова в множество std::set<char> и вычисление размера (size) множества для получения результата.
0
18.05.2014, 13:04
nmcf
6538 / 5761 / 2623
Регистрация: 14.04.2014
Сообщений: 24,498
18.05.2014, 13:08 5
Я не про анализ строки, а про завершение программы. Она до 26 строки когда-нибудь доходит? В общем так не делается. Надо придумать какую-то строку, при вводе которой программа завершится, тогда не будет такого while.
0
lesha 13
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 20
18.05.2014, 13:21  [ТС] 6
Да, но как именно выполняется цикл?
0
kompromiss
0 / 0 / 4
Регистрация: 17.05.2014
Сообщений: 19
18.05.2014, 13:49 7
Лучший ответ Сообщение было отмечено lesha 13 как решение

Решение

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 не знаком
0
Tulosba
:)
Эксперт С++
4756 / 3250 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
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 )
1
18.05.2014, 14:24
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.05.2014, 14:24

Определить количество слов в заданном тексте и количество символов в каждом слове
Определить количество слов в заданном тексте и количество символов в каждом слове

В каждом слове строки определить букву, которая в слове встречается наибольшее количество раз
Народ, помогите! Второй день сижу над этой программой. Условие такое: Дано N слов. В каждом...

Количество разных символов в каждом слове
Определить сколько разных символов в каждом слове введенного с клавиатуры текста. Это необходимо...


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

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

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