Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
1 / 1 / 3
Регистрация: 22.11.2009
Сообщений: 55

Количество введеных цифр в консоли

20.02.2010, 21:16. Показов 4129. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем, у меня возникла проблема с консолью
мне нужно чтоб после ввода цифр через пробел и нажатия ENTER считать количество этих цифр, может кто знает какую функцию.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.02.2010, 21:16
Ответы с готовыми решениями:

дано натуральное число N. Определить,во сколько раз произведение цифр числа больше суммы цифр.Найти количество чётных цифр в записи числа!!
дано натуральное число N. Определить,во сколько раз произведение цифр числа больше суммы цифр.Найти количество чётных цифр в записи числа!!...

Пользователь вводит строку. Определить количество букв (рус eng), количество цифр и количество остальных
в чем проблема не пойму работает на английских буквах на цифрах и остальные символы вроде считает а вот русские не хочет их забивает как...

Определить количество букв, количество цифр и количество остальных символов, присутствующих в строке
Дана строка. Определить количество букв, количество цифр и количество остальных символов, присутствующих в строке. Рекомендации: Для...

25
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
20.02.2010, 21:31
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <string>
#include <cctype>
#include <algorithm>
 
bool isDigit(int ch){ return isdigit(ch); }
 
int main(){
    std::string buf;
    std::cout << "String: ";
    std::getline(std::cin, buf);
    std::string::size_type cnt = std::count_if(buf.begin(), buf.end(), isDigit);
    std::cout << cnt << " digits in string" << std::endl;
    
    return 0;
}
1
1 / 1 / 3
Регистрация: 22.11.2009
Сообщений: 55
20.02.2010, 22:13  [ТС]
у меня вылазит ошибка
C++
1
Error   1   error C3861: 'isDigit': identifier not found    c:\users\user\documents\visual studio 2008\projects\sort\sort\sort.cpp  117 Sort
проблема решилась
0
425 / 229 / 87
Регистрация: 25.03.2009
Сообщений: 744
20.02.2010, 22:17
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <string>
#include <cctype>
#include <algorithm>
 
 
int main(){
        std::string buf;
        std::cout << "String: ";
        std::getline(std::cin, buf);
        std::string::size_type cnt = std::count_if(buf.begin(), buf.end(), isdigit);
        std::cout << cnt << " digits in string" << std::endl;
        
        return 0;
}
easybudda, мож лучше так?
1
1 / 1 / 3
Регистрация: 22.11.2009
Сообщений: 55
20.02.2010, 22:20  [ТС]
мне нужно чтоб считалось количество чисел через пробел а этот алгоритм считает количество всех чисел
http://img4.immage.de/200235e644a.png
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
20.02.2010, 22:24
Андрейка, не, так не будет работать, я уж пробовал. isdigit() возвращает int а надо bool. То, что я написал, точно работает, это что-то у человека скопировать не получилось...
0
 Аватар для mirso
562 / 373 / 55
Регистрация: 05.04.2009
Сообщений: 767
20.02.2010, 23:59
Цитата Сообщение от vetalxxx Посмотреть сообщение
мне нужно чтоб считалось количество чисел через пробел
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <sstream>
 
int main()//=========================================================
{
    size_t i(0);
 
    std::string s = " 1 23 456 789 0 ";
    std::istringstream is ( s );
 
    std::cout << is.str() << std::endl;
    //--------------------
    while ( is >> s ) i++;
    //--------------------
    std::cout << i << std::endl;
 
    return 0;
}//==================================================================
1
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
21.02.2010, 00:25
mirso, я так понял, в строке не только числа могут быть.

Цитата Сообщение от vetalxxx Посмотреть сообщение
мне нужно чтоб считалось количество чисел через пробел а этот алгоритм считает количество всех чисел
Количество цифр он считает...
Сразу бы так и написали... Вот Вам считалка целых чисел без знака:
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
#include <iostream>
#include <sstream>
#include <string>
#include <cctype>
 
 
bool isNum(const std::string& s){
    for ( std::string::const_iterator i = s.begin(); i != s.end(); ++i )
        if ( !isdigit(*i) )
            return false;
    return true;
}
 
int main(){
    std::string buf;
    size_t count = 0;
    std::cout << "String: ";
    std::getline(std::cin, buf);
    
    std::istringstream ist(buf);
    std::string str;
    while ( ist >> str )
        if ( isNum(str) )
            ++count;
    
    std::cout << count << " numbers in string." << std::endl;
    
    return 0;
}
1
 Аватар для mirso
562 / 373 / 55
Регистрация: 05.04.2009
Сообщений: 767
21.02.2010, 00:32
Цитата Сообщение от easybudda Посмотреть сообщение
mirso, я так понял, в строке не только числа могут быть.
Цитата Сообщение от vetalxxx Посмотреть сообщение
а этот алгоритм считает количество всех чисел
http://img4.immage.de/200235e644a.png
ну да!
C++
1
if ( std::atoi( s.c_str() ) || s == "0" ) i++;
1
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
21.02.2010, 01:01

Не по теме:

mirso, беда в другом - человек разницы между числами и цифрами не замечает... ;)



Добавлено через 14 минут
Цитата Сообщение от mirso Посмотреть сообщение
C++
1
if ( std::atoi( s.c_str() ) || s == "0" ) i++;
Кстати, тоже не совсем комильфо - atoi("123abc") вернёт 123.
2
21.02.2010, 01:05

Не по теме:

Знаю!:)
Так проверку ты написал уже!
Эт я усе варьянты пробувую!

0
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
21.02.2010, 01:26
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
#include <iostream>
#include <sstream>
#include <string>
 
using namespace std;
 
int isdigit(string &s)
{
    for (int i = 0; i < s.size(); ++i) if (!isdigit(s[i])) return 0;
    return 1;
}
 
int main()
{
    string s;
    getline(cin,s);
    stringstream tmp;
    tmp << s;
    int top = 0;
    while (tmp >> s) if (isdigit(s)) ++top;
    cout << "You have " << top << " digits" << endl;
    system("pause");
    return 0;
}
Добавлено через 44 секунды
Запись чисел в масив организируйте сами..
1
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
21.02.2010, 01:43
С стиль
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
 
/* возвращает 0, если s - беззнаковое целое */
int isNum(const char *s){
    if ( !s )
        return EOF;
    for ( ; isdigit(*s); ++s )
        ;
    return *s;
}
 
#define SPCHARS " ,.\t\n"
 
int main(void){
    char buf[BUFSIZ], *p;
    size_t cnt = 0;
    
    printf("String: ");
    if ( !fgets(buf, BUFSIZ, stdin) )
        exit(1);
    for ( p = strtok(buf, SPCHARS); p != NULL; p = strtok(NULL, SPCHARS) )
        if ( !isNum(p) )
            ++cnt;
    printf("%d numbers.\n", cnt);
    
    exit(0);
}
1
1 / 1 / 3
Регистрация: 22.11.2009
Сообщений: 55
21.02.2010, 13:47  [ТС]
Спасибо всем за ответы
Спасибо outoftime твой код мне подходит
http://img3.immage.de/2102a930.png
0
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
21.02.2010, 15:43
vetalxxx, по каким критериям цените?
0
1 / 1 / 3
Регистрация: 22.11.2009
Сообщений: 55
24.02.2010, 20:16  [ТС]
Пытаюсь организовать запись в масcив так
C++
1
2
3
4
5
6
    string s;
    getline(cin,s);
    stringstream tmp;
    tmp << s;
    int top = 0;
    while (tmp >> s) if (isdigit(s)) ++top &&  array[s] ;
но вылезает ошибка может кто знает как от нее избавится
C++
1
Error   2   error C2677: binary '[' : no global operator found which takes type 'std::string' (or there is no acceptable conversion)    c:\users\user\documents\visual studio 2008\projects\sort\sort\sort.cpp  130 Sort
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
24.02.2010, 21:23
C++
1
++top &&  array[s]
что вы хотели этим сделать и кто такой array?
0
1 / 1 / 3
Регистрация: 22.11.2009
Сообщений: 55
24.02.2010, 21:57  [ТС]
При таком коде
C++
1
while (tmp >> s) if (isdigit(s)) ++top &&  cout << "You have " << s << endl ;
программа делает
http://ipicture.net.ua/picture... 3fc940.png

вот я и хочу чтоб вместо
C++
1
cout << "You have " << s << endl
числа заносились в массив
C++
1
array[s]
0
 Аватар для mirso
562 / 373 / 55
Регистрация: 05.04.2009
Сообщений: 767
24.02.2010, 23:32
vetalxxx,
Цитата Сообщение от vetalxxx Посмотреть сообщение
вместо
Код C++
cout << "You have " << s << endl
числа заносились в массив
можно в вектор
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    std::vector<int> v;
    std::string s;
 
    std::getline ( std::cin, s );
    std::stringstream tmp ( s );
    size_t n = 0;
 
    while ( tmp >> s )
    {
        if ( isdigit(s) )
        {
            v.push_back( std::atoi(s.c_str()) );
            ++n;
        }
    }
    std::cout << "You have " << n << " digits" << std::endl;
 
    for ( std::size_t i = 0; i < v.size(); ++i )
    std::cout << " array[" << i << "] = " << v[i] << std::endl;
1
1 / 1 / 3
Регистрация: 22.11.2009
Сообщений: 55
25.02.2010, 01:44  [ТС]
Скажите пожалуйста, почему в таком виде программа сортирует
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
49
50
51
52
53
54
55
56
57
// cor.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
using namespace std;
//#define x 1000
int isdigit(string &s)
{
    for (int i = 0; i < s.size(); ++i) if (!isdigit(s[i])) return 0;
    return 1;
}
 
void Out(int col, vector<int> mas)                            
{
   for(int i = 0 ; i < col ; i++) 
     cout << mas[i] <<" ";
   cout << endl;  
}
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    
    vector<int> v;
    string s;
    getline ( cin, s );
    stringstream tmp ( s );
    size_t n = 0;
    while ( tmp >> s )
    {
        if ( isdigit(s) )
        {
            v.push_back( atoi(s.c_str()) );
            ++n;
        }
    }
 
    _gettch();
    int i, j;
    for(i = 0 ; i < n ; i++) { 
       for(j = 0 ; j < n - i - 1 ; j++) {  
           if(v[j] > v[j+1]) {           
              int tmp = v[j]; v[j] = v[j+1] ; v[j+1] = tmp; 
           }
        }
    }
 
 
    _gettch();
    Out(n,v);
    _gettch();
 
}
http://ipicture.net.ua/picture... aca1b0.png


а в таком не хочет сортировать вроде все правильно написал

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
49
50
51
52
53
54
55
56
57
58
59
// cor.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
using namespace std;
//#define x 1000
int isdigit(string &s)
{
    for (int i = 0; i < s.size(); ++i) if (!isdigit(s[i])) return 0;
    return 1;
}
 
void Bubble_sort(int col, vector<int> mas )
{
    int i, j;
    for(i = 0 ; i < col ; i++) { 
       for(j = 0 ; j < col - i - 1 ; j++) {  
           if(mas[j] > mas[j+1]) {           
              int tmp = mas[j]; mas[j] = mas[j+1] ; mas[j+1] = tmp; 
           }
        }
    }
}
 
void Out(int col, vector<int> mas)                            
{
   for(int i = 0 ; i < col ; i++) 
     cout << mas[i] <<" ";
   cout << endl;  
}
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    
    vector<int> v;
    string s;
    getline ( cin, s );
    stringstream tmp ( s );
    size_t n = 0;
    while ( tmp >> s )
    {
        if ( isdigit(s) )
        {
            v.push_back( atoi(s.c_str()) );
            ++n;
        }
    }
 
    _gettch();
    Bubble_sort(n,v);
    Out(n, v);
    _gettch();
 
}
http://ipicture.net.ua/picture... 47400a.png[/QUOTE]
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.02.2010, 01:44
Помогаю со студенческими работами здесь

Вывести на экран количество цифр в заданном числе и сумму этих цифр
я начинающий! помогите! мне на екзам! Дано натуральное число а (a&lt;100). Напишите программу, выводящую на экран количество цифр в этом...

Определить количество цифр в числе n и сумму всех его цифр
Дано натуральное n , определить количество цифр в числе n и сумму всех его цифр. Значение n ввести с клавиатуры. Добавлено через...

Функция вычисляющая количество цифр числа и сумму этих цифр
Не могу найти ошибку. Помогите пожалуйста. Дана последовательность n натуральных чисел. Для каждого числа вычислить количество его цифр и...

Рекурсия: количество цифр в числе, сумма цифр и реверс числа
Вот задание: Написать программу, которая запрашивает у пользователя целое число, на экран выводит сколько цифр в числе, их сумму и...

Как изменить размер цифр,букв в консоли С++
Здравствуйте,как изменить размер цифр,букв в консоли С++? Нужно цифры от 1 до 15 сделать большими,например как шрифт 23,24 в ворде....


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru