0 / 0 / 1
Регистрация: 28.02.2015
Сообщений: 8
1

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

28.02.2015, 21:21. Показов 2202. Ответов 8
Метки нет (Все метки)

помогите разобраться с этим заданием. Нужно дополнить код функциями, чтобы выполнялась задача: определение количества заданного символа в заданной строке

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
57
58
59
#include <stdio.h>
#include <stdlib.h>
 
int how_many(char ch, char sentence[])
{
    int count = 0;
    int position;
 
    // **********************************************************************
 
    
 
    // **********************************************************************
 
    return count;
}
 
 
void clean_up(char ch)
{
    while (ch != EOF && ch != '\n')
        ch = getchar();
}
 
 
int main()
{
    char ch; 
    char sentence[1024]; 
 
    do {
        
        printf("Enter a character: ");
 
        
        ch = getchar();
 
 
        clean_up(ch);
 
        
        if (ch < ' ' || ch > '~') {
            printf("That was not a legal character. Try again.\n");
        }
 
 
    } while (ch < ' ' || ch > '~');
 
    
    printf("Enter a sentence: ");
 
    
    fgets(sentence, 1024, stdin);
 
    
    printf("The character '%c' is in the sentence %d times.\n", ch, how_many(ch, sentence));
 
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.02.2015, 21:21
Ответы с готовыми решениями:

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

Написать функцию, которая ищет в заданной строке первое вхождение заданного символа
Помогите пожалуйста с указателями... Написать функцию, которая ищет в заданной строке первое...

Ошибка в подсчете количества вхождений символа в строку
Подскажите пожалуйста, в чем ошибка? int _tmain(int argc, _TCHAR* argv) { char sym = 'a';...

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

8
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
11657 / 7170 / 1704
Регистрация: 25.07.2009
Сообщений: 13,139
28.02.2015, 21:32 2
Лучший ответ Сообщение было отмечено tezaurismosis как решение

Решение

C
1
2
3
4
#include <string.h>
size_t meets_count(const char * str, const char chr) {
    return ( str = strchr(str, chr) ) ? 1 + meets_count(str + 1, chr) : 0;
}
1
0 / 0 / 1
Регистрация: 28.02.2015
Сообщений: 8
28.02.2015, 22:27  [ТС] 3
C
1
2
3
4
#include <string.h>
size_t meets_count(const char * str, const char chr) {
    return ( str = strchr(str, chr) ) ? 1 + meets_count(str + 1, chr) : 0;
}
Спасибо easybudda, но у меня не получается верно добавить твой код в исходник. Можешь, пожалуйста, помочь с этим
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
11657 / 7170 / 1704
Регистрация: 25.07.2009
Сообщений: 13,139
01.03.2015, 01:05 4
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <string.h>
 
size_t meets_count(const char * str, const char chr) {
    return ( str = strchr(str, chr) ) ? 1 + meets_count(str + 1, chr) : 0;
}
 
int flush_input(void) {
    char c;
    while ( scanf("%c", &c) == 1 && c != '\n' )
        ;
    return 1;
}
 
int main(void) {
    char buf[BUFSIZ], chr;
    
    while ( printf("String: ") > 0 && fgets(buf, BUFSIZ, stdin) && *buf != '\n' && printf("Character: ") > 0 && scanf("%c", &chr) == 1 && flush_input() )
        printf("%u meetings.\n", meets_count(buf, chr));
    
    return 0;
}
1
0 / 0 / 1
Регистрация: 28.02.2015
Сообщений: 8
01.03.2015, 14:23  [ТС] 5
Спасибо easybudda. Все же это не то что мне нужно. отдельный код я могу написать для выполнения поставленной задачи. Но мне нужно добавить выполняемые условия в исходник, который я указал в главном сообщении(в промежуток где звездочки указаны). Именно это у меня никак не получается.
0
Администратор
Эксперт .NET
9356 / 4638 / 755
Регистрация: 17.04.2012
Сообщений: 9,490
Записей в блоге: 14
01.03.2015, 19:52 6
Лучший ответ Сообщение было отмечено space_goose как решение

Решение

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>
#include <string.h>
 
int how_many(char ch, char sentence[])
{
    int count = 0;
 
    count = (sentence = strchr(sentence, ch)) ?
        1 + how_many(ch, sentence + 1) : 0;
 
    return count;
}
 
 
void clean_up(char ch)
{
    while (ch != EOF && ch != '\n')
        ch = getchar();
}
 
 
int main()
{
    char ch;
    char sentence[1024];
 
    do {
 
        printf("Enter a character: ");
 
 
        ch = getchar();
 
 
        clean_up(ch);
 
 
        if (ch < ' ' || ch > '~') {
            printf("That was not a legal character. Try again.\n");
        }
 
 
    } while (ch < ' ' || ch > '~');
 
 
    printf("Enter a sentence: ");
 
 
    fgets(sentence, 1024, stdin);
 
 
    printf("The character '%c' is in the sentence %d times.\n", ch, how_many(ch, sentence));
 
    return 0;
}
Добавлено через 1 минуту
space_goose, для спасибо есть кнопка "+1 Спасибо". Не забудьте поблагодарить автора этого метода, который я нагло использовал
1
0 / 0 / 0
Регистрация: 21.12.2015
Сообщений: 13
26.02.2017, 19:40 7
tezaurismosis, можно узнать, как работает ваша функция по подсчету количества символов в строке? я понимаю что это бинарные операторы но что они делают в данной функции, не очень понимаю)
0
Администратор
Эксперт .NET
9356 / 4638 / 755
Регистрация: 17.04.2012
Сообщений: 9,490
Записей в блоге: 14
26.02.2017, 19:46 8
olgacccccc, про какой именно участок кода речь?
Если про этот
C
9
10
count = (sentence = strchr(sentence, ch)) ?
    1 + how_many(ch, sentence + 1) : 0;
то здесь используется тернарный оператор. В общем виде выглядит как
C
1
условие ? значение_при_true : значение_при_false
0
0 / 0 / 0
Регистрация: 21.12.2015
Сообщений: 13
26.02.2017, 20:31 9
tezaurismosis, спасибо огромное) а то я глупенькая только на первом курсе )
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.02.2017, 20:31
Помогаю со студенческими работами здесь

Найти количество всех вхождений заданной подстроки в заданной строке
Найти количество всех вхождений заданной подстроки в заданной строке (порядок следования символов...

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

Написать рекурсивную функцию подсчета количества вхождений в дерево заданного числа на заданном уровне
Задано бинарное дерево,в вершинах которого расположены целые числа.Написать рекурсивную функцию...

Подсчет количества введенного символа в строке
Помогите, как на Си сделать подсчет количества введенного символа с клавиатуры в строках считанных...


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

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

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