[H-L-L.ru]

Форма входа

Меню сайта

Categories
Основы работы в среде C++ Builder.Основы языка Си++ [7]
Операторы ветвления и операторы передачи управления [7]
Операторы цикла и операторы передачи управления [15]
Одномерные массивы [15]
Многомерные массивы [7]
Указатели.Динамическое распределение памяти [15]
Функции [4]
Строки [3]
Функция Main [15]
Типы данных,определяемые пользователем [1]
Потоки ввода/вывода [0]
Объектно-ориентированное программирование [0]
Справочные материалы [2]

Главная » Статьи » Решение задач на C++ к лекциям » Строки

Задача №12
Во введенном слове подсчитать количество различных пар букв. Например, в слове babacabacd 5 различных пар букв, ba – 3 пары, ac – 2 пары.

Вариант 1:

#include <map>
{
    char str[100];
    cout<<RUS("Введите слово: ");
    cin.getline(str, 100);
    std::map<std::string, int> pairs;
    for(int i=0, len=strlen(str); i<len-1; i++)
    {
        std::string a="";
        a += str[i];
        a += str[i+1];
        pairs[a]++;
    }
    cout<<RUS("Различных пар букв в слове: ")<<str<<"-"<<pairs.size() << std::endl;
}

Вариант 2:

#include <iostream>
#include <string>
#include <locale>
#include <vector>
 
using namespace std;
 
int main()
{
        setlocale(LC_ALL, "Russian");
        string st1;
        string st2;
        string st3;
        vector<string> st;
        vector<string> str;
        int i = 0;
        int j = 0;
        int amt = 0;
        int count = 0;
        st1 = "babacabacd";
        int sz = st1.size();
        for (int i = 0; i < sz - 1; i++)
        {
                st2 = st1[i];
                st2 += st1[i + 1];
                st.push_back(st2);
                amt++;
                st2 = "";
        }
        for (int i = 0; i < amt - 1; i++)      
                for (int j = i + 1; j < amt; j++)
                        if (st[i] > st[j])
                        {
                                st3 = st[i];
                                st[i] = st[j];
                                st[j] = st3;
                        }
        for (int i = 0; i < amt - 1; i++)
                if (st[i] == st[i + 1])
                        st[i] = "";
        for (int i = 0; i < amt; i++)
                if (st[i] != "")
                        count++;
        cout << endl
                << "В слове \"" << st1 << "\" " << count << " различных пар букв."
                << endl;
        system("pause");
        return 0;
}


Источник: различных пар букв

Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]

Полная версия сайта