0 / 0 / 0
Регистрация: 09.05.2013
Сообщений: 19
1

Количество цифр в массиве строк

12.05.2013, 00:12. Показов 2756. Ответов 18
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите, очень нужна программа считающая количество цифр в массиве строк
мне писали такую,но в ней много ошибок...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// ?????????? ?????????? ????????? ???? ? ??????? ?????
#include <stdafx.h/>
#include "stdring"
#include "iostream"
#include "locale"
using namespace std;
int main()
{
string str;
usingned int k=0;
int kol=0;
cout<<"??????? ??????"<< endl;
getline(cin,str);
`while(k<str.length())
{
if((str[k]>=0) &&(str[k]<=9)) kol=kol+1;
}
cout<<"?????????? ???? ? ?????? = "<< kol<<endl;
return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.05.2013, 00:12
Ответы с готовыми решениями:

В созданном массиве строк, подсчитать в тексте количество слов, в которых нету цифр
В созданном массиве строк, подсчитать в тексте количество слов, в которых нету цифр

Посчитать количество цифр в массиве
Здравствуйте! Необходимо считать введенную пользователем строку в массив и посчитать количество...

Количество цифр X в одномерном массиве
как определить количество цифр X в одномерном массиве? помогите пожалуста

Определить количество цифр в массиве больших 5 и 12
Задача такова: Одномерный массив действительных чисел вводится с помощью клавиатуры. Создать...

18
Неэпический
17869 / 10634 / 2054
Регистрация: 27.09.2012
Сообщений: 26,736
Записей в блоге: 1
12.05.2013, 06:05 2
isdigit в помощь
0
164 / 120 / 46
Регистрация: 17.03.2013
Сообщений: 284
12.05.2013, 06:31 3
cctype

isdigit

Добавлено через 20 секунд
http://www.cplusplus.com/reference/cctype/
0
0 / 0 / 0
Регистрация: 09.05.2013
Сообщений: 19
12.05.2013, 23:39  [ТС] 4
посчитать количество цифр в массиве строк.
Работает но не выводит количество
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// ?????????? ?????????? ????????? ???? ? ??????? ?????
 
#include "string.h"
#include "iostream"
#include "locale"
#include "cctype"
 
using namespace std;
int main()
{
    setlocale(LC_ALL, "Russian");
string str;
 int k=0;
int kol=0;
cout<<"ââåäèòå ñòðîêó"<< endl;
getline(cin,str);
while(k<str.length())
{
if((str[k]>=0) &&(str[k]<=9)) kol=kol+1;
}
cout<<"êîëëè÷åñòâî öèôð â ñòðîêå = "<< kol<<endl;
return 0;
}
0
0 / 0 / 0
Регистрация: 09.05.2013
Сообщений: 19
12.05.2013, 23:55  [ТС] 5
дело в том,что не проходили библиотеку isdigit да и dev c++ на нее ругается...
0
Неэпический
17869 / 10634 / 2054
Регистрация: 27.09.2012
Сообщений: 26,736
Записей в блоге: 1
13.05.2013, 00:04 6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <string>
#include <iostream>
#include <algorithm>
#include <cctype>
using namespace std;
 
bool isdigit_pred(const unsigned char val){
    return isdigit(val);
}
 
 
int main(){
    string str;
    unsigned int k=0;
    cout<<"Enter string:"<< endl;
    getline(cin,str);
    int kol=count_if(str.begin(),str.end(),isdigit_pred);
    cout<<"Count = "<<kol<<endl;
    return 0;
}
1
0 / 0 / 0
Регистрация: 09.05.2013
Сообщений: 19
13.05.2013, 01:03  [ТС] 7
а без использования cctype и isdigit она не решаема???
0
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
13.05.2013, 01:11 8
замените свой цикл на такой:
C++
1
2
3
4
5
6
7
for (int i = 0; i < str.length(); ++i)
{
  if ((str[i]>='0') &&(str[i]<='9'))
  {
    ++kol;
  }
}
1
Мой лучший друг-отладчик!
167 / 167 / 30
Регистрация: 24.06.2012
Сообщений: 662
Записей в блоге: 5
13.05.2013, 01:16 9
Croessmah, для isdigit() не обязательно подключать cctype - isdigit() и без неё работает
0
0 / 0 / 0
Регистрация: 09.05.2013
Сообщений: 19
13.05.2013, 01:20  [ТС] 10
Больше в программе ничего менять не надо?
0
0 / 0 / 0
Регистрация: 09.05.2013
Сообщений: 19
13.05.2013, 02:15  [ТС] 11
Всем спасибо)))Решил вот так:
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 <string>
#include <iostream>
#include <locale>
#include <conio.h>
using namespace std;
int main()
{
     setlocale(LC_ALL, "Russian");
string str;
int k=0;
int kol=0;
cout<<"Ââåäèòå ñòðîêó"<< endl;
getline(cin,str);
for (int i = 0; i < str.length(); ++i)
{
  if ((str[i]>='0') &&(str[i]<='9'))
  {
    ++kol;
  }
}
cout<<"Êîëè÷åñòâî öèôð â ñòðîêå = "<< kol<<endl;
getch();
return 0;
}
0
Неэпический
17869 / 10634 / 2054
Регистрация: 27.09.2012
Сообщений: 26,736
Записей в блоге: 1
13.05.2013, 07:24 12
Цитата Сообщение от ZaMaZaN4iK Посмотреть сообщение
Croessmah, для isdigit() не обязательно
Без этого хедера он не будет работать, потому что isdigit в нем объявлен. Не верите? Удалите файл
И вообще, лучше явно подключать все заголовки, чтобы не нарваться на компилятор, в котором неявно не подключается какой-то заголовок

http://www.cplusplus.com/reference/cctype/isdigit/
1
Мой лучший друг-отладчик!
167 / 167 / 30
Регистрация: 24.06.2012
Сообщений: 662
Записей в блоге: 5
13.05.2013, 10:04 13
Croessmah, Я с вами полностью согласен, что нужно подключать данный заголовок, и я прекрасно помню, что isdigit() там обьявлен.И когда Прата читал, там тоже cctype описана.Но вот по крайней мере в MSVS 2010 и в Dev-C++ они неявно подключают cctype
1
Tulosba
13.05.2013, 12:02
  #14

Не по теме:

Цитата Сообщение от Croessmah Посмотреть сообщение
C++
1
int kol=count_if(str.begin(),str.end(),isdigit_pred);
Кстати, интересно, что студия съедает и без ручного предиката, с обычным isdigit.

1
Croessmah
13.05.2013, 12:04
  #15

Не по теме:

Цитата Сообщение от Tulosba Посмотреть сообщение
Кстати, интересно, что студия съедает и без ручного предиката, с обычным isdigit.
Попробуйте с кириллицей :)

1
Tulosba
13.05.2013, 12:26
  #16

Не по теме:

Цитата Сообщение от Croessmah Посмотреть сообщение
Попробуйте с кириллицей
В release сборке всё нормально :) Но я не об этом хотел сказать. А о том, что на ideone код не собирается в принципе со стандартным isdigit в качестве предиката, а в студии собирается. О проблемах рантайма пока молчу.

1
Неэпический
17869 / 10634 / 2054
Регистрация: 27.09.2012
Сообщений: 26,736
Записей в блоге: 1
13.05.2013, 13:22 17
Tulosba,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <string>
#include <iostream>
#include <algorithm>
#include <cctype>
using namespace std;
typedef int (*ISPRED)(int);
 
int main(){
    string str;
    unsigned int k=0;
    cout<<"Enter string:"<< endl;
    getline(cin,str);
    int kol=std::count_if<string::iterator,ISPRED>(str.begin(),str.end(),isdigit);
    cout<<"Count = "<<kol<<endl;
    return 0;
}
есть еще один вариант, который самый разумный - не использовать using namespace std;
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <string>
#include <iostream>
#include <algorithm>
#include <cctype>
 
int main(){
    std::string str;
    unsigned int k=0;
    std::cout<<"Enter string:"<<std::endl;
    std::getline(std::cin,str);
    int kol=std::count_if(str.begin(),str.end(),isdigit);
    std::cout<<"Count = "<<kol<<std::endl;
    return 0;
}
Еще один аргумент против скидывания всего std

Добавлено через 5 минут
хотя можно использовать так:
C++
1
::isdigit
2
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
13.05.2013, 13:54 18
Вот чуть модифицированный второй исходник как раз не собирается с std::isdigit (видимо из-за наличия перегруженных функций), и собирается с ::isdigit. https://ideone.com/0PoDOV
Студия же кушает оба варианта.
P.S. про явное указание параметров шаблона как-то вылетело из головы
1
0 / 0 / 0
Регистрация: 09.05.2013
Сообщений: 19
14.05.2013, 00:20  [ТС] 19
спасибо всем огромное,но вот появилась не задача,программа должна считать не одну строку,а массив строк...
0
14.05.2013, 00:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.05.2013, 00:20
Помогаю со студенческими работами здесь

Как посчитать количество цифр в массиве?
Как посчитать количество цифр в массиве. Знаю что при помощи цикла, но не знаю как создать.

Найти количество повторяющихся в массиве цифр
Помогите у меня задача:&quot;Мади подарили новый блокнот. Ему очень понравился подарок, но единственное,...

Найти количество нечётных цифр в массиве
Введены цифры , нужно найти сколько из них нечётные числа. Нужно использывать массивы.

В символьном массиве рассчитать количество цифр
Нужно ввести символьный массив из 8-ми элементов и найти количество цифр в этом массиве


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru