Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
1 / 1 / 0
Регистрация: 18.04.2011
Сообщений: 20
1

Цисла в строке

21.05.2011, 01:27. Показов 897. Ответов 18
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Народ, подскажите

Как посчитать колличество чисел в строке через С++??
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.05.2011, 01:27
Ответы с готовыми решениями:

найти номер максимального цисла
люди помогите пожалуйста нужно создать целочисленный массив потом найти в нем номер последнего...

Сделать пробелы между цифрами цисла
Есть число 1000, 2000. Как по средством php сделать так, чтобы были пробелы между скажем 2, а когда...

Составить программу,позволяющую вводить целые цисла до тех пор,пока не будет введено число два, и вычислить произведение введенных чисел.
Составить программу,позволяющую вводить целые цисла до тех пор,пока не будет введено число два, и...

В строке S записаны слова исходного текста, в отдельной строке S1- одно из слов, которое может быть в строке S (количество букв в S1 не превышает 10)
В строке S записаны слова исходного текста, в отдельной строке S1 - одно из слов, которое может...

18
Каратель
Эксперт С++
6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
21.05.2011, 01:31 2
проходишь по строке с поверкой isdigit(str[i]);
0
1 / 1 / 0
Регистрация: 18.04.2011
Сообщений: 20
21.05.2011, 01:53  [ТС] 3
а он разве не возвращает истину или лож в зависимсти от того цифра или нет? мне нужно колличество самих чисел, а не цифр

Добавлено через 3 минуты
ой...опечатка в названии темы))
0
Каратель
Эксперт С++
6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
21.05.2011, 02:13 4
как-то так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <cstring>
 
int main()
{
    const char * str = "ghjjh00fghj12abcdef239ghfghjkl8vgj6900fghjklghj789hjk";
    int counter(0);
    for(unsigned i = 0; i < strlen(str); i++)
    {
    if(isdigit(str[i]))
    {
        int j = ++i;
        while(isdigit(str[j++]));
                   i = j;
        counter++;
    }
    }
    std::cout << counter;
    return 0;
}
Добавлено через 1 минуту
c учетом что 00 - одно число
1
1 / 1 / 0
Регистрация: 18.04.2011
Сообщений: 20
21.05.2011, 23:41  [ТС] 5
спасибо большое) все работает)
0
Эксперт С++
516 / 421 / 92
Регистрация: 23.09.2010
Сообщений: 1,165
22.05.2011, 00:01 6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <boost/regex.hpp>
#include <string>
 
int main()
{
   std::string str("aada1231fgf345dfgd3453");
   boost::smatch res;
   std::string::const_iterator start = str.begin();
   std::string::const_iterator end= str.end();
   size_t cnt=0;
   while( boost::regex_search(start, end, res, boost::regex("\\d+")) )
   {
     cnt++;
     start= res[0].second;
   }
   std::cout<<"count: "<<cnt<<std::endl;
}
2
1 / 1 / 0
Регистрация: 18.04.2011
Сообщений: 20
22.05.2011, 00:12  [ТС] 7
еще 1 вопрос...все время забываю....как сделать ввод строки str с клавы?

C++
1
2
3
4
5
6
int main()
{
char str;
cout << "vvedite stroky" << endl;
getline (cin,str);
    int counter(0);
вот так выдает ошибку...и если str типа string тоже(((
0
Freelance
Эксперт С++
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
22.05.2011, 00:17 8
Еще вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <functional>
#include <sstream>
#include <algorithm>
#include <string>
#include <cctype>
 
int main(){
  std::string str("aada1231fgf345dfgd3453");
  std::replace_if(str.begin(), str.end(), std::not1(std::ptr_fun(isdigit)), ' ');
  std::istringstream ist(str);
  size_t cnt = 0;
  for(; ist >> str; ++cnt);
  std::cout << "count: " << cnt << std::endl;
  return 0;
}
2
Эксперт С++
516 / 421 / 92
Регистрация: 23.09.2010
Сообщений: 1,165
22.05.2011, 00:22 9
протест,
C++
1
2
3
4
5
int main()
{
char str[256];
cout << "vvedite stroky" << endl;
getline (cin,str);
1
Freelance
Эксперт С++
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
22.05.2011, 00:24 10
Разве не
C++
1
cin.getline(str, 256);
?
2
Эксперт С++
516 / 421 / 92
Регистрация: 23.09.2010
Сообщений: 1,165
22.05.2011, 00:26 11
asics, да
или
C++
1
2
3
string str;
cout << "vvedite stroky" << endl;
getline (cin,str);
1
1 / 1 / 0
Регистрация: 18.04.2011
Сообщений: 20
22.05.2011, 00:32  [ТС] 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
#include <iostream>
#include <cstring>
 using namespace std;
 
int main()
{
string str;
cout << "vvedite stroky" << endl;
getline (cin,str);
    int counter=0;
        for(unsigned i = 0; i < str.length(); i++)
    {
        if(isdigit(str[i]))
        {
            int j = ++i;
            while(isdigit(str[j++]));
                   i = j;
            counter++;
        }
    }
    cout << counter;
    return 0;
}
вроде так все работает как надо)
0
Эксперт С++
516 / 421 / 92
Регистрация: 23.09.2010
Сообщений: 1,165
22.05.2011, 00:34 13
протест, мы просто предлагаем разные варианты.
0
1 / 1 / 0
Регистрация: 18.04.2011
Сообщений: 20
22.05.2011, 00:36  [ТС] 14
да я понял, спасибо больше...щас вот и ваши подставляю, смотрю, учусь и запоминаю
0
Эксперт С++
516 / 421 / 92
Регистрация: 23.09.2010
Сообщений: 1,165
22.05.2011, 00:46 15
Еще вариант:
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 <string>
 
using namespace std;
 
int main()
{
   bool digit = false;
   size_t cnt = 0;
   string s="sdfsd2423sdf2423sdfs3534";
   for(auto c : s)
   {
      if(isdigit(c))
      {
         if(!digit)
            cnt++;
         digit=true;
      }
      else
         digit=false;
      
   }   
   cout<<cnt;
}
1
1 / 1 / 0
Регистрация: 18.04.2011
Сообщений: 20
22.05.2011, 00:59  [ТС] 16
хм....если я правильно понял то он считает истины и их сумирует, а каждая истина - число?
0
Эксперт С++
516 / 421 / 92
Регистрация: 23.09.2010
Сообщений: 1,165
22.05.2011, 01:01 17
протест, он не суммирует истины. didit принимает значение истина, если символ число, и ложь, если не число.
0
Каратель
Эксперт С++
6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
22.05.2011, 01:18 18
Цитата Сообщение от gooseim Посмотреть сообщение
Еще вариант:
gooseim, чем компилили? g++ ?
0
Эксперт С++
516 / 421 / 92
Регистрация: 23.09.2010
Сообщений: 1,165
22.05.2011, 07:41 19
Maxwe11, онлайн-компилятором http://liveworkspace.org

Добавлено через 1 минуту
А сам он на серваке я думаю как раз g++.
0
22.05.2011, 07:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.05.2011, 07:41
Помогаю со студенческими работами здесь

Вывести на экран количество букв в строке, совпадающих с первым символом в строке
5. Дана строка. Вывести на экран количество букв в строке, совпадающих с первым символом в строке.

Найти все цифры в строке. каждую цифру напечатать в отдельной строке
Помогите пожалуйста

В заданной строке удалить последний символ пробел, который найдется в строке
Здравствуйте, можете помочь с методом удаления последнего пробела в строке?

Найти число пробелов в строке и заменить их на номер по порядку в исходной строке
Задание: Во введенной пользователем строке найти число пробелов и заменить все пробелы на их номер...


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

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