Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 08.02.2010
Сообщений: 4
1

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

08.02.2010, 13:55. Показов 1118. Ответов 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
55
56
#include <stdio.h>
#include <stdlib.h>
int main()
{
int prep = 0;/*максимальная длина слова*/
int count = 0;/*текущая длина слова*/
int min = 99; /*минимальная длина слова*/
printf("Vvedite predlogenie\n");
char c = getchar();
while (c != '\n' && c != '\r')/*цикл до появления \n или \r*/
{
    if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c == ' '))/*если символ допустимый или пробельный*/
        {
        if (c == ' ')/*если пробельный*/
        {
                if(count > prep)/*если текущая больше чем максимальная*/
                    {
                        prep = count;/*присвоить переменной prep значение count*/
                    }
                if(count < min)/*если текущая меньше чем минимальная*/
                    {
                        min=count;/*присвоить переменной min значение count*/
                    }
        count = 0;/*обнулить текущий счйтчик*/
        }
        else/*если символ допустимый*/
        {
 
            count = count + 1;/*прибавить к счётчику символов 1*/
 
        }
        c = getchar();/*присвоить переменной с считанное значение*/
 
 
        }
        else/*если символ не допустимый*/
    {
    printf("\nNedopustimii simbol: '%c'\n", c);
    return EXIT_FAILURE;
    }
}
if (prep>count)/*если последнее слово не самое длинное*/
{printf("Samoe dlinnoe slovo: %d simvolov\n", prep);/*напечатать количество символов в самом длинном слове*/
 if (count<=min)
  {printf("Samoe korotkoe slovo poslednee: %d simvolov", count);
  }
  else
  {printf("Samoe korotkoe slovo: %d simvolov", min);
  }
}
else/*если самое длинное слово оказалось последним*/
{printf("Samoe dlinnoe slovo poslednee: %d simvolov\n", count);/*выводим кол-во символов последнего слова*/
 printf("Samoe korotkoe slovo: %d simvolov", min);/*количество символов самого короткого слова*/
}
return EXIT_SUCCESS;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.02.2010, 13:55
Ответы с готовыми решениями:

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

Для каждого слова текста подсчитать число вхождений в текст
Ввести массив строк символов (текст). Для каждого слова текста подсчитать число вхождений в текст....

Определить число вхождений каждого ключевого слова
Глава 6.3 Керниган и Ричи, Язык программирования Си, Код из книги почему-то не работает:...

Функции: заменить все вхождения слова, указанного пользователем на другое слово
Выполнить анализ текстового файла (текст произвольный). Ввод-вывод данных и выполнения других...

4
158 / 156 / 47
Регистрация: 29.04.2009
Сообщений: 637
08.02.2010, 14:17 2
Для начало подсчитать кол-во слов(макс).Потом сравнивать ето значени со счетчиком.
0
Эксперт С++
5820 / 3472 / 357
Регистрация: 08.02.2010
Сообщений: 7,448
09.02.2010, 11:02 3
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Цитата Сообщение от john74ru
Как в программу дописать еще: "Определить число вхождений указанного пользователем слова в строку текста, введённого пользователем."
Как лучше реализовать?
В виде функции:
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
#include <iostream>
using namespace std;
 
int NumOccur(char* string, char* substring)
{
    int result=0;
    char *temp;
    int length=(int)strlen(substring);
    while(temp=strstr(string, substring))
    {
        ++result;
        string=(temp+length);
    }
    return result;
}
 
 
int main()
{
    setlocale(LC_ALL, "Russian");
    char s1[256], s2[256];
    cin.getline(s1, 256);
    cin.getline(s2, 256);
    cout << NumOccur(s1, s2) << endl;
 
    system("pause");
    return 0;
}
Вот пример работы программы:
Код
строка символов символьная строка строка
строка
3
Для продолжения нажмите любую клавишу . . .
0
0 / 0 / 0
Регистрация: 08.02.2010
Сообщений: 4
10.02.2010, 08:13  [ТС] 4
а на С как? чего то не работает. с++ настолько отличается от с?
0
Эксперт С++
5820 / 3472 / 357
Регистрация: 08.02.2010
Сообщений: 7,448
10.02.2010, 11:19 5
Цитата Сообщение от john74ru Посмотреть сообщение
а на С как? чего то не работает. с++ настолько отличается от с?
От C++ здесь только потоки ввода-вывода, по-моему. Замени cin и cout на стандартные функции языка C. Все остальное должно работать и на C.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.02.2010, 11:19

Подсчитать количество вхождений слова "мама" в строку и вывести номера первых позиций этих вхождений
Не выводит номер позиции. Помогите пожалуйста Подсчитать количество вхождений слова «мама» в...

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

Считать строку, и найти число вхождений символа в эту строку (с использованием strchr)
Почему не работает, компилятор ошибок не ловит, при запуске вылетает с ошибкой. Программа должна...

Определить число вхождений буквы ''p'' в первые три слова текста
всем привет, не получается решить задачу на паскале по строковым переменным. ни как не могу понять,...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru