Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Центр помощи > [Turbo C++ 3.0] Подсчёт слов |
Автор: xStorm 25.4.2007, 08:20 | ||
Задача: Подсчитать количиство слов, состоящих только из цифр. (Учесть различные варианты ввода строки)
Вот так я решил решил эту проблему, но задача работает некорректно если слово оканчивается на цифру, поэтому я добавил условие if((i-1 >= 0) && !(fstr[i-1] == ' ') && !(fstr[i-1] == '\t') && !(fstr[i-1] >= '0' && fstr[i-1] <= '9')) j=0; Почему оно не работает?? (16 строка кода) В С я новичок, строго не судите ![]() |
Автор: darkart 25.4.2007, 11:43 | ||
|
Автор: xStorm 25.4.2007, 16:13 |
Спасибо. Это вы сидели писали? Но вопрос к сожалению не решен, я всеголишь хотел узнать почему моё условие на 16 строчке кода не выполняется. Моя идея решения: посимвольно проверять слово и если при его окончании (пробел, забой, конец строки) переменная j > 0 то слово состоит из цифр. Почти Все работает, кроме условия на 16 строчке, в нём я проверяю ситуацию, что если предшествующий символ не пробел и не забой и не цифра то j = 0. Понимаю писать программу гораздо приятнее чем копаться в коде непрофессионала, но меня интересует 1 строчка, да и задачка короткая, если возможно помогите разобраться. ЗЫ: Спосибо за написанную прогу, кое-что для себя отметил. Да, в ней маленький жучок сидит. Но его всего ничего править. |
Автор: apook 25.4.2007, 16:57 | ||||
Начал разбираться и сразу на что то нанкнулся Вдумайся
так можно, но странновато, тогда уж не &&, а || или только <9 но это мелочь. Далее:
Если у тебя flag равен нулю если символ fstr[ i ] не равен пробелу то условие если символ fstr[ i ] равен пробелу и flag равен нулю не выполнится никогда( наверно ![]() Короче напутал с и или, далее по ходу в том-же духе. |
Автор: apook 25.4.2007, 17:59 | ||
держи не парься
|
Автор: xStorm 25.4.2007, 21:11 | ||
Извени, но не работает, попробуй ввести хотябы qq11 11qq должно быть 0, а он 2 выдаёт. (fstr[i] >= '0' && fstr[i] <= '9') равняется isdigit(fstr[ i ]), просто модуль я не подключал. Непонимаю ваших возмущений
Всё выполняется тут ^^. Мне ведь не это надо ![]() Попробую ещё спросить: Почему не выполняется условие на 16 строчке? Идея у меня правильная, а может с лексикой языка что намудрил, да намудрил точно иначе бы работало, токо где именно найти не могу. Так что вопрос ещё открыт ![]() |
Автор: Xenon 25.4.2007, 22:04 | ||
|
Автор: xStorm 26.4.2007, 00:46 | ||
Я в теме указал какой у меня комптлятор. тип bool с помощью #define легко воспроизвести, а вот эта строчка вообще никак
а именно ценртальная часть. разъясните как мне переделать. Да и вообще я всеголишь прошу 1 строчку кода у меня проверить! Зачем вы мне проги пишите? Извените конечно за настойчивость. |
Автор: Xenon 26.4.2007, 00:55 | ||||||
xStorm, а я твой код и поправил. Чем твоя строчка
координально отличается от
? А насчет компилятора виноват - не заметил. std:: сотри.
|
Автор: apook 26.4.2007, 04:46 | ||
|
Автор: xStorm 26.4.2007, 17:51 |
Ни 1, ни 2 не работают правильно. Поэксперементируйте с вариантами ввода. Darkart единственный кто написал работающий код. Просто думал поможете исправить мой код. Ну да ладно, задача решина, вопрос будем считать решенным. |
Автор: Xenon 26.4.2007, 19:52 |
xStorm, в чем некорректность моего кода? |
Автор: xStorm 27.4.2007, 18:36 |
В условии задачи сказано (условие в 1 посте), что нужно учесть различные варианты ввода, а программа не работает с табуляцией и некорректно отображает кол-во слов если вводить их через несколько пробелов, и при вводе пустой строки выводит 1. |
Автор: Xenon 28.4.2007, 02:21 | ||||
xStorm, эх ... Как же ты тестировал? Я только проблему с табуляцией нашел:
Вывод:
|