Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.08.2013, 20:31   #11
Chainik!
Форумчанин
 
Регистрация: 10.11.2008
Сообщений: 120
По умолчанию

Ясно переделаю
помог - жми на весы

Последний раз редактировалось Chainik!; 26.08.2013 в 20:41.
Chainik! вне форума Ответить с цитированием
Старый 26.08.2013, 20:33   #12
Chainik!
Форумчанин
 
Регистрация: 10.11.2008
Сообщений: 120
По умолчанию

???????????
помог - жми на весы
Chainik! вне форума Ответить с цитированием
Старый 26.08.2013, 20:46   #13
Igor95
Форумчанин
 
Регистрация: 03.01.2013
Сообщений: 388
По умолчанию

А если предпоследний символ (s[i]) (перед '\0') - не пробел? Ведь тогда условие не сработает и пропустим слово.ъ, т.к s[i + 1] - не пробел.
Igor95 вне форума Ответить с цитированием
Старый 26.08.2013, 21:14   #14
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Баян баян, (с возвращением) на удаление 1 символа из строки понадобится слишком много ресурсов. На пересобирание строки без лишних символов понадобятся ресурсы и дополнительная память. Зачем их тратить, если задача имеет более простое алгоритмическое решение?
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 26.08.2013, 21:18   #15
Igor95
Форумчанин
 
Регистрация: 03.01.2013
Сообщений: 388
По умолчанию

Да, зачем удалять или разбивать строку на токены (мое ошибочное предложение), если можно решить задачу эффективнее? Т.е получение токенов еще более ресурсоемкий процесс.
Думаю, все дальнейшие обсуждения будут только "ходьбой вокруг да около" :-)
Igor95 вне форума Ответить с цитированием
Старый 26.08.2013, 21:27   #16
asmprog
Пользователь
 
Регистрация: 10.08.2013
Сообщений: 67
По умолчанию

Раз уж речь про токены завели... В порядке бреда - Bison+Flex(препода можно отправить с инфарктом в госпиталь таким решением). Где-то туториал видел на инглише, там как раз рассматривался пример подсчета слов. Есть даже книжка Flex&Bison - тоже eng от O'Reily. А та самая красная "Книга дракона"(к/ф. Хакеры) даже переведена на великий и могучий.
asmprog вне форума Ответить с цитированием
Старый 26.08.2013, 21:30   #17
Chainik!
Форумчанин
 
Регистрация: 10.11.2008
Сообщений: 120
По умолчанию

Вот переделал:
#include "stdafx.h"
#include "iostream"
#include "conio.h"
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
const int n = 100;
char s[n] = " Hello word apple orange";
cout << s;
int count = 0;
int k = strlen(s), i = 0;
while(i < k)
{
if((s[i] != ' ' && s[i + 1] == ' ') ||(s[i] != ' ' && s[i + 1] == '\0'))
count++;
i++;
}
cout << "\n\nKolichestvo slov: " << count;
_getch();
return 0;
}
помог - жми на весы

Последний раз редактировалось Chainik!; 26.08.2013 в 21:32.
Chainik! вне форума Ответить с цитированием
Старый 26.08.2013, 22:33   #18
Igor95
Форумчанин
 
Регистрация: 03.01.2013
Сообщений: 388
По умолчанию

Можно было до вот такого сократить: if (s[i] != ' ' && (s[i + 1] == ' ' || s[i +1] == '\0'))
Igor95 вне форума Ответить с цитированием
Старый 26.08.2013, 22:49   #19
Chainik!
Форумчанин
 
Регистрация: 10.11.2008
Сообщений: 120
По умолчанию

Знаки пунктуации:

#include "stdafx.h"
#include "iostream"
#include "conio.h"
using namespace std;
const int n = 1000;
int word(char *s)
{
int i, k, count;
i = k = count = 0;
k = strlen(s);
while(i < k)
{
if((s[i] != ' ' && s[i + 1] == ' ') || (s[i] != ' ' && s[i + 1] == '\0'))
count++;
i++;
}
return count;
}
int _tmain(int argc, _TCHAR* argv[])
{

char s[n] = " .. , ! ? Hello,, ,,,,,,, ,, word..! apple orange!", res[n] = ".,!?", str[n];
int k = 0;
for(int i = 0; i < strlen(s); i++)
{
bool b = false;
for(int j = 0; j < strlen(res); j++)
{
if(s[i] == res[j])
b = true;
}
if(!b)
str[k++] = s[i];

}
str[k] = NULL;
cout << s << "\n\nKolichestvo slov v stroke: " << word(str);
_getch();
return 0;
}
помог - жми на весы
Chainik! вне форума Ответить с цитированием
Старый 26.08.2013, 23:03   #20
Igor95
Форумчанин
 
Регистрация: 03.01.2013
Сообщений: 388
По умолчанию

Я пример выше приводил: в метод передавалась строка содержащая разделители... Общий вариант для всего
Igor95 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
подсчитать количество слов в предложении Sv. Microsoft Office Excel 2 04.01.2013 00:16
Ввести с клавиатуры строку. Посчитать количество слов в строке. Определить, что является разделителем слов. Вывести рез-ть на экра Газимов Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 02.03.2012 15:58
В предложении подсчитать количество слов. Delphi King21 Помощь студентам 4 16.03.2011 14:26
Подсчитать количество слов и количество букв MDSIQ Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 13.11.2010 16:57
подсчитать количество символов слов и предложений nev Помощь студентам 4 09.06.2007 21:22