Форум программистов
 
О проблемах с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

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


Ответ
 
Опции темы
Старый 04.11.2020, 17:14   #1
apollon33
Пользователь
 
Регистрация: 18.09.2018
Сообщений: 12
Вопрос Работа со строками

Задание: Ввести строку и вывести количество НЕ цифр.
Код:
#include<iostream> //подключение системных средств для
using namespace std; //возможности использовать потоки ввода-вывода
#include <string>
int main()
{
    setlocale(LC_ALL, "RUS");
    string str;
    int k = 0;
    cout << "\nВведите строку ";
    getline(cin, str);
    for (int i = 0; i < str.length(); ++i)
        if (!isdigit(str[i])) ++k;
    cout << "\nКоличество НЕ цифр равно ";
    cout << k << '\n';
    return 0;
}
1. Проблема в том, что при вводе к примеру "rr 7 . ." получается 7 НЕ цифр. То есть, пробелы считаются тоже.
Есть ли способ не считать пробелы?
2. При вводе букв русского алфавита возникает error. Не думаю, но мб есть способ вводить их тоже?
Заранее огромное спасибо.
apollon33 вне форума Ответить с цитированием
Старый 07.11.2020, 12:52   #2
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 2,843
По умолчанию

Код:
  if ( (!isdigit(str[i])) && (str[i] != ' ') ) ++k;
Может, так?
Насчёт кириллицы не могу сказать. Давненько не писа'л на Си...
digitalis вне форума Ответить с цитированием
Старый 09.11.2020, 06:24   #3
ep1ckby
Пользователь
 
Регистрация: 15.10.2020
Сообщений: 20
По умолчанию

а что значит не цифра ?
string это же класс который содержит массив char
там по дефолту нет цифр , а только символы

Код:
#include <iostream>
#include <string>
using namespace std;

int main()
{
    setlocale(LC_ALL,"ru");
    cout << "Введите вашу строку:" << endl;
    string a;
    getline(cin, a);
    int sum = a.length();
    for (unsigned int i = 0; i < a.length(); i++) 
    {
        if (a[i] == ' ')
        {
            sum--;
        }
        else if (a[i] == '0' || a[i] == '1' || a[i] == '2' || a[i] == '3' || a[i] == '4' || a[i] == '5' ||
            a[i] == '6' || a[i] == '7' || a[i] == '8' || a[i] == '9')
        {
            sum--;
        }
    }
    cout << "Количество не цифр равно:  "   << sum << endl; 
}

Последний раз редактировалось ep1ckby; 09.11.2020 в 06:40.
ep1ckby вне форума Ответить с цитированием
Старый 09.11.2020, 07:51   #4
Алексей1153
фрилансер
Форумчанин
 
Регистрация: 11.10.2019
Сообщений: 355
По умолчанию

Код:
#include <iostream>
#include <string>
#include <algorithm>

using std::cin;
using std::cout;

int main()
{
    setlocale(LC_ALL, "RUS");
    
    std::string str; cout << "\nВведите строку "; getline(cin, str);
    const auto k=std::count_if(str.begin(),str.end(),[](const auto& i)
    {
       return !std::isspace((int)i) && !std::isdigit((int)i);
    });

    cout << "\nКоличество НЕ цифр равно "<< k << '\n';
    return 0;
}
Цитата:
Введите строку 7 tb 55 j 6f4

Количество НЕ цифр равно 4

Алексей1153 вне форума Ответить с цитированием
Старый 09.11.2020, 21:04   #5
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 2,843
По умолчанию

Цитата:
Сообщение от ep1ckby Посмотреть сообщение
там по дефолту нет цифр , а только символы
А что же такое "цифра", как не символ ASCII? 'A' - алфавитный символ с кодом 41h, '&' - специальный символ с кодом 26h, '1' - цифровой символ с кодом 31h . Чем цифровые провинились ?

Последний раз редактировалось digitalis; 09.11.2020 в 21:11.
digitalis вне форума Ответить с цитированием
Ответ
Купить рекламу на форуме от 7000 рублей в месяц



Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа со строками KT82 Общие вопросы C/C++ 2 21.01.2016 18:25
Работа со строками Solnze2 Паскаль, Turbo Pascal, PascalABC.NET 2 22.09.2012 22:14
Работа со строками deadmaross Помощь студентам 1 08.04.2011 17:07
Работа со строками KatruKot Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 26.03.2011 17:21
Работа с матрицами (норма матрицы, работа со строками) Neitrosha Помощь студентам 1 26.11.2010 20:19


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS
Скидки на курсы GeekBrains 40%, выбирайте программу для себя