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

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

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

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

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

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

Задание: Ввести строку и вывести количество НЕ цифр.
Код:
#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
Сообщений: 4,537
По умолчанию

Код:
  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
Сообщений: 951
По умолчанию

Код:
#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
Сообщений: 4,537
По умолчанию

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

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


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа со строками KT82 Общие вопросы C/C++ 2 21.01.2016 18:25
Работа со строками Solnze2 Паскаль, Turbo Pascal, PascalABC.NET 2 22.09.2012 23:14
Работа со строками deadmaross Помощь студентам 1 08.04.2011 18: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