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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.92
^Tecktonik_KiLLeR
1158 / 440 / 22
Регистрация: 23.06.2009
Сообщений: 6,227
Завершенные тесты: 1
#1

самый простой вопрос который мог задать нуб!не получается подсчет слов!!!!! - C++

10.12.2009, 21:58. Просмотров 1539. Ответов 14
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int wordCount(string a){
int i,c,n;
c=n=0;
i=1;
while((c=a[i])!='\0'){
    if(c==' ')++n;
i++;
}
return n;
}
int main()
{
string a;
cin>>a;
cout<<wordCount(a);
    system("pause");
        return 0;
}
функция принимает в данном код стринг,и просто считывает слова,считывая пробелы...но у меня всегда возвращается 0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.12.2009, 21:58     самый простой вопрос который мог задать нуб!не получается подсчет слов!!!!!
Посмотрите здесь:

C++ Самый тупой вопрос)))
Самый простой способ создать таблицу C++
LNK1120: 1 неразрешенных внешних элементов(дада он самый да я нуб) C++
C++ Самый простой вопрос на сегодня.
Самый простой односвязный список C++
C++ Самый большой простой делитель числа
Написать самый простой антивирусный сканер, который сможет найти вирус, записанный в автозагрузку C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Андрейка
419 / 223 / 27
Регистрация: 25.03.2009
Сообщений: 744
10.12.2009, 22:08     самый простой вопрос который мог задать нуб!не получается подсчет слов!!!!! #2
МедведЪ, а не легче введённые слова кидать в vector < string > методом size() получишь количество слов
Sayrus89
31 / 31 / 1
Регистрация: 26.10.2009
Сообщений: 98
10.12.2009, 22:08     самый простой вопрос который мог задать нуб!не получается подсчет слов!!!!! #3
cin считывает строку до первого пробела. Используй:
C++
1
getline(cin,a);
^Tecktonik_KiLLeR
1158 / 440 / 22
Регистрация: 23.06.2009
Сообщений: 6,227
Завершенные тесты: 1
10.12.2009, 22:11  [ТС]     самый простой вопрос который мог задать нуб!не получается подсчет слов!!!!! #4
Sayrus89, забыл спасибо
Андрейка
419 / 223 / 27
Регистрация: 25.03.2009
Сообщений: 744
10.12.2009, 22:11     самый простой вопрос который мог задать нуб!не получается подсчет слов!!!!! #5
МедведЪ, а в твоём коде немного ерунда) во первых cin'om ты получишь строку до первого пробела и в string нету нулевого символа на конце
^Tecktonik_KiLLeR
1158 / 440 / 22
Регистрация: 23.06.2009
Сообщений: 6,227
Завершенные тесты: 1
10.12.2009, 22:11  [ТС]     самый простой вопрос который мог задать нуб!не получается подсчет слов!!!!! #6
Андрейка,с вектором не знаком...пока
Андрейка
419 / 223 / 27
Регистрация: 25.03.2009
Сообщений: 744
10.12.2009, 22:12     самый простой вопрос который мог задать нуб!не получается подсчет слов!!!!! #7
МедведЪ, пока
^Tecktonik_KiLLeR
1158 / 440 / 22
Регистрация: 23.06.2009
Сообщений: 6,227
Завершенные тесты: 1
10.12.2009, 22:13  [ТС]     самый простой вопрос который мог задать нуб!не получается подсчет слов!!!!! #8

Не по теме:

Sayrus89, вы случайно в Unreal tournament не играете?



Добавлено через 10 секунд
Андрейка,
Sayrus89
31 / 31 / 1
Регистрация: 26.10.2009
Сообщений: 98
10.12.2009, 22:16     самый простой вопрос который мог задать нуб!не получается подсчет слов!!!!! #9
Пожалуйста

Кстати, так врядли получится подсчитать количество слов в строке.
Вот, например, листинг программы на паскале, подсчитывающей кол-о слов между первыми двумя запятыми :

Pascal
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
uses crt;
 
type TDelimiter = set of Char;
 
var
inText,             {исходный текст}
tmpString : string;     {временная строка}
first,              {позиция первой запятой}
second,             {позиция второй запятой}
TextLength,             {длина текста}
i, 
NumOfWords : integer;       {счетчик слов}
delimiters : TDelimiter;    {разделители}
 
 
begin
clrscr; {очищяем экран}
 
{в переменной delimiters должны храниться символы,
 которые нужно считать разделителями слов}
delimiters := ['.', ':', '!', '?', ';', '(', ')'];
 
NumOfWords := 0;
 
Writeln('***Введите текст:');
Readln(inText);         {считываем текст с клавиатуры}
Writeln('');
 
TextLength := Length(inText);
first := Pos(',', inText);  {находим позиция первой запятой}
if first=0 then         {если запятая не найдена}
   begin
   Writeln('В тексте нет ни одной запятой');
   Writeln('Нажмите клавишу для выхода');
   readkey;
   exit;
   end;
 
{копируем во временную строку часть исходного текста,
 начиная с позиции, стоящей после первой запятой}
tmpString := Copy(inText, first + 1, TextLength - first);
second := Pos(',', tmpString);  {ищем вторую во временной строке вторую запятую}
if second=0 then        {если вторая запятая не найдена}
   begin
   writeln('Вторая запятая не найдена');
   Writeln('Нажмите клавишу для выхода');
   readkey;
   exit;
   end;
 
TextLength := Length(tmpString);
Delete(tmpString, second, TextLength - second + 1);     {обрезаем строку, оставляя только часть,}
                            {находящуюся между запятыми}
 
TextLength := Length(tmpString);            {запоминаем длину текста}
if TextLength=0 then                    {если строка получилась пустая}
   begin
   Writeln('Между запятыми нет текста');
   Writeln('Нажмите клавишу для выхода');
   Readkey;
   exit;
   end;
 
{заменяем все разделители пробелами}
{Это делаем для того, чтобы перед и после слов стояли только пробелы
 и легче можно было бы определить слово, чтобы посчитать их количество }
for i:=1 to TextLength do
    begin
       if tmpString[i] in delimiters then tmpString[i]:=' ';
    end;
 
{подсчитываем количество слов}
{Если i-ый символ пробел, а (i+1)-ый не разделитель и не пробел,
 то увеличиваем счетчик слов на еденицу}
for i:=1 to TextLength do
    begin
       if (tmpString[i]=' ')
          AND NOT(tmpString[i+1]=' ') then inc(NumOfWords);
    end;
 
if NOT(tmpString[1]=' ') then inc(NumOfWords); {если первый символ в строке не пробел, увеличиваем счетчик}
Writeln('***Часть строки, в которой определяем количество слов:');
Writeln(tmpString);
Writeln('');
Writeln('***Количество слов иежду первой и второй запятыми: ',NumOfWords);
readkey;
end.
Добавлено через 1 минуту
В Unreal играл когда-то (и мне очень, кстати, нравилось ) но не через интернет
^Tecktonik_KiLLeR
1158 / 440 / 22
Регистрация: 23.06.2009
Сообщений: 6,227
Завершенные тесты: 1
10.12.2009, 22:45  [ТС]     самый простой вопрос который мог задать нуб!не получается подсчет слов!!!!! #10
Sayrus89, Oo

Добавлено через 1 минуту

Не по теме:

Sayrus89, aaa...я по инету играю там sayus один


по теме:
почему не получится?у меня n к инициализован 1....все правильно считает

Добавлено через 26 минут
ладно,еще такой вопрос:
C++
1
    if(c==' ' || c=='\.' || c=='\,')++n;
тут вроде все понятно...
в консоли когда я ввожу hello,world-возвращает 2,правильно
если я ввожу hello world-2-правильно
но если я ввожу hello, world-3 почему?точнее я знаю почему потому что программа увидела пробел и символ запятая,а в условии говорится если ,++ и если пробел ++...
как исправить эту логичексую ошибку?Я думаю нужен еще один цикл,и каждый раз написать break?
Gravity
557 / 551 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
11.12.2009, 02:18     самый простой вопрос который мог задать нуб!не получается подсчет слов!!!!! #11
МедведЪ, глянь сюда Подсчитать количество слов в тексте
^Tecktonik_KiLLeR
1158 / 440 / 22
Регистрация: 23.06.2009
Сообщений: 6,227
Завершенные тесты: 1
11.12.2009, 10:12  [ТС]     самый простой вопрос который мог задать нуб!не получается подсчет слов!!!!! #12
Gravity, с чаром можно?ЗЫ я не с копма
^Tecktonik_KiLLeR
1158 / 440 / 22
Регистрация: 23.06.2009
Сообщений: 6,227
Завершенные тесты: 1
11.12.2009, 16:06  [ТС]     самый простой вопрос который мог задать нуб!не получается подсчет слов!!!!! #13
Gravity,
C++
1
2
int state;
        state = OUT;
???????????

Добавлено через 21 минуту
народ так что?Какие варианты...я тут вспомнл что в книге говорилось
слово-это пучка символов,разделенные пробелом,запятым и т.д.
как мне решить это ошбику?
самый простой вопрос который мог задать нуб!не получается подсчет слов!!!!!

Добавлено через 1 минуту
Gravity, у тебя в коде define OUT и IN Нетуи нельзя ли просто мой код исправить??
Андрейка
419 / 223 / 27
Регистрация: 25.03.2009
Сообщений: 744
11.12.2009, 16:22     самый простой вопрос который мог задать нуб!не получается подсчет слов!!!!! #14
МедведЪ, заюзать boost::regex - регулярный выражения из библиотеки boost погугли дабы получить полную инфу)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.12.2009, 16:24     самый простой вопрос который мог задать нуб!не получается подсчет слов!!!!!
Еще ссылки по теме:

Нужно создать самый простой класс (С++) C++
C++ Самый простой, примитивный морской бой
C++ Bat файл, который бы мог компилировать С++ из VS
Создать калькулятор, который мог бы сразу считать подобные арифметические выражения типа: я 1-22+54+65 C++
C++ Создать объект, который мог бы принимать в себя любой тип данных

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

Или воспользуйтесь поиском по форуму:
^Tecktonik_KiLLeR
1158 / 440 / 22
Регистрация: 23.06.2009
Сообщений: 6,227
Завершенные тесты: 1
11.12.2009, 16:24  [ТС]     самый простой вопрос который мог задать нуб!не получается подсчет слов!!!!! #15
код можно андрей?
Yandex
Объявления
11.12.2009, 16:24     самый простой вопрос который мог задать нуб!не получается подсчет слов!!!!!
Ответ Создать тему
Опции темы

Текущее время: 07:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru