![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 01.11.2012
Сообщений: 48
|
![]()
программа должна выводить общее количество слов (m) и количество слов (z), имеющих длину не менее М. иногда z выводит правильно, а иногда нет (на единицу больше). никак не могу понять в чем проблема
Код:
|
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 25.10.2011
Сообщений: 3,178
|
![]()
Используйте отладчик, это помогает прояснять такие вопросы.
Перед точкой пробела не будет. m у Вас считается с 1 (и по окончании первого слова станет равно 2), поэтому для него ошибки нет. Также, если k стало равно M и следующий символ, положим, запятая - z увеличится ещё раз. |
![]() |
![]() |
![]() |
#3 | ||
Пользователь
Регистрация: 01.11.2012
Сообщений: 48
|
![]() Цитата:
Цитата:
|
||
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 25.10.2011
Сообщений: 3,178
|
![]()
1) Отладчик, скорее всего, входит в состав используемой Вами интегрированной среды разработки (MS Visual Studio, Borland C++ Bilder, Qt Creator или иной).
2) "Почему" - потому что Вы так написали программу. "Как избавиться" - натурально, переписать программу так, чтобы она работала корректно. Например: Код:
|
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 01.11.2012
Сообщений: 48
|
![]()
спасибо большое
![]() я немного по-другому исправила и добавила еще вычисление процента слов, которые имеют длину не менее M Код:
не знаю какой параметр задать и что должно быть в теле функции Последний раз редактировалось Sv.; 01.11.2012 в 17:13. |
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 25.10.2011
Сообщений: 3,178
|
![]()
Функция - это часть кода, которая принимает чётко очерченный набор данных и возвращает чётко очерченный набор результатов. Как общее правило, желательно, чтобы функция была регулярной - т.е. чтобы повторный её вызов с теми же аргументами приводил к тому же результату. Но основной Ваш код посимвольно читает строку, что нельзя просто так повторить (и это, в общем-то, правильно - строка может быть очень длинной). Есть в нём, однако, логически изолированные фрагменты. Например:
Код:
На правах замечания к условию: либо приглашение к вводу неверно, либо строка "I. Love. Apples." вполне корректна (это текст, заканчивающийся символом '.') и содержит три слова, тогда как Ваша программа насчитает только одно. |
![]() |
![]() |
![]() |
#7 | |
Пользователь
Регистрация: 01.11.2012
Сообщений: 48
|
![]() Цитата:
то есть нельзя сделать, чтобы m и z считались в разных функциях? |
|
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 25.10.2011
Сообщений: 3,178
|
![]()
В принципе можно. Но для этого надо сначала считать строку в память и указатель на неё передавать в функции вычисления m и z. А для этого (поскольку память не резиновая) нужно заранее знать максимальную длину строки.
Строка при этом читается так: Код:
Код:
Код:
Ну, а после этого можно взять код цикла, скопировать его в две функции, из одной убрать все упоминания об m, из другой - о z и M, и передать обоим в качестве аргумента string (той, которая считает z, понадобится ещё и M). |
![]() |
![]() |
![]() |
#9 |
Пользователь
Регистрация: 01.11.2012
Сообщений: 48
|
![]()
Abstraction спасибо, вы мне очень помогли
![]() |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
не могу понять в чем ошибка | 6002theJuicy | Visual C++ | 4 | 23.05.2012 15:19 |
в чем ошибка? не могу понять... | lexflax | C++ Builder | 1 | 28.01.2012 15:35 |
Си. Не могу понять в чем ошибка | Gerbera | Помощь студентам | 2 | 12.07.2011 19:11 |
Не могу понять в чем ошибка.... | Blonde | Помощь студентам | 0 | 21.05.2011 14:19 |
Не могу понять, в чем ошибка | FlashProStar | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 2 | 01.12.2010 12:20 |