Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.87
vetalxxx
1 / 1 / 0
Регистрация: 22.11.2009
Сообщений: 55
20.02.2010, 21:16     Количество введеных цифр в консоли #1
Привет всем, у меня возникла проблема с консолью
мне нужно чтоб после ввода цифр через пробел и нажатия ENTER считать количество этих цифр, может кто знает какую функцию.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.02.2010, 21:16     Количество введеных цифр в консоли
Посмотрите здесь:

Напишите программу, выводящую на экран количество цифр в этом числе и сумму этих цифр C++
C++ дано натуральное число N. Определить,во сколько раз произведение цифр числа больше суммы цифр.Найти количество чётных цифр в записи числа!!
C++ Запрет ввода любых символов кроме цифр в консоли
C++ Дана последовательность n натуральных чисел. Для каждого числа вычислить количество его цифр и сумму этих цифр. Вывести на экран каждое число, количес
C++ Определить количество цифр в числе n и сумму всех его цифр
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
20.02.2010, 21:31     Количество введеных цифр в консоли #2
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;
}
vetalxxx
1 / 1 / 0
Регистрация: 22.11.2009
Сообщений: 55
20.02.2010, 22:13  [ТС]     Количество введеных цифр в консоли #3
у меня вылазит ошибка
C++
1
Error   1   error C3861: 'isDigit': identifier not found    c:\users\user\documents\visual studio 2008\projects\sort\sort\sort.cpp  117 Sort
проблема решилась
Андрейка
410 / 214 / 24
Регистрация: 25.03.2009
Сообщений: 716
20.02.2010, 22:17     Количество введеных цифр в консоли #4
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, мож лучше так?
vetalxxx
1 / 1 / 0
Регистрация: 22.11.2009
Сообщений: 55
20.02.2010, 22:20  [ТС]     Количество введеных цифр в консоли #5
мне нужно чтоб считалось количество чисел через пробел а этот алгоритм считает количество всех чисел
http://img4.immage.de/200235e644a.png
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
20.02.2010, 22:24     Количество введеных цифр в консоли #6
Андрейка, не, так не будет работать, я уж пробовал. isdigit() возвращает int а надо bool. То, что я написал, точно работает, это что-то у человека скопировать не получилось...
mirso
523 / 341 / 17
Регистрация: 05.04.2009
Сообщений: 709
20.02.2010, 23:59     Количество введеных цифр в консоли #7
Цитата Сообщение от 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;
}//==================================================================
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
21.02.2010, 00:25     Количество введеных цифр в консоли #8
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;
}
mirso
523 / 341 / 17
Регистрация: 05.04.2009
Сообщений: 709
21.02.2010, 00:32     Количество введеных цифр в консоли #9
Цитата Сообщение от easybudda Посмотреть сообщение
mirso, я так понял, в строке не только числа могут быть.
Цитата Сообщение от vetalxxx Посмотреть сообщение
а этот алгоритм считает количество всех чисел
http://img4.immage.de/200235e644a.png
ну да!
C++
1
if ( std::atoi( s.c_str() ) || s == "0" ) i++;
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
21.02.2010, 01:01     Количество введеных цифр в консоли #10

Не по теме:

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



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

Не по теме:

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

outoftime
║XLR8║
 Аватар для outoftime
505 / 427 / 33
Регистрация: 25.07.2009
Сообщений: 2,297
21.02.2010, 01:26     Количество введеных цифр в консоли #12
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 секунды
Запись чисел в масив организируйте сами..
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
21.02.2010, 01:43     Количество введеных цифр в консоли #13
С стиль
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);
}
vetalxxx
1 / 1 / 0
Регистрация: 22.11.2009
Сообщений: 55
21.02.2010, 13:47  [ТС]     Количество введеных цифр в консоли #14
Спасибо всем за ответы
Спасибо outoftime твой код мне подходит
http://img3.immage.de/2102a930.png
outoftime
║XLR8║
 Аватар для outoftime
505 / 427 / 33
Регистрация: 25.07.2009
Сообщений: 2,297
21.02.2010, 15:43     Количество введеных цифр в консоли #15
vetalxxx, по каким критериям цените?
vetalxxx
1 / 1 / 0
Регистрация: 22.11.2009
Сообщений: 55
24.02.2010, 20:16  [ТС]     Количество введеных цифр в консоли #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
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
24.02.2010, 21:23     Количество введеных цифр в консоли #17
C++
1
++top &&  array[s]
что вы хотели этим сделать и кто такой array?
vetalxxx
1 / 1 / 0
Регистрация: 22.11.2009
Сообщений: 55
24.02.2010, 21:57  [ТС]     Количество введеных цифр в консоли #18
При таком коде
C++
1
while (tmp >> s) if (isdigit(s)) ++top &&  cout << "You have " << s << endl ;
программа делает
http://ipicture.net.ua/pictures/1b5c...890a3fc940.png

вот я и хочу чтоб вместо
C++
1
cout << "You have " << s << endl
числа заносились в массив
C++
1
array[s]
mirso
523 / 341 / 17
Регистрация: 05.04.2009
Сообщений: 709
24.02.2010, 23:32     Количество введеных цифр в консоли #19
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;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.02.2010, 01:44     Количество введеных цифр в консоли
Еще ссылки по теме:

C++ Создать файл, ввести символы, вывести на экран количество не латинских букв, количество цифр
Рекурсия: количество цифр в числе, сумма цифр и реверс числа C++
Пользователь вводит строку. Определить количество букв (рус eng), количество цифр и количество остальных C++

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

Или воспользуйтесь поиском по форуму:
vetalxxx
1 / 1 / 0
Регистрация: 22.11.2009
Сообщений: 55
25.02.2010, 01:44  [ТС]     Количество введеных цифр в консоли #20
Скажите пожалуйста, почему в таком виде программа сортирует
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/pictures/a154...eb3daca1b0.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/pictures/821b...7c5f47400a.png[/QUOTE]
Yandex
Объявления
25.02.2010, 01:44     Количество введеных цифр в консоли
Ответ Создать тему
Опции темы

Текущее время: 12:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru