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

Сравнение двух строк

15.01.2021, 22:15. Показов 486. Ответов 6
Метки нет (Все метки)

Помогите написать код, используя только стандартные библиотеки(string.h)

Однажды Петя сидел на скучном уроке по английскому языку, и когда он в очередной раз взглянул на парту он заметил две строки (S1 и S2), причем первую строку он увидел на парте, а вторую - в отражении от экрана смартфона.

Отраженная строка была реверсированной (т.е. порядок символов в ней был противоположный исходному, например, было «abcd», стало «dcba»).

Пете стало интересно, сколько раз реверсированная версия строки S2 встретится в строке S1.

Так как в этот момент прозвенел звонок и у Пети началась контрольная, он попросил вас подсчитать количество вхождений.

Входные данные
В первой строке записана последовательность символов S1, во второй - последовательность символов S2. Обе последовательности непустые, имеют длину не более 100 символов и могут содержать только строчные буквы латинского алфавита.

Выходные данные
Выведите целое число - количество вхождений реверсированной строки S2 в последовательность S1.
Миниатюры
Сравнение двух строк  
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.01.2021, 22:15
Ответы с готовыми решениями:

Сравнение двух строк
#include <iostream> #include <string> using namespace std; int main() { string...

Сравнение двух строк
Написать функцию, выполняющую сравнение строк (с игнорированием множественных пробелов).

Сравнение двух строк
Сравнение двух строк Как прервать цикл если введена пустая строка? Если : char str="\n"; if...

Сравнение двух строк в C++
Написал программу для сравнения двух строк, вводимых пользователем. Большая просьба помогите...

6
фрилансер
4175 / 3584 / 801
Регистрация: 11.10.2019
Сообщений: 9,650
15.01.2021, 22:31 2
Цитата Сообщение от Aslan_1337 Посмотреть сообщение
взглянул на парту он заметил две строки (S1 и S2), причем первую строку он увидел на парте, а вторую - в отражении от экрана смартфона.
Но на законы физики Пете было наплевать так же, как и на английский язык.
Дальше больше - в отражении буквы просто переставились местами, а не развернулись, как в обычном зеркале!
"Матрица!" - догадался Петя. И дописал на парте ещё одно короткое слово
0
Just Do It!
3377 / 1843 / 618
Регистрация: 23.09.2014
Сообщений: 5,835
15.01.2021, 23:53 3
Aslan_1337,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <string>
 
void foo(const std::string a, const std::string c)
{   std::string b(c.rbegin(), c.rend());
    int cnt = 0;
    for(size_t s = 0; (s = a.find(b, s)) != std::string::npos; s++) ++cnt;
    std::cout << a << " - " << c << " : " << cnt << '\n';
}
 
int main()
{   foo("tabcabcdeafbfcf", "cba");
    foo("bbabbbb",         "bbb");
}
0
706 / 528 / 301
Регистрация: 24.02.2017
Сообщений: 1,881
16.01.2021, 00:16 4
XLAT,
Цитата Сообщение от Aslan_1337 Посмотреть сообщение
используя только стандартные библиотеки(string.h)
0
Just Do It!
3377 / 1843 / 618
Регистрация: 23.09.2014
Сообщений: 5,835
16.01.2021, 00:20 5
Цитата Сообщение от повар1 Посмотреть сообщение
string.h
давайте - ваш ход,

я не хочу си, когда предспичить контроллеры прогать тогда может да, а щас не интересен.
0
817 / 504 / 211
Регистрация: 19.01.2019
Сообщений: 1,196
16.01.2021, 03:58 6
Aslan_1337,
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
#include <stdio.h>
#include <string.h>
 
char* mystrstr(const char* str, const char* substr) {
    while (*str != 0) {
        if (*str == *substr) {
            const char* it1 = str;
            const char* it2 = substr;
            while (*it2 != 0) {
                if (*it1 == 0) return NULL;
                if (*it1 != *it2) break;
                ++it1; ++it2;
            }
            if (*it2 == 0) return (char*)str;
        }
        ++str;
    }
    return NULL;
}
 
unsigned long mystrlen(const char* str) {
    unsigned long cnt = 0;
    while (*str++ != 0) ++cnt;
    return cnt;
}
 
void strrev(char* begin, char* end) {
    while (begin < end) {
        char tmp = *begin;
        *begin++ = *--end;
        *end-- = tmp;
    }
}
 
 
int main()
{
    char s1[BUFSIZ], s2[BUFSIZ];
    scanf("%s%s", s1, s2);
 
    strrev(s2, s2 + mystrlen(s2));
    unsigned cnt = 0;
    char* found;
    for (found = s1; (found = mystrstr(found, s2)) != NULL; ++cnt, ++found);
    printf("%u", cnt);
 
    return 0;
}
1
Just Do It!
3377 / 1843 / 618
Регистрация: 23.09.2014
Сообщений: 5,835
16.01.2021, 15:37 7
nalbe666,
хз, может я погорячился и нужно было бы написать и на Си,
но Повар1 и сам умеет в сишку.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.01.2021, 15:37
Помогаю со студенческими работами здесь

Сравнение двух строк
Здравствуйте! возникла у меня небольшая проблема со сравнением двух строк разных типов. А точнее -...

Сравнение двух строк оператором ==
Мое почтение, уважаемые форумчане! Делаю шаблонный класс и случайно столкнулся с аномалией в моем...

Лексикографическок сравнение двух строк с++
Маленький Петя очень любит подарки. Его мама подарила ему на день рождения две строки равной длины,...

Сравнение двух строк string
Добрый день. Никак не пойму почему не хочет работать такой способ сравнения двух string строк,...

Сравнение двух строк лексикографически с++
Маленький Петя очень любит подарки. Его мама подарила ему на день рождения две строки равной длины,...

Сравнение состава двух строк
Добрый вечер! Подскажите, пожалуйста, как на c++ сравнить состав двух строк. Если из первой можно...


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

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

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