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

Определить, сколько раз в строку входит группа букв "abc"

14.04.2017, 20:36. Показов 2965. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дана строка. Определить, сколько раз в нее входит группа букв abc.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.04.2017, 20:36
Ответы с готовыми решениями:

Определить, сколько раз входит в строку группа букв abc
Дана строка. Определить, сколько раз входит в нее группа букв abc.

Определить сколько раз в строку входит группа букв abc
Дана строка. Определить сколько раз в нее входит группа букв abc.

Определить, сколько раз входит в строку группа букв abc
Дана строка. Определить, сколько раз входит в нее группа букв abc.

Определить, сколько раз входит в строку группа букв abc
Дана строка. Определить,сколько раз входит в неё группа букв abc.

8
Велосипедист...
353 / 220 / 73
Регистрация: 15.12.2015
Сообщений: 785
14.04.2017, 23:07 2
Лучший ответ Сообщение было отмечено smail19 как решение

Решение

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
 
#define C 16  /* Тут регулируешь длину строки */
 
int main(void)
{
    char str[C];
    printf("Enter a string: ");
    fgets(str, C, stdin);
    
    int count = 0;
    for (size_t i = 0; i < C; ++i)
        if (str[i] == 'a' || str[i] == 'b' || str[i] == 'c')
            ++count;
            
    printf("\nNumber of coincidences: %d", count);
 
    return 0;
}
1
1287 / 880 / 254
Регистрация: 30.06.2015
Сообщений: 4,592
Записей в блоге: 51
15.04.2017, 11:47 3
Лучший ответ Сообщение было отмечено smail19 как решение

Решение

Цитата Сообщение от Captain Maxee Посмотреть сообщение
If my code is wrong, correct me.
Подкорректирую.))
Обычно место под строку выделяют с некоторым запасом, а длина реальной строки может быть и нулевой. Поэтому цикл, в котором происходит сравнение с максимальной длиной выделенной для строки несколько некорректно из-за того, что если реальная строка закончится, то проверки будут проводиться над МУСОРОМ. И даже может что-то и совпасть.. Для массивов это правильно, но для строк неверно. Лучше:
C
1
 for (size_t i = 0; str[i]!='\0'; ++i)
или проще:
C
1
 for (size_t i = 0; str[i]; ++i)
3
Модератор
Эксперт функциональных языков программированияЭксперт Python
36578 / 20308 / 4218
Регистрация: 12.02.2012
Сообщений: 33,607
Записей в блоге: 13
15.04.2017, 12:31 4
Captain Maxee, CoderHuligan, код просто неверный. Т.к. он будет считать не число вхождений подстроки "abc" (именно в таком порядке!), а суммарное число букв 'a', 'b' и 'с', встречающихся на любых местах.

Вот корректный код:

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
#include <stdio.h>
#include <stdlib.h>
 
int strCounter(char *From, char *What)
{
    int i,j,lf,lw,k,count,n;
    
    lf=strlen(From);
    lw=strlen(What);
    
    if (lw > lf) return 0;
    
    if (lw == lf) return (strcmp(From,What))?1:0;
    
    count=0;
    k=lf-lw+1;
    
    for (i=0; i<k; i++)
    {
       n=0;
       
       for (j=0; j<lw; j++) 
         if (What[j] == From[i+j])
            n++;
         else
            break;
            
       if (n==lw) count++;
    }            
    
    return count;
    
}    
       
 
int main(int argc, char *argv[])
{
 
  char *F="aaabbbbabczzzabc";
  char *W="abc";
  
  printf("%d\n",strCounter(F,W));
  
  system("PAUSE");  
  return 0;
}
3
0 / 0 / 0
Регистрация: 23.12.2016
Сообщений: 29
15.04.2017, 13:33  [ТС] 5
Исправил немного код под свое задание. Все работает, но интересно такой код корректен с логической стороны?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
#include <locale.h>
#define C 16
int main(void)
{
    setlocale(LC_ALL, "RUS");
    char str[C];
    printf("Введите строку: ");
    fgets(str, C, stdin);
    int count = 0;
    for (size_t i = 0; i < C; ++i) {
        if (str[i] == 'a' && str[i+1] == 'b' && str[i+2] == 'c')
            ++count;
    }
    printf("\nКол-во повторений abc: %d", count);
    system("pause");
}
0
1287 / 880 / 254
Регистрация: 30.06.2015
Сообщений: 4,592
Записей в блоге: 51
15.04.2017, 13:50 6
Цитата Сообщение от smail19 Посмотреть сообщение
но интересно такой код корректен с логической стороны?
Выше уже всё было сказано...
0
Велосипедист...
353 / 220 / 73
Регистрация: 15.12.2015
Сообщений: 785
15.04.2017, 15:24 7
CoderHuligan, точно. Спасибо, что заметил
1
Модератор
Эксперт функциональных языков программированияЭксперт Python
36578 / 20308 / 4218
Регистрация: 12.02.2012
Сообщений: 33,607
Записей в блоге: 13
15.04.2017, 18:41 8
Цитата Сообщение от smail19 Посмотреть сообщение
но интересно такой код корректен с логической стороны?
- оба. Но они решают разные задачи. Мой ищет строку "авс", а другой ищет буквы а, b и c врассыпную.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12454 / 7479 / 1752
Регистрация: 25.07.2009
Сообщений: 13,748
16.04.2017, 06:13 9
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
#include <string.h>
 
/* mc = meetings_count, s = string, ss = substring */
size_t mc(const char * s, const char * ss) {
    return ( ( s = strstr(s, ss) ) != NULL ) ? 1 + mc(s + 1, ss) : 0;
}
 
int main(void) {
    char buf[BUFSIZ];
    
    while ( printf("String: ") && fgets(buf, BUFSIZ, stdin) && *buf != '\n' )
        printf("%u meetings.\n", mc(buf, "abc"));
    
    return 0;
}
2
16.04.2017, 06:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.04.2017, 06:13
Помогаю со студенческими работами здесь

Определить, сколько раз входит в нее группа букв abc.
Дана строка. Определить, сколько раз входит в нее группа букв abc.

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

Дана строка; определить, сколько раз входит в нее группа букв abc
дана строка (которую я ввожу с textbox) определить сколько раз входит в нее группа букв abc ...

Дана строка. Определить, сколько раз входит в нее группа букв abc
24. Дана строка. Определить, сколько раз входит в нее группа букв abc я бы с удовольствием...

Дана строка; определить сколько раз входит в нее группа букв abc
Помогите решить данную заачу в C# я ноль ( Дана строка определить сколько раз входит в нее...

Массив символов. Определить, сколько раз в него входит группа букв abc
Дан массив символов. Определить сколько раз входит в него группа букв abc.


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

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

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