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

Количество слов в строке - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ найти элемент матрицы с наименьшей разностью компонент http://www.cyberforum.ru/cpp-beginners/thread552944.html
найти элемент матрицы с наименьшей разностью компонент
C++ Не работает конструктор копирования почему-то... #include "stdlib.h" #include "stdio.h" #include <iostream> #include <cstddef> using namespace std; class Top { public: Top (){}; http://www.cyberforum.ru/cpp-beginners/thread552930.html
Нужно разобрать задачу C++
#include "stdafx.h" #include "chess.h" using namespace std; horse targetHorse;// переменная, хранящая координаты цели - той точки, куда необходимо добраться vector <horse> turns;//контейнер, содержащий всю последовательность ходов int _tmain() { horse chessHorse;//переменная, которая будет содержать текущие координаты коня // ввод данных с проверкой нахождение коня и его цели на доске,...
C++ Элементы матрицы, стоящие на пересечении нечетных строк и нечетных столбцов, заменить переменной
помогите решить!!!!!! элементы матрицы Q,стоящие на пересечении нечетных строк и нечетных столбцов заменить переменной P. Пожалуйста, помогите!!!
C++ Записать в дополнительный столбец значение удвоенного минимального каждой строки матрицы http://www.cyberforum.ru/cpp-beginners/thread552911.html
записать в дополнительный столбец значение удвоенного минимального каждой строки матрицы О(6,6)
C++ Удалить из каждой строки матрицы все элементы, величина которых находится в отрезке (a,b) удалить из каждой строки двумерного массива все элементы ,величина которых находится в отрезке (a,b), а освободишихся в концах строк элементы заполнить нулями. подробнее

Показать сообщение отдельно
Schizorb
 Аватар для Schizorb
508 / 460 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
20.04.2012, 07:21     Количество слов в строке
Суть задачи такая - нужно подсчитать, сколько целых чисел содержится в произвольной строке. Числа разделены пробелами (причём любым количеством), т.е. числа в словах типа: number33, 45st, dd44ff не считаются.

Алгоритм я написал, но вероятно намудрил (особенно в строке 14 не нравится много проверок). Просто прошу покритиковать, и если кто может предложить свой вариант.

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 <cstring>
#include <cctype>
 
int main()
{
    char stroka[256] = " 33  adasf 87  7656asf7a f8saf76f 6754 81 2 "; // тут 5 чисел
    int len = strlen(stroka);
    int count = 0;
        
    for(int i = 0; i < len; ++i)
    {
        // если встречаем цифру (причём предыдущий - пробел, или мы в начале строки)
        if(isdigit(stroka[i]) && (i == 0 || stroka[i - 1] == ' '))
        {   
            // двигаемся по цифрам
            while(i < len && isdigit(stroka[++i]));
            
            // если достигли пробела или конца
            // значит это было число
            if(i >= len || stroka[i] == ' ')
                ++count;
        }
    }
    
    std::cout << "Numbers: " << count << "\n";
        
    return 0;
}
Ещё условие было такое - не использовать указатели и библиотечные функции для работы со строками (у меня правда есть strlen и isdigit, но не суть). Благодарю за комментарии.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 18:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru