Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.06.2022, 23:31   #1
Jorsan
Пользователь
 
Регистрация: 14.03.2021
Сообщений: 39
Восклицание Строка и согласные

Здравствуйте! Нужно найти количество слов в строке, которые содержат согласные латинские буквы. Увы не понимаю как это сделать .
Jorsan вне форума Ответить с цитированием
Старый 25.06.2022, 00:21   #2
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,549
По умолчанию

Цитата:
Сообщение от Jorsan Посмотреть сообщение
согласные латинские буквы
Ну это просто, вот список согласных латинских букв: B, C, D, F, G, H, J, K, L, M, N, P, Q, R, S, T, V, W, X, Z.
Arigato на форуме Ответить с цитированием
Старый 25.06.2022, 00:50   #3
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Это не все. Есть еще строчные: b, c, d, f, g, h, j, k, l, m, n, p, q, r, s, t, v, w, x, z
Далее все просто. Флаг начала слова взведен до входа в цикл. Проходите по строке используя переменную индекс. Когда символ по индексу равен пробелу, то взводите флаг. Когда флаг взведен и символ по индексу не равен пробелу, тогда запоминаете индекс как начало слова и сбрасываете флаг. Когда символ по индексу является одним из перечисленных (согласных), тогда выполняете пропуск до конца слова (пока символ по индексу не станет равен пробелу) и выводите слово начиная с сохраненного индекса и до текущего (пробела). Все это в одном единственном цикле. Даже пропуск можно сделать без дополнительного цикла, но это будет не совсем хорошим вариантом.
macomics вне форума Ответить с цитированием
Старый 25.06.2022, 11:07   #4
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

А если разделителем будет не пробел?
digitalis вне форума Ответить с цитированием
Старый 25.06.2022, 11:18   #5
Jorsan
Пользователь
 
Регистрация: 14.03.2021
Сообщений: 39
По умолчанию

macomics, а как это можно реализовать на c++? В чатности проверку на согласные?
Jorsan вне форума Ответить с цитированием
Старый 25.06.2022, 11:19   #6
Jorsan
Пользователь
 
Регистрация: 14.03.2021
Сообщений: 39
По умолчанию

digitalis, в частности для данной задачи предполагается, что пробел - символ разделитель.
Jorsan вне форума Ответить с цитированием
Старый 25.06.2022, 11:43   #7
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
А если разделителем будет не пробел?
Про набор разделителей в задании не сказано - значит можно выбрать свой.

Цитата:
Сообщение от Jorsan Посмотреть сообщение
а как это можно реализовать на c++?
Открываете блокнот. В нем набираете
Код:
#include <iostream>
int main() {
  /* Просто добавь воды */

  /****************************/
  return 0;
}
Цитата:
Сообщение от Jorsan Посмотреть сообщение
В чатности проверку на согласные?
Есть несколько вариантов: Записать все согласные в массив и проверять в цикле до конца или первого совпадения. Или создать массив, где индексы равны коду символов, в ячейки с кодами согласных записать 1, в остальные 0 и без цикла проверять каждый символ по индексу в строке на значение, которое записано в массиве по индексу кода символа.
macomics вне форума Ответить с цитированием
Старый 25.06.2022, 11:48   #8
Jorsan
Пользователь
 
Регистрация: 14.03.2021
Сообщений: 39
По умолчанию

macomics, массив char'ов?
Jorsan вне форума Ответить с цитированием
Старый 25.06.2022, 11:50   #9
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Цитата:
Сообщение от Jorsan Посмотреть сообщение
массив char'ов?
Конечно. Или любой тип, который сможет сохранить значения кодов символов. Например: wchar_t
macomics вне форума Ответить с цитированием
Старый 25.06.2022, 12:26   #10
Jorsan
Пользователь
 
Регистрация: 14.03.2021
Сообщений: 39
По умолчанию

macomics, получилось что-то такое:

Код:
#include <iostream>
#include <locale>
#include <vector>
#include <fstream>

using namespace std;

main()
{
    setlocale(0, "");
    ifstream Fin;

    string a;
    vector <string> svec;
    vector <string> ::iterator it;
    Fin.open("text.txt");

    getline(Fin, a);
    cout<<a<<endl;

    int k = 0, pos = 0, index = 0;
    char c[20] = {'q', 'w', 'r', 't', 'p', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'z', 'x', 'c', 'v', 'b', 'n', 'm'};

    while (a.find(' ', index) != -1)
    {
        string stroka;
        index = a.find(' ', index + 1);
        stroka = a.substr(pos, index-pos);
        for (int i = 0; i < stroka.length(); i++)
        {
            for (int j = 0; j < 20; j++)
            {
                if (stroka[i] == c[j])
                {
                    svec.push_back(stroka);
                    k++;
                }
                break;
            }
        }
        pos = index;
        cout<<index<<endl;
    }

    for (it = svec.begin(); it != svec.end(); it++)
    {
        cout<<*it;
    }

    cout<<endl<<k<<endl;
}
Jorsan вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[VBA] Сформировать матрицу, у которой первая строка – произвольные числа, вторая строка - квадраты этих чисел, третья строка - кубы этих чисел и т.д. SkyGir Помощь студентам 5 24.05.2019 17:04
Определить, чередуются ли в строке гласные и согласные буквы Waise Помощь студентам 12 27.04.2015 11:56
Delphi 7: гласные и согласные kiberzem Общие вопросы Delphi 2 18.02.2014 22:01
Ряд символов. Согласные. asmars Общие вопросы C/C++ 4 14.04.2012 04:44
Гласные и согласные буквы artemavd Общие вопросы Delphi 7 22.06.2009 20:53