Помогите С Решением Подсчёта Количества Слов В Строке

Тема в разделе "C/C++/C#", создана пользователем EmptyR, 15 дек 2011.

  1. EmptyR

    EmptyR Веб мастер

    Регистрация:
    6 окт 2010
    Сообщения:
    221
    Симпатии:
    0
    Есть строка (вводится с клавиатуры или просто задана сразу, не важно). Нужно посчитать сколько раз каждое слово встречается в этой строке.
    Не могу понять как правильно вывести на экран слова. Например строка "123 321 123 123321".
    Нужно вывести так:
    123: 2
    321: 1
    123321: 1


    У меня выводи так:
    123: 2
    321: 1
    123: 1
    123321: 1


    Вот код на си:

    Код (Text):
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>

    int main()
    {
    int word_len, i = 0, j, k = 0;
    char *main_str = "123 321 123 456 123321 123", *sub_str = " ", word[80], **mas_str;
    mas_str = (char **) calloc(strlen(main_str)/2, sizeof(char *));
    while (strlen(main_str))
    {
    k++;
    char *ptr = strstr(main_str, sub_str);
    if (ptr == 0)
    {
    mas_str[i] = (char*) calloc(1, sizeof(char));
    strcpy(word, main_str);
    strcpy(mas_str[i], word);
    printf("slovo: %s\n", word);
    break;
    } else {
    word_len = strlen(main_str) - strlen(ptr);
    mas_str[i] = (char*) calloc(1, sizeof(char));
    strncpy(word, main_str, word_len);
    word[word_len] = '\0';
    strcpy(mas_str[i], word);
    main_str+=word_len+1;
    printf("slovo: %s\n", word);
    }
    i++;
    }
    printf("Kolichestvo slov = %d\n", k);



    for (i=0; i<k; i++)
    {
    int tmp = 1;
    for (j=i+1; j<k; j++)
    {
    if (strcmp(mas_str[i], mas_str[j]) == 0) tmp++;
    }
    printf("slovo %s vstrechaetsa %d raz\n", mas_str[i], tmp);
    }
    getchar();
    return 0;
    }
    Заранее спасибо.
     
  2. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    строку делишь на 2 части - обработанную и необработанную.
    сейчас, видимо, ты ищешь подстроку в необработанной части, но сначала нужно искать слово в обработанной части, и в случае, если оно там есть - в необработанной части искать уже ненадо
     
Загрузка...
Похожие Темы - Помогите Решением Подсчёта
  1. sonia2000
    Ответов:
    0
    Просмотров:
    960
  2. Thrillseeker
    Ответов:
    1
    Просмотров:
    1.264
  3. Masha111
    Ответов:
    3
    Просмотров:
    1.543
  4. gafa
    Ответов:
    0
    Просмотров:
    1.283
  5. krank
    Ответов:
    3
    Просмотров:
    1.538

Поделиться этой страницей