Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.65/17: Рейтинг темы: голосов - 17, средняя оценка - 4.65
Светланик
1 / 1 / 0
Регистрация: 14.12.2010
Сообщений: 15
#1

Подсчитать, сколько различных символов встречается в строке

14.12.2010, 22:16. Просмотров 3180. Ответов 11
Метки нет (Все метки)

пожалуйста!!! помогите!!! совершенно не знаю как решить это задание

дана строка. подсчитать, сколько различных символов встречается в ней. вывести их на экран
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.12.2010, 22:16
Ответы с готовыми решениями:

Сколько различных символов встречается в строке
которая для заданной строки s определяет, сколько различных символов...

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

Подсчитать, сколько раз встречается подстрока в строке
Вводится строка и подстрока. Подсчитать, сколько раз встречается подстрока в...

Подсчитать сколько раз в последовательности символов встречается буква x
Подсчитать сколько раз в последовательности символов встречается буква x.

Подсчитать сколько раз среди символов строки встречается буква x
Дана строка символов, подсчитать сколько раз среди символов строки встречается...

11
MILAN
888 / 782 / 186
Регистрация: 21.02.2009
Сообщений: 1,722
14.12.2010, 22:30 #2
Цитата Сообщение от Светланик Посмотреть сообщение
дана строка. подсчитать, сколько различных символов встречается в ней. вывести их на экран
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
#include <stdio.h>
#include <conio.h>
#include <string.h>
 
int main()
{
    char str[256];
    int cnt=0,cnt1=0;
    printf("Enter string -> ");
    gets(str);
    printf("\nSymbols -> ");
    for(int i=0; i<strlen(str); i++)
    {
        cnt1=0;
        for(int j=0; j<strlen(str); j++)
        {
            if(str[i]==str[j])
            {
                cnt1++;
            }
        }
      if(cnt1 == 1)
      { 
          printf("%c  ",str[i]);
          cnt++;
      }
    }
   printf("\nNumber symbol -> %d",cnt);
   getch();
   return 0;
}
1
easybudda
Модератор
Эксперт CЭксперт С++
10054 / 5974 / 1493
Регистрация: 25.07.2009
Сообщений: 11,321
14.12.2010, 22:38 #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
28
29
#include <stdio.h>
#include <limits.h>
#include <string.h>
 
int main(void){
    unsigned char buf[BUFSIZ], * p;
    int symbols[UCHAR_MAX + 1], i, cnt;
    
    printf("String: ");
    if ( scanf("%[^\n]", buf) != 1 ){
        fprintf(stderr, "Input error!\n");
        return 1;
    }
    memset(symbols, 0, sizeof(symbols));
    for ( p = buf; *p; ++p )
        symbols[*p]++;
    
    printf("Unique: ");
    cnt = 0;
    for ( i = 0; i < UCHAR_MAX + 1; ++i ){
        if ( symbols[i] ){
            printf("%c", i);
            ++cnt;
        }
    }
    printf("\nTotal: %d symbols.\n", cnt);
    
    return 0;
}
2
Светланик
1 / 1 / 0
Регистрация: 14.12.2010
Сообщений: 15
14.12.2010, 22:47  [ТС] #4
спасибо Вам огромное!!!! а вы не могли бы еще коментарии написать? была бы очень благодарна!!!
0
MILAN
888 / 782 / 186
Регистрация: 21.02.2009
Сообщений: 1,722
14.12.2010, 23:04 #5
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
#include <stdio.h>
#include <conio.h>
#include <string.h>
 
int main()
{
        char str[256]; // оглашение массива символов(строки)
        int cnt=0,cnt1=0; // два счетчика
        printf("Enter string -> "); // запрос на ввод строки
        gets(str); // ввод строки
        printf("\nSymbols -> ");
        for(int i=0; i<strlen(str); i++) 
        {
                cnt1=0; // сброс счетчика
                for(int j=0; j<strlen(str); j++)
                {
                        if(str[i]==str[j]) // если i-тый символ строки ровняется   j-тому
                        {
                                cnt1++; // увеличиваем счетчик на 1
                        }
                }
      if(cnt1 == 1) // если в строке символ встретился всего один раз
          { 
                  printf("%c  ",str[i]); // выводим его 
                  cnt++; // увеличеваем счетчик различных символов
          }
        }
   printf("\nNumber symbol -> %d",cnt); // выводим количество различных символов
   getch();
   return 0;
}
2
Светланик
1 / 1 / 0
Регистрация: 14.12.2010
Сообщений: 15
14.12.2010, 23:14  [ТС] #6
спасибо! спасибо! спасибо!!!!
будьте так добры, напишите пожалуйста и на паскале!!!
0
MILAN
888 / 782 / 186
Регистрация: 21.02.2009
Сообщений: 1,722
14.12.2010, 23:24 #7
Цитата Сообщение от Светланик Посмотреть сообщение
напишите пожалуйста и на паскале!!!
Ето иже пишыте в соответствующий раздел!!!
1
easybudda
Модератор
Эксперт CЭксперт С++
10054 / 5974 / 1493
Регистрация: 25.07.2009
Сообщений: 11,321
14.12.2010, 23:24 #8
MILAN, и всё бы ничего, только, я так понял, нужно все символы, которые в строке встретились, по одному каждый, а не те, которые в строке только один раз встречаются...
1
Светланик
1 / 1 / 0
Регистрация: 14.12.2010
Сообщений: 15
14.12.2010, 23:52  [ТС] #9
да!да! я так поняла, что нужно подсчитать не только количество одиночных символов

Добавлено через 9 минут
я вот что еще не поняла:
if(str[i]==str[j]) // если i-тый символ строки ровняется j-тому


мы же проверяем не равен ли i-ый символ строки j-му, а не наоборот
0
MILAN
888 / 782 / 186
Регистрация: 21.02.2009
Сообщений: 1,722
14.12.2010, 23:58 #10
Светланик, я неправильно понял задание. Смотри програму, которую написал easybudda
0
Светланик
1 / 1 / 0
Регистрация: 14.12.2010
Сообщений: 15
15.12.2010, 00:02  [ТС] #11
в его записи, к сожаленью, я вообще ничего не понимаю(((
1
easybudda
Модератор
Эксперт CЭксперт С++
10054 / 5974 / 1493
Регистрация: 25.07.2009
Сообщений: 11,321
15.12.2010, 01:16 #12
Цитата Сообщение от Светланик Посмотреть сообщение
в его записи, к сожаленью, я вообще ничего не понимаю
На самом деле всё просто: каждый символ unsigned char (unsigned - чтобы правильно обрабатывались символы с кодом > 127) может иметь значения от 0 до UCHAR_MAX (определено в limits.h) - значит всего значений UCHAR_MAX + 1. Создаём массив такого размера, обнуляем его
Цитата Сообщение от easybudda Посмотреть сообщение
memset(symbols, 0, sizeof(symbols));
а дальше в цикле (помня про то, что строка заканчивается нулём) берём по символу. Каждый символ из строки - по сути индекс в массиве символов. Соответственно увеличиваем значение элемента массива, индекс которого равен очередному символу.
Следующим циклом проходим по свежезаполненному массиву. Если значение очередного элемента больше нуля, значит символ равный индексу элемента встречался в строке. По сути в массиве содержатся счётчики символов из строки, при желании можно и их вывести. Но по заданию просто считаем количество элементов массива, больших нуля - это и будет количество уникальных символов в строке...
2
15.12.2010, 01:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.12.2010, 01:16

Подсчитать, сколько раз данный символ встречается в заданной строке
Помогите пожалуйста, нужен полный текст программы. Заранее благодарен.

В строке нужно подсчитать сколько раз встречается каждое слово
Здравствуйте! Задача такая: в строке нужно подсчитать сколько раз встречается...

Подсчитать, сколько раз среди символов строки встречается заданная буква
Дана строка символов. Подсчитать, сколько раз среди символов строки встречается...


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

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

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